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

serdes_binary.cpp « kml - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ca67db12020f8a34089cd4f492b05498a3f89875 (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
#include "kml/serdes_binary.hpp"

namespace kml
{
namespace binary
{
SerializerKml::SerializerKml(FileData & data)
  : m_data(data)
{
  ClearCollectionIndex();

  // Collect all strings and substitute each for index.
  auto const avgSz = data.m_bookmarksData.size() * 2 + data.m_tracksData.size() * 2 + 10;
  LocalizableStringCollector collector(avgSz);
  CollectorVisitor<decltype(collector)> visitor(collector);
  m_data.Visit(visitor);
  m_strings = collector.StealCollection();
}

SerializerKml::~SerializerKml()
{
  ClearCollectionIndex();
}

void SerializerKml::ClearCollectionIndex()
{
  LocalizableStringCollector collector(0);
  CollectorVisitor<decltype(collector)> clearVisitor(collector, true /* clear index */);
  m_data.Visit(clearVisitor);
}

DeserializerKml::DeserializerKml(FileData & data)
  : m_data(data)
{
  m_data = {};
}
}  // namespace binary
}  // namespace kml