MCPcopy Create free account
hub / github.com/comaps/comaps / MapVisitor

Class MapVisitor

libs/coding/succinct_mapper.hpp:60–100  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58}
59
60class MapVisitor
61{
62public:
63 explicit MapVisitor(uint8_t const * base) : m_base(base), m_cur(m_base) {}
64
65 template <typename T>
66 std::enable_if_t<!std::is_trivial_v<T>, MapVisitor &> operator()(T & val, char const * /* name */)
67 {
68 val.map(*this);
69 return *this;
70 }
71
72 template <typename T>
73 std::enable_if_t<std::is_trivial_v<T>, MapVisitor &> operator()(T & val, char const * /* name */)
74 {
75 T const * valPtr = reinterpret_cast<T const *>(m_cur);
76 val = *valPtr;
77
78 m_cur = Align8Ptr(m_cur + sizeof(T));
79 return *this;
80 }
81
82 template <typename T>
83 MapVisitor & operator()(succinct::mapper::mappable_vector<T> & vec, char const * /* name */)
84 {
85 vec.clear();
86 (*this)(vec.m_size, "size");
87 vec.m_data = reinterpret_cast<T const *>(m_cur);
88
89 m_cur = Align8Ptr(m_cur + vec.m_size * sizeof(T));
90 return *this;
91 }
92
93 uint64_t BytesRead() const { return static_cast<uint64_t>(m_cur - m_base); }
94
95private:
96 uint8_t const * const m_base;
97 uint8_t const * m_cur;
98
99 DISALLOW_COPY_AND_MOVE(MapVisitor);
100};
101
102class ReverseMapVisitor
103{

Callers

nothing calls this directly

Calls 2

Align8PtrFunction · 0.85
clearMethod · 0.45

Tested by

no test coverage detected