From 7f10714ff57e752ecfcd834cc13f90b78636acec Mon Sep 17 00:00:00 2001 From: Fabian Peller-Konrad <fabian.peller-konrad@kit.edu> Date: Thu, 2 Dec 2021 14:27:35 +0100 Subject: [PATCH] fix so that poses use a resolved accessor when they are optional in the generated operator== --- .../codegenerator/codewriter/cpp/generator/ndarray/Pose.cpp | 4 +++- .../RobotAPI/libraries/aron/core/test/aron/OptionalTest.xml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Pose.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Pose.cpp index d7292d0e0..b377dde0f 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Pose.cpp +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Pose.cpp @@ -86,7 +86,9 @@ namespace armarx::aron::codegenerator::cpp::generator CppBlockPtr Pose::getEqualsBlock(const std::string& accessor, const std::string& otherInstanceAccessor) const { CppBlockPtr block_if_data = std::make_shared<CppBlock>(); - block_if_data->addLine("if (not (" + accessor + nextEl() + "isApprox(" + otherInstanceAccessor + ")))"); + std::string other_instance_resolved_accessor = this->resolveMaybeAccessor(otherInstanceAccessor); + + block_if_data->addLine("if (not (" + accessor + nextEl() + "isApprox(" + other_instance_resolved_accessor + ")))"); block_if_data->addLineAsBlock("return false;"); return resolveMaybeEqualsBlock(block_if_data, accessor, otherInstanceAccessor); } diff --git a/source/RobotAPI/libraries/aron/core/test/aron/OptionalTest.xml b/source/RobotAPI/libraries/aron/core/test/aron/OptionalTest.xml index 332e9b13e..2b0d2d398 100644 --- a/source/RobotAPI/libraries/aron/core/test/aron/OptionalTest.xml +++ b/source/RobotAPI/libraries/aron/core/test/aron/OptionalTest.xml @@ -61,7 +61,9 @@ </List> </ObjectChild> - + <ObjectChild key="an_optional_pose"> + <Pose /> + </ObjectChild> </Object> </GenerateTypes> -- GitLab