forked from organicmaps/organicmaps
[search] Fix order for PreResult1 before reading features.
This commit is contained in:
parent
6eaac3c0b3
commit
16e8303a4e
2 changed files with 7 additions and 14 deletions
|
@ -45,7 +45,7 @@ public:
|
|||
static bool LessDistance(PreResult1 const & r1, PreResult1 const & r2);
|
||||
static bool LessViewportDistance(PreResult1 const & r1, PreResult1 const & r2);
|
||||
|
||||
inline pair<uint32_t, size_t> GetID() const { return make_pair(m_featureID, m_mwmID); }
|
||||
inline pair<size_t, uint32_t> GetID() const { return make_pair(m_mwmID, m_featureID); }
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -356,29 +356,22 @@ namespace impl
|
|||
|
||||
Query & m_query;
|
||||
|
||||
LockedFeaturesVector * m_pFV;
|
||||
scoped_ptr<LockedFeaturesVector> m_pFV;
|
||||
|
||||
public:
|
||||
PreResult2Maker(Query & q) : m_query(q), m_pFV(0)
|
||||
PreResult2Maker(Query & q) : m_query(q)
|
||||
{
|
||||
}
|
||||
~PreResult2Maker()
|
||||
{
|
||||
delete m_pFV;
|
||||
}
|
||||
|
||||
// For the best performance, impl::PreResult1 should be sorted by impl::PreResult1::GetID().
|
||||
impl::PreResult2 * operator() (impl::PreResult1 const & r)
|
||||
{
|
||||
pair<uint32_t, size_t> const id = r.GetID();
|
||||
if (m_pFV == 0 || m_pFV->GetID() != id.second)
|
||||
{
|
||||
delete m_pFV;
|
||||
m_pFV = new LockedFeaturesVector(*m_query.m_pIndex, id.second);
|
||||
}
|
||||
pair<size_t, uint32_t> const id = r.GetID();
|
||||
if (m_pFV.get() == 0 || m_pFV->GetID() != id.first)
|
||||
m_pFV.reset(new LockedFeaturesVector(*m_query.m_pIndex, id.first));
|
||||
|
||||
FeatureType feature;
|
||||
m_pFV->m_vector.Get(id.first, feature);
|
||||
m_pFV->m_vector.Get(id.second, feature);
|
||||
|
||||
uint32_t penalty;
|
||||
string name;
|
||||
|
|
Loading…
Add table
Reference in a new issue