diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp index d8f53d388acb7b934329c954939204274642b107..0fe08b1dc89b46bf0943690064c764843979a1b4 100644 --- a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp +++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp @@ -98,7 +98,7 @@ namespace armarx::aron::codegenerator::cpp::generator { block_if_data->addLine(cppAccessor + " = " + getInstantiatedCppTypename() + "::Identity();"); } - else if (type.getDefaultValue().empty() || type.getDefaultValue() == aron::type::matrix::default_value::DEFAULT || type.getDefaultValue() == aron::type::matrix::default_value::ZEROS) + else if (type.getDefaultValue() == aron::type::matrix::default_value::DEFAULT || type.getDefaultValue() == aron::type::matrix::default_value::ZEROS) { block_if_data->addLine(cppAccessor + " = " + getInstantiatedCppTypename() + "::Zero();"); } diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp index 365b3c8824d6c38b60ccde7c4381aa41bb0945b7..150c0be305a44835f80da15d078f63170c3676e6 100644 --- a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp +++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp @@ -62,13 +62,13 @@ namespace armarx::aron::codegenerator::cpp::generator { if (type.getDefaultValue() == aron::type::quaternion::default_value::DEFAULT) { - return {{}, false}; + return {{{name, getInstantiatedCppTypename() + "::Identity())"}}, true}; } - if (type.getDefaultValue() == aron::type::quaternion::default_value::ZEROS) + else if (type.getDefaultValue() == aron::type::quaternion::default_value::ZEROS) { return {{{name, getInstantiatedCppTypename() + "(0, 0, 0, 0)"}}, true}; } - if (type.getDefaultValue() == aron::type::quaternion::default_value::ONES) + else if (type.getDefaultValue() == aron::type::quaternion::default_value::ONES) { return {{{name, getInstantiatedCppTypename() + "(1, 1, 1, 1)"}}, true}; } @@ -80,6 +80,31 @@ namespace armarx::aron::codegenerator::cpp::generator } } + CppBlockPtr + Quaternion::getResetHardBlock(const std::string& cppAccessor) const + { + CppBlockPtr block_if_data = std::make_shared<CppBlock>(); + + if (type.getDefaultValue() == aron::type::quaternion::default_value::DEFAULT) + { + block_if_data->addLine(cppAccessor + " = " + getInstantiatedCppTypename() + "::Identity();"); + } + else if (type.getDefaultValue() == aron::type::quaternion::default_value::ZEROS) + { + block_if_data->addLine(cppAccessor + " = " + getInstantiatedCppTypename() + "(0, 0, 0, 0);"); + } + else if (type.getDefaultValue() == aron::type::quaternion::default_value::ONES) + { + block_if_data->addLine(cppAccessor + " = " + getInstantiatedCppTypename() + "(1, 1, 1, 1);"); + } + else if (not type.getDefaultValue().empty()) + { + // try to parse num. We ensure from typereader that defaultValue is valid number + block_if_data->addLine(cppAccessor + " = " + getInstantiatedCppTypename() + "(" + type.getDefaultValue() + ");"); + } + return resolveMaybeResetHardBlock(block_if_data, cppAccessor); + } + CppBlockPtr Quaternion::getResetSoftBlock(const std::string& cppAccessor) const { diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h index 4fd41b7dbd382c0231337ea30ba661f9b1e9eab3..70f8e890e8ed9f38ed75074fab8d7113dcec1d97 100644 --- a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h +++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h @@ -42,6 +42,7 @@ namespace armarx::aron::codegenerator::cpp::generator std::vector<std::string> getRequiredIncludes() const final; std::pair<std::vector<std::pair<std::string, std::string>>, bool> getCtorInitializers(const std::string&) const final; + CppBlockPtr getResetHardBlock(const std::string& cppAccessor) const final; CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final; CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor,