blob: d34daa3cc9f68fb030b1472c11a84d80dd5e6b36 (
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
50
51
52
53
54
|
#pragma once
#include "coding/reader.hpp"
#include "coding/serdes_binary_header.hpp"
#include "coding/write_to_sink.hpp"
#include <cstdint>
namespace kml
{
namespace binary
{
struct Header
{
template <typename Visitor>
void Visit(Visitor & visitor)
{
visitor(m_categoryOffset, "categoryOffset");
visitor(m_bookmarksOffset, "bookmarksOffset");
visitor(m_tracksOffset, "tracksOffset");
visitor(m_stringsOffset, "stringsOffset");
visitor(m_eosOffset, "eosOffset");
}
template <typename Sink>
void Serialize(Sink & sink)
{
coding::binary::HeaderSerVisitor<Sink> visitor(sink);
visitor(*this);
}
template <typename Source>
void Deserialize(Source & source)
{
coding::binary::HeaderDesVisitor<Source> visitor(source);
visitor(*this);
}
// Calculates the size of serialized header in bytes.
uint64_t Size()
{
coding::binary::HeaderSizeOfVisitor visitor;
visitor(*this);
return visitor.m_size;
}
uint64_t m_categoryOffset = 0;
uint64_t m_bookmarksOffset = 0;
uint64_t m_tracksOffset = 0;
uint64_t m_stringsOffset = 0;
uint64_t m_eosOffset = 0;
};
} // namespace binary
} // namespace kml
|