From 8b5c60096b9a2251133fb64bfdea738dba22b7ba Mon Sep 17 00:00:00 2001 From: methylDragon Date: Thu, 22 Sep 2022 01:49:27 -0700 Subject: [PATCH 1/3] Fix complex member printing for DynamicDataHelper (#2957) * DynamicDataHelper::print can print Sequences as well as Arrays Signed-off-by: Will Stott * Fix complex member printing Signed-off-by: methylDragon * Clean up prints Signed-off-by: methylDragon * Fix FastDDS windows CI error Signed-off-by: methylDragon Signed-off-by: methylDragon Co-authored-by: Will Stott (cherry picked from commit 78473a0de3d878a71565ee5d6c8e1e01c34beb70) # Conflicts: # src/cpp/dynamic-types/DynamicDataHelper.cpp --- src/cpp/dynamic-types/DynamicDataHelper.cpp | 101 ++++++++++++++------ 1 file changed, 72 insertions(+), 29 deletions(-) diff --git a/src/cpp/dynamic-types/DynamicDataHelper.cpp b/src/cpp/dynamic-types/DynamicDataHelper.cpp index 4a65ebaeeee..464be88f49a 100644 --- a/src/cpp/dynamic-types/DynamicDataHelper.cpp +++ b/src/cpp/dynamic-types/DynamicDataHelper.cpp @@ -252,33 +252,71 @@ void DynamicDataHelper::aux_index_position( void DynamicDataHelper::print_basic_collection( DynamicData* data) { - const std::vector& bounds = data->type_->descriptor_->bound_; + if (data->type_->get_kind() == TK_SEQUENCE) + { + auto count = data->get_item_count(); + std::cout << "["; + for (uint32_t i = 0; i < count; ++i) + { + print_basic_element(data, i, data->type_->get_element_type()->get_kind()); + std::cout << (i == count - 1 ? "]" : ", "); + } + if (count == 0) + { + std::cout << "]"; + } + } + else + { + const std::vector& bounds = data->type_->descriptor_->bound_; - std::vector> positions; - fill_array_positions(bounds, positions); + std::vector> positions; + fill_array_positions(bounds, positions); - std::cout << "["; - for (size_t i = 0; i < positions.size(); ++i) - { - print_basic_element(data, data->get_array_index(positions[i]), data->type_->get_element_type()->get_kind()); - std::cout << (i == positions.size() - 1 ? "]" : ", "); + std::cout << "["; + for (size_t i = 0; i < positions.size(); ++i) + { + print_basic_element(data, data->get_array_index(positions[i]), data->type_->get_element_type()->get_kind()); + std::cout << (i == positions.size() - 1 ? "]" : ", "); + } } + std::cout << std::endl; } void DynamicDataHelper::print_complex_collection( DynamicData* data, const std::string& tabs) { - const std::vector& bounds = data->type_->descriptor_->bound_; + std::cout << std::endl; + if (data->type_->get_kind() == TK_SEQUENCE) + { + auto count = data->get_item_count(); - std::vector> positions; - fill_array_positions(bounds, positions); + for (uint32_t i = 0; i < count; ++i) + { + std::cout << tabs << "[" << i << "] = "; + print_complex_element(data, i, tabs); + std::cout << std::endl; + } - for (size_t i = 0; i < positions.size(); ++i) + if (count == 0) + { + std::cout << "[]"; + } + } + else { - std::cout << tabs << "[" << i << "] = "; - print_complex_element(data, data->get_array_index(positions[i]), tabs); - std::cout << std::endl; + const std::vector& bounds = data->type_->descriptor_->bound_; + + std::vector> positions; + fill_array_positions(bounds, positions); + + for (size_t i = 0; i < positions.size(); ++i) + { + std::cout << tabs << "[" << i << "] = "; + print_complex_element(data, data->get_array_index(positions[i]), tabs); + std::cout << std::endl; + } } } @@ -287,61 +325,63 @@ void DynamicDataHelper::print_complex_element( MemberId id, const std::string& tabs) { +<<<<<<< HEAD const TypeDescriptor* desc = data->type_->get_type_descriptor(); switch(desc->get_kind()) +======= + DynamicData* st_data = data->loan_value(id); + const TypeDescriptor* desc = st_data->type_->get_type_descriptor(); + switch (desc->get_kind()) +>>>>>>> 78473a0de (Fix complex member printing for DynamicDataHelper (#2957)) { case TK_STRUCTURE: case TK_BITSET: { - DynamicData* st_data = data->loan_value(id); + std::cout << "" << std::endl; std::map members; - data->type_->get_all_members(members); + st_data->type_->get_all_members(members); for (auto it : members) { print_member(st_data, it.second, tabs + "\t"); } - data->return_loaned_value(st_data); break; } case TK_UNION: { - DynamicData* st_data = data->loan_value(id); + std::cout << "" << std::endl; DynamicTypeMember member; - data->type_->get_member(member, data->union_id_); + st_data->type_->get_member(member, st_data->union_id_); print_member(st_data, &member, tabs + "\t"); break; } case TK_SEQUENCE: case TK_ARRAY: { - DynamicData* st_data = data->loan_value(id); print_collection(st_data, tabs + "\t"); - data->return_loaned_value(st_data); break; } case TK_MAP: { - DynamicData* st_data = data->loan_value(id); + std::cout << "" << std::endl; std::map members; - data->type_->get_all_members(members); - size_t size = data->get_item_count(); + st_data->type_->get_all_members(members); + size_t size = st_data->get_item_count(); for (size_t i = 0; i < size; ++i) { size_t index = i * 2; - MemberId member_id = data->get_member_id_at_index(static_cast(index)); + MemberId member_id = st_data->get_member_id_at_index(static_cast(index)); std::cout << "Key: "; print_member(st_data, members[member_id], tabs + "\t"); member_id = data->get_member_id_at_index(static_cast(index + 1)); std::cout << "Value: "; print_member(st_data, members[member_id], tabs + "\t"); } - data->return_loaned_value(st_data); break; } default: break; } - std::cout << std::endl; + data->return_loaned_value(st_data); } void DynamicDataHelper::print_member( @@ -373,12 +413,14 @@ void DynamicDataHelper::print_member( case TK_BITMASK: { print_basic_element(data, type->get_id(), desc->get_kind()); + std::cout << std::endl; break; } case TK_STRUCTURE: case TK_BITSET: { DynamicData* st_data = data->loan_value(type->get_id()); + std::cout << "" << std::endl; std::map members; desc->get_type()->get_all_members(members); for (auto it : members) @@ -390,6 +432,7 @@ void DynamicDataHelper::print_member( } case TK_UNION: { + std::cout << "" << std::endl; DynamicData* st_data = data->loan_value(type->get_id()); DynamicTypeMember member; desc->get_type()->get_member(member, data->union_id_); @@ -406,6 +449,7 @@ void DynamicDataHelper::print_member( } case TK_MAP: { + std::cout << "" << std::endl; DynamicData* st_data = data->loan_value(type->get_id()); std::map members; desc->get_type()->get_all_members(members); @@ -426,5 +470,4 @@ void DynamicDataHelper::print_member( default: break; } - std::cout << std::endl; } From efe49ecdf5f623e9bb27e63e6ad98c41abdec931 Mon Sep 17 00:00:00 2001 From: Miguel Company Date: Wed, 28 Sep 2022 07:28:48 +0200 Subject: [PATCH 2/3] Fix conflict Co-authored-by: methylDragon --- src/cpp/dynamic-types/DynamicDataHelper.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/cpp/dynamic-types/DynamicDataHelper.cpp b/src/cpp/dynamic-types/DynamicDataHelper.cpp index 464be88f49a..e9367e93501 100644 --- a/src/cpp/dynamic-types/DynamicDataHelper.cpp +++ b/src/cpp/dynamic-types/DynamicDataHelper.cpp @@ -325,14 +325,9 @@ void DynamicDataHelper::print_complex_element( MemberId id, const std::string& tabs) { -<<<<<<< HEAD - const TypeDescriptor* desc = data->type_->get_type_descriptor(); - switch(desc->get_kind()) -======= DynamicData* st_data = data->loan_value(id); const TypeDescriptor* desc = st_data->type_->get_type_descriptor(); switch (desc->get_kind()) ->>>>>>> 78473a0de (Fix complex member printing for DynamicDataHelper (#2957)) { case TK_STRUCTURE: case TK_BITSET: From e60612f260c589d01df818ddcf351e90680d447d Mon Sep 17 00:00:00 2001 From: Miguel Company Date: Fri, 30 Sep 2022 08:40:16 +0200 Subject: [PATCH 3/3] Fixing linters Signed-off-by: Miguel Company --- src/cpp/dynamic-types/DynamicDataHelper.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cpp/dynamic-types/DynamicDataHelper.cpp b/src/cpp/dynamic-types/DynamicDataHelper.cpp index e9367e93501..430c97fb361 100644 --- a/src/cpp/dynamic-types/DynamicDataHelper.cpp +++ b/src/cpp/dynamic-types/DynamicDataHelper.cpp @@ -58,7 +58,7 @@ void DynamicDataHelper::print_basic_element( MemberId id, TypeKind kind) { - switch(kind) + switch (kind) { case TK_NONE: { @@ -386,7 +386,7 @@ void DynamicDataHelper::print_member( { std::cout << tabs << type->get_name() << ": "; const MemberDescriptor* desc = type->get_descriptor(); - switch(desc->get_kind()) + switch (desc->get_kind()) { case TK_NONE: case TK_BOOLEAN: