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
|