Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConstantin Shalnev <c.shalnev@corp.mail.ru>2015-09-10 17:02:54 +0300
committerConstantin Shalnev <c.shalnev@corp.mail.ru>2015-09-23 13:44:17 +0300
commit2ed83972365ab46dedcd456d088e4b8310fd0e1f (patch)
tree7f65501ac68666fccdc56a4ee9274c57a61c0402 /indexer/classificator.cpp
parent1acbb7bcdf9a7b424e318941658c31914a22b98a (diff)
Added processing of apply_if in the kernel
Diffstat (limited to 'indexer/classificator.cpp')
-rw-r--r--indexer/classificator.cpp26
1 files changed, 14 insertions, 12 deletions
diff --git a/indexer/classificator.cpp b/indexer/classificator.cpp
index aa2ae74c2b..a1dbc11fb4 100644
--- a/indexer/classificator.cpp
+++ b/indexer/classificator.cpp
@@ -8,6 +8,15 @@
#include "std/algorithm.hpp"
#include "std/iterator.hpp"
+namespace
+{
+ struct less_scales
+ {
+ bool operator() (drule::Key const & l, int r) const { return l.m_scale < r; }
+ bool operator() (int l, drule::Key const & r) const { return l < r.m_scale; }
+ bool operator() (drule::Key const & l, drule::Key const & r) const { return l.m_scale < r.m_scale; }
+ };
+} // namespace
/////////////////////////////////////////////////////////////////////////////////////////
// ClassifObject implementation
@@ -39,9 +48,12 @@ ClassifObject * ClassifObject::Find(string const & s)
void ClassifObject::AddDrawRule(drule::Key const & k)
{
for (size_t i = 0; i < m_drawRule.size(); ++i)
- if (k == m_drawRule[i]) return;
+ if (k == m_drawRule[i])
+ return;
- m_drawRule.push_back(k);
+ auto i = lower_bound(m_drawRule.begin(), m_drawRule.end(), k.m_scale, less_scales());
+ while (i != m_drawRule.end() && i->m_scale == k.m_scale) ++i;
+ m_drawRule.insert(i, k);
}
ClassifObjectPtr ClassifObject::BinaryFind(string const & s) const
@@ -61,16 +73,6 @@ void ClassifObject::LoadPolicy::Start(size_t i)
base_type::Start(i);
}
-namespace
-{
- struct less_scales
- {
- bool operator() (drule::Key const & l, int r) const { return l.m_scale < r; }
- bool operator() (int l, drule::Key const & r) const { return l < r.m_scale; }
- bool operator() (drule::Key const & l, drule::Key const & r) const { return l.m_scale < r.m_scale; }
- };
-}
-
void ClassifObject::LoadPolicy::EndChilds()
{
ClassifObject * p = Current();