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

lazy_centers_table.cpp « search - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 59995a945b5bf7b73682631d1b9ee278a239e509 (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
38
39
40
41
42
43
44
45
46
47
48
49
#include "search/lazy_centers_table.hpp"

#include "indexer/mwm_set.hpp"

#include "defines.hpp"

namespace search
{
LazyCentersTable::LazyCentersTable(MwmValue & value)
  : m_value(value)
  , m_state(STATE_NOT_LOADED)
  , m_reader(unique_ptr<ModelReader>())
{
}

void LazyCentersTable::EnsureTableLoaded()
{
  if (m_state != STATE_NOT_LOADED)
    return;

  if (!m_value.m_cont.IsExist(CENTERS_FILE_TAG))
  {
    m_state = STATE_FAILED;
    return;
  }

  m_reader = m_value.m_cont.GetReader(CENTERS_FILE_TAG);
  if (!m_reader.GetPtr())
  {
    m_state = STATE_FAILED;
    return;
  }

  m_table =
      CentersTable::Load(*m_reader.GetPtr(), m_value.GetHeader().GetDefGeometryCodingParams());
  if (m_table)
    m_state = STATE_LOADED;
  else
    m_state = STATE_FAILED;
}

bool LazyCentersTable::Get(uint32_t id, m2::PointD & center)
{
  EnsureTableLoaded();
  if (m_state != STATE_LOADED)
    return false;
  return m_table->Get(id, center);
}
}  // namespace search