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

Class ReverseMapVisitor

libs/coding/succinct_mapper.hpp:102–147  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

100};
101
102class ReverseMapVisitor
103{
104public:
105 explicit ReverseMapVisitor(uint8_t * base) : m_base(base), m_cur(m_base) {}
106
107 template <typename T>
108 std::enable_if_t<!std::is_trivial_v<T>, ReverseMapVisitor &> operator()(T & val, char const * /* name */)
109 {
110 val.map(*this);
111 return *this;
112 }
113
114 template <typename T>
115 std::enable_if_t<std::is_trivial_v<T>, ReverseMapVisitor &> operator()(T & val, char const * /* name */)
116 {
117 T * valPtr = reinterpret_cast<T *>(m_cur);
118 *valPtr = ReverseByteOrder(*valPtr);
119 val = *valPtr;
120
121 m_cur = Align8Ptr(m_cur + sizeof(T));
122 return *this;
123 }
124
125 template <typename T>
126 ReverseMapVisitor & operator()(succinct::mapper::mappable_vector<T> & vec, char const * /* name */)
127 {
128 vec.clear();
129 (*this)(vec.m_size, "size");
130
131 T * data = reinterpret_cast<T *>(m_cur);
132 for (uint64_t i = 0; i < vec.m_size; ++i)
133 data[i] = ReverseByteOrder(data[i]);
134 vec.m_data = data;
135
136 m_cur = Align8Ptr(m_cur + vec.m_size * sizeof(T));
137 return *this;
138 }
139
140 uint64_t BytesRead() const { return static_cast<uint64_t>(m_cur - m_base); }
141
142private:
143 uint8_t * const m_base;
144 uint8_t * m_cur;
145
146 DISALLOW_COPY_AND_MOVE(ReverseMapVisitor);
147};
148
149template <typename TWriter>
150class FreezeVisitor

Callers

nothing calls this directly

Calls 3

ReverseByteOrderFunction · 0.85
Align8PtrFunction · 0.85
clearMethod · 0.45

Tested by

no test coverage detected