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

memory_feature_index.cpp « drape_frontend - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 1712c87caf7f6a610b0c14d73c255ffbce7c0aaa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "memory_feature_index.hpp"

namespace df
{

void MemoryFeatureIndex::ReadFeaturesRequest(vector<FeatureInfo> & features, vector<size_t> & indexes)
{
  threads::MutexGuard lock(m_mutex);

  for (size_t i = 0; i < features.size(); ++i)
  {
    FeatureInfo & info = features[i];
    ASSERT(m_features.find(info.m_id) != m_features.end() || !info.m_isOwner,());
    if (!info.m_isOwner && m_features.insert(info.m_id).second)
    {
      indexes.push_back(i);
      info.m_isOwner = true;
    }
  }
}

void MemoryFeatureIndex::RemoveFeatures(vector<FeatureInfo> & features)
{
  threads::MutexGuard lock(m_mutex);

  for (size_t i = 0; i < features.size(); ++i)
  {
    FeatureInfo & info = features[i];
    if (info.m_isOwner)
    {
      VERIFY(m_features.erase(info.m_id) == 1, ());
      info.m_isOwner = false;
    }
  }
}

} // namespace df