| 527 | |
| 528 | template<class F> |
| 529 | OcdFile<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 |
nothing calls this directly
no test coverage detected