MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / RedrawDataList

Method RedrawDataList

lib/mdflib/mdfviewer/src/childframe.cpp:402–470  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

400
401
402void ChildFrame::RedrawDataList(const mdf::detail::DataListBlock& dg, const wxTreeItemId& root) {
403 for (const auto& data : dg.DataBlockList()) {
404 if (!data) {
405 continue;
406 }
407 std::ostringstream block_string;
408 block_string << data->BlockType();
409
410 const auto* data_block = dynamic_cast<const DataBlock*>(data.get());
411 const auto* data_block_list = dynamic_cast<const DataListBlock*>(data.get());
412 uint64_t nof_data_bytes = data_block != nullptr ? data_block->DataSize() : 0;
413 if (data_block_list != nullptr) {
414 nof_data_bytes = data_block_list->DataSize();
415 }
416
417 if (data->BlockType() == "DT") {
418 block_string << " (Size {bytes]: " << nof_data_bytes << ")";
419 left_->AppendItem(root, wxString::FromUTF8(block_string.str()),
420 TREE_DT, TREE_DT,
421 new BlockAddress(data->FilePosition()));
422 } else if (data->BlockType() == "DV" || data->BlockType() == "DI") {
423 block_string << " (Size {bytes]: " << nof_data_bytes << ")";
424 left_->AppendItem(root,wxString::FromUTF8(block_string.str()),
425 TREE_DT, TREE_DT,
426 new BlockAddress(data->FilePosition()));
427 } else if (data->BlockType() == "DZ") {
428 const auto* dz4 = dynamic_cast<const Dz4Block*>(data.get());
429 if (dz4 != nullptr) {
430 block_string << "/" << dz4->OrigBlockType()
431 << " (Size [bytes]: " << dz4->CompressedDataSize()
432 << "/" << dz4->DataSize() << ")";
433 }
434 left_->AppendItem(root,wxString::FromUTF8(block_string.str()),
435 TREE_DZ, TREE_DZ, new BlockAddress(data->FilePosition()));
436 } else if (data->BlockType() == "RD" || data->BlockType() == "RV" || data->BlockType() == "RI") {
437 block_string << " (Size [bytes]: " << nof_data_bytes << ")";
438 left_->AppendItem(root, wxString::FromUTF8(block_string.str()),
439 TREE_RD, TREE_RD, new BlockAddress(data->FilePosition()));
440 } else if (data->BlockType() == "SD") {
441 block_string << " (Size [bytes]: " << nof_data_bytes << ")";
442 left_->AppendItem(root, wxString::FromUTF8(block_string.str()),
443 TREE_SD, TREE_SD, new BlockAddress(data->FilePosition()));
444 } else if (data->BlockType() == "DL") {
445 block_string << " (Size [bytes]: " << nof_data_bytes << ")";
446 auto dl_root = left_->AppendItem(root, wxString::FromUTF8(block_string.str()),
447 TREE_DL, TREE_DL, new BlockAddress(data->FilePosition()));
448 const auto* dl = dynamic_cast<const mdf::detail::Dl4Block*>(data.get());
449 RedrawDataList(*dl, dl_root);
450 } else if (data->BlockType() == "LD") {
451 auto ld_root = left_->AppendItem(root, CreateBlockText(*data),
452 TREE_DL, TREE_DL,
453 new BlockAddress(data->FilePosition()));
454 const auto* data_list = dynamic_cast<const mdf::detail::DataListBlock*>(data.get());
455 if (data_list != nullptr) {
456 RedrawDataList(*data_list, ld_root);
457 }
458 } else if (data->BlockType() == "HL") {
459 auto hl_root = left_->AppendItem(root, CreateBlockText(*data),

Callers

nothing calls this directly

Calls 7

CreateBlockTextFunction · 0.85
OrigBlockTypeMethod · 0.80
CompressedDataSizeMethod · 0.80
BlockTypeMethod · 0.45
getMethod · 0.45
DataSizeMethod · 0.45
FilePositionMethod · 0.45

Tested by

no test coverage detected