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

Method Read

libs/coding/text_storage.hpp:183–206  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

181
182 template <typename Reader>
183 void Read(Reader & reader)
184 {
185 auto const indexOffset = ReadPrimitiveFromPos<uint64_t>(reader, 0);
186
187 NonOwningReaderSource source(reader);
188 source.Skip(indexOffset);
189
190 auto const numBlocks = ReadVarUint<uint64_t>(source);
191 m_blocks.assign(static_cast<size_t>(numBlocks), {});
192
193 uint64_t prevOffset = 8; // 8 bytes for the offset of the data section
194 for (uint64_t i = 0; i < numBlocks; ++i)
195 {
196 auto const delta = ReadVarUint<uint64_t>(source);
197 CHECK_GREATER_OR_EQUAL(prevOffset + delta, prevOffset, ());
198 prevOffset += delta;
199
200 auto & block = m_blocks[static_cast<size_t>(i)];
201 block.m_offset = prevOffset;
202 block.m_from = i == 0 ? 0 : m_blocks[static_cast<size_t>(i - 1)].To();
203 block.m_subs = ReadVarUint<uint64_t>(source);
204 CHECK_GREATER_OR_EQUAL(block.m_from + block.m_subs, block.m_from, ());
205 }
206 }
207
208private:
209 std::vector<BlockInfo> m_blocks;

Callers 1

InitializeIfNeededMethod · 0.45

Calls 3

SkipMethod · 0.45
assignMethod · 0.45
ToMethod · 0.45

Tested by

no test coverage detected