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

Method Load

libs/indexer/metadata_serdes.cpp:60–101  ·  view source on GitHub ↗

static

Source from the content-addressed store, hash-verified

58
59// static
60unique_ptr<MetadataDeserializer> MetadataDeserializer::Load(Reader & reader)
61{
62 auto deserializer = make_unique<MetadataDeserializer>();
63 deserializer->m_version = Version::V0;
64
65 Header header;
66 header.Read(reader);
67
68 deserializer->m_stringsSubreader = reader.CreateSubReader(header.m_stringsOffset, header.m_stringsSize);
69 if (!deserializer->m_stringsSubreader)
70 return {};
71 deserializer->m_strings.InitializeIfNeeded(*deserializer->m_stringsSubreader);
72
73 deserializer->m_mapSubreader = reader.CreateSubReader(header.m_metadataMapOffset, header.m_metadataMapSize);
74 if (!deserializer->m_mapSubreader)
75 return {};
76
77 // Decodes block encoded by writeBlockCallback from MetadataBuilder::Freeze.
78 auto const readBlockCallback = [&](NonOwningReaderSource & source, uint32_t blockSize, vector<MetaIds> & values)
79 {
80 values.resize(blockSize);
81 for (size_t i = 0; i < blockSize && source.Size() > 0; ++i)
82 {
83 auto const size = ReadVarUint<uint32_t>(source);
84 values[i].resize(size);
85 CHECK_GREATER(size, 0, ());
86
87 for (auto & value : values[i])
88 value.first = ReadPrimitiveFromSource<uint8_t>(source);
89
90 values[i][0].second = ReadVarUint<uint32_t>(source);
91 for (size_t j = 1; j < values[i].size(); ++j)
92 values[i][j].second = values[i][j - 1].second + ReadVarInt<int32_t>(source);
93 }
94 };
95
96 deserializer->m_map = Map::Load(*deserializer->m_mapSubreader, readBlockCallback);
97 if (!deserializer->m_map)
98 return {};
99
100 return deserializer;
101}
102
103// static
104std::unique_ptr<MetadataDeserializer> MetadataDeserializer::Load(FilesContainerR const & cont)

Callers

nothing calls this directly

Calls 9

LoadFunction · 0.70
ReadMethod · 0.45
CreateSubReaderMethod · 0.45
InitializeIfNeededMethod · 0.45
resizeMethod · 0.45
SizeMethod · 0.45
sizeMethod · 0.45
GetPtrMethod · 0.45
GetReaderMethod · 0.45

Tested by

no test coverage detected