From 8231ef795707f844bff92820cdb25832916c61fc Mon Sep 17 00:00:00 2001 From: phesch <ulila@student.kit.edu> Date: Tue, 14 Jun 2022 09:13:47 +0200 Subject: [PATCH] Handle null objects in easy JSON converter --- .../tree_visitors/TreeTypedJSONConverter.cpp | 39 ++++++++----------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedJSONConverter.cpp b/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedJSONConverter.cpp index 950f034f8..21e4c7bc9 100644 --- a/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedJSONConverter.cpp +++ b/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedJSONConverter.cpp @@ -33,35 +33,30 @@ namespace armarx::armem::gui::instance TreeTypedJSONConverter::MapElements TreeTypedJSONConverter::getObjectElements(DataInput& elementData, TypeInput& elementType) { - std::map<std::string, std::pair<aron::data::VariantPtr, aron::type::VariantPtr>> ret; - auto data = aron::data::Dict::DynamicCastAndCheck(elementData); - auto type = aron::type::Object::DynamicCastAndCheck(elementType); - - if (data) - { - for (const auto& [key, e] : data->getElements()) - { - if (type && type->hasMemberType(key)) - { - auto memberType = type->getMemberType(key); - ret.insert({key, {e, memberType}}); - } - else - { - ret.insert({key, {e, nullptr}}); - } - } - } - return ret; + return GetObjectElementsWithNullType(elementData, elementType); } void - TreeTypedJSONConverter::visitObjectOnEnter(DataInput& elementData, TypeInput& /*elementType*/) + TreeTypedJSONConverter::visitObjectOnEnter(DataInput& elementData, TypeInput& elementType) { std::string key = ""; + aron::Path path; + if (elementData) + { + path = elementData->getPath(); + } + else if (elementType) + { + path = elementType->getPath(); + } + else + { + return; + } + try { - key = elementData->getPath().getLastElement(); + key = path.getLastElement(); } catch (const aron::error::AronException& e) { -- GitLab