From adaff57213b3ad70816d5884f7bf55908a552e2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Levente=20M=C3=A9sz=C3=A1ros?= Date: Wed, 22 Nov 2023 12:40:47 +0100 Subject: [PATCH] FieldChunk: Changed printFieldsToStream to print all inherited fields too unless they come from the base class. --- src/inet/common/packet/chunk/FieldsChunk.cc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/inet/common/packet/chunk/FieldsChunk.cc b/src/inet/common/packet/chunk/FieldsChunk.cc index 0c6952e5ef2..a1a5bbb7a09 100644 --- a/src/inet/common/packet/chunk/FieldsChunk.cc +++ b/src/inet/common/packet/chunk/FieldsChunk.cc @@ -117,13 +117,20 @@ const Ptr FieldsChunk::peekUnchecked(PeekPredicate predicate, PeekConvert std::ostream& FieldsChunk::printFieldsToStream(std::ostream& stream, int level, int evFlags) const { - auto className = getClassName(); auto descriptor = getDescriptor(); // TODO make this more sophisticated, e.g. add properties to fields to control what is printed - if (level <= PRINT_LEVEL_DETAIL) - for (int i = 0; i < descriptor->getFieldCount(); i++) - if (!descriptor->getFieldIsArray(i) && !strcmp(className, descriptor->getFieldDeclaredOn(i))) + if (level <= PRINT_LEVEL_DETAIL) { + for (int i = 0; i < descriptor->getFieldCount(); i++) { + auto fieldDeclaredOn = descriptor->getFieldDeclaredOn(i); + if (!descriptor->getFieldIsArray(i) && + strcmp("inet::FieldsChunk", fieldDeclaredOn) && + strcmp("inet::Chunk", fieldDeclaredOn) && + strcmp("omnetpp::cObject", fieldDeclaredOn)) + { stream << ", " << EV_BOLD << descriptor->getFieldName(i) << EV_NORMAL << " = " << descriptor->getFieldValueAsString(toAnyPtr(this), i, 0); + } + } + } return stream; }