diff --git a/common/ffsreport.cpp b/common/ffsreport.cpp index edaa8ee..df622be 100644 --- a/common/ffsreport.cpp +++ b/common/ffsreport.cpp @@ -21,28 +21,28 @@ std::vector FfsReport::generate() // Check model pointer if (!model) { - report.push_back(UString("ERROR: Invalid model pointer provided")); + report.push_back(usprintf("%s: invalid model pointer provided", __FUNCTION__)); return report; } - + // Check root index to be valid UModelIndex root = model->index(0,0); if (!root.isValid()) { - report.push_back(UString("ERROR: Model root index is invalid")); + report.push_back(usprintf("%s: model root index is invalid", __FUNCTION__)); return report; } // Generate report recursive - report.push_back(UString(" Type | Subtype | Size | CRC32 | Name ")); + report.push_back(UString(" Type | Subtype | Offset | Size | CRC32 | Name ")); USTATUS result = generateRecursive(report, root); if (result) { - report.push_back(UString("ERROR: generateRecursive returned ") + errorCodeToUString(result)); + report.push_back(usprintf("%s: generateRecursive returned ", __FUNCTION__) + errorCodeToUString(result)); } - + return report; } -USTATUS FfsReport::generateRecursive(std::vector & report, UModelIndex index, UINT32 level) +USTATUS FfsReport::generateRecursive(std::vector & report, const UModelIndex & index, const UINT32 level) { if (!index.isValid()) return U_SUCCESS; // Nothing to report for invalid index @@ -53,18 +53,24 @@ USTATUS FfsReport::generateRecursive(std::vector & report, UModelIndex // Information on current item UString text = model->text(index); + UString offset = "| N/A "; + if ((!model->compressed(index)) || (index.parent().isValid() && !model->compressed(index.parent()))) { + offset = usprintf("| %08X ", model->offset(index)); + } + report.push_back( UString(" ") + itemTypeToUString(model->type(index)).leftJustified(16) + UString("| ") + itemSubtypeToUString(model->type(index), model->subtype(index)).leftJustified(22) + + offset + usprintf("| %08X | %08X | ", data.size(), crc) - + urepeated('-', level) + UString(" ") + model->name(index) + (text.isEmpty() ? UString("") : UString(" | ") + text) + + urepeated('-', level) + UString(" ") + model->name(index) + (text.isEmpty() ? UString() : UString(" | ") + text) ); - + // Information on child items for (int i = 0; i < model->rowCount(index); i++) { generateRecursive(report, index.child(i,0), level + 1); } - + return U_SUCCESS; } diff --git a/common/ffsreport.h b/common/ffsreport.h index 9e43a17..65d1662 100644 --- a/common/ffsreport.h +++ b/common/ffsreport.h @@ -34,7 +34,7 @@ public: private: TreeModel* model; - USTATUS generateRecursive(std::vector & report, UModelIndex index, UINT32 level = 0); + USTATUS generateRecursive(std::vector & report, const UModelIndex & index, const UINT32 level = 0); }; #endif // FFSREPORT_H