MCPcopy Create free account
hub / github.com/OpenOrienteering/mapper / OcdFile

Method OcdFile

src/fileformats/ocd_types.cpp:529–571  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

527
528template<class F>
529OcdFile<F>::OcdFile()
530: string_index(*this)
531, symbol_index(*this)
532, object_index(*this)
533{
534 byte_array.reserve(1000000);
535
536 {
537 FileHeader header = {};
538 header.version = F::version;
539 if (F::version == 11)
540 header.subversion = 3;
541 byte_array.append(reinterpret_cast<const char*>(&header), sizeof header);
542 }
543
544 Q_ASSERT(header());
545
546 addSetupHeader(*this);
547
548 {
549 header()->first_string_block = static_cast<decltype(header()->first_string_block)>(byte_array.size());
550 using StringIndexBlock = Ocd::IndexBlock<Ocd::ParameterStringIndexEntry>;
551 auto first_string_block = StringIndexBlock{};
552 Ocd::addPadding(byte_array).append(reinterpret_cast<const char*>(&first_string_block), sizeof(StringIndexBlock));
553 // Free stack from first_string_block
554 }
555
556 {
557 header()->first_symbol_block = static_cast<decltype(header()->first_symbol_block)>(byte_array.size());
558 using SymbolIndexBlock = Ocd::IndexBlock<typename F::BaseSymbol::IndexEntryType>;
559 auto first_symbol_block = SymbolIndexBlock{};
560 Ocd::addPadding(byte_array).append(reinterpret_cast<const char*>(&first_symbol_block), sizeof(SymbolIndexBlock));
561 // Free stack from first_symbol_block
562 }
563
564 {
565 header()->first_object_block = static_cast<decltype(header()->first_object_block)>(byte_array.size());
566 using ObjectIndexBlock = Ocd::IndexBlock<typename F::Object::IndexEntryType>;
567 auto first_object_block = ObjectIndexBlock{};
568 Ocd::addPadding(byte_array).append(reinterpret_cast<const char*>(&first_object_block), sizeof(ObjectIndexBlock));
569 // Free stack from first_object_block
570 }
571}
572
573
574

Callers

nothing calls this directly

Calls 2

addSetupHeaderFunction · 0.85
sizeMethod · 0.45

Tested by

no test coverage detected