diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenMatrix.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenMatrix.cpp index 32576d212cc9fe5832a177c301d4120c73e182ae..54a4668819869c3305d79a98531cd8cdd348bf14 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenMatrix.cpp +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenMatrix.cpp @@ -52,6 +52,18 @@ namespace armarx::aron::cppserializer::serializer ARMARX_CHECK_NOT_NULL(typenavigator); } + CppBlockPtr EigenMatrixSerializer::getResetHardBlock(const std::string& accessor) const + { + CppBlockPtr block = std::make_shared<CppBlock>(); + block->addLine(accessor + ".setZero();"); + return this->ResolveMaybeResetHardBlock(accessor, block, this->typenavigator); + } + + CppBlockPtr EigenMatrixSerializer::getResetSoftBlock(const std::string& accessor) const + { + return getResetHardBlock(accessor); + } + CppBlockPtr EigenMatrixSerializer::getWriteTypeBlock(const std::string& accessor) const { CppBlockPtr b = CppBlockPtr(new CppBlock()); diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenMatrix.h b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenMatrix.h index 51b74e6515969c85f0d822f6e35aace596a7dc95..1885efb76b1b53ab533d83fd4b071592fa040aeb 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenMatrix.h +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenMatrix.h @@ -31,8 +31,6 @@ namespace armarx::aron::cppserializer::serializer { - class EigenMatrixSerializer; - typedef std::shared_ptr<EigenMatrixSerializer> EigenMatrixSerializerPtr; class EigenMatrixSerializer : virtual public detail::NDArraySerializerBase<typenavigator::EigenMatrixNavigator, EigenMatrixSerializer> @@ -42,6 +40,8 @@ namespace armarx::aron::cppserializer::serializer EigenMatrixSerializer(const typenavigator::EigenMatrixNavigatorPtr&); // virtual implementations + virtual CppBlockPtr getResetHardBlock(const std::string&) const override; + virtual CppBlockPtr getResetSoftBlock(const std::string&) const override; virtual CppBlockPtr getWriteTypeBlock(const std::string&) const override; virtual CppBlockPtr getWriteBlock(const std::string&) const override; virtual CppBlockPtr getReadBlock(const std::string&) const override; diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenQuaternion.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenQuaternion.cpp index e8457f0aa5e45eba2bae253e1bc5b6277cf9d29b..41e3faf1bd3797cc721b27bfa49e0b70740c76b2 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenQuaternion.cpp +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenQuaternion.cpp @@ -47,6 +47,18 @@ namespace armarx::aron::cppserializer::serializer ARMARX_CHECK_NOT_NULL(typenavigator); } + CppBlockPtr EigenQuaternionSerializer::getResetHardBlock(const std::string& accessor) const + { + CppBlockPtr block = std::make_shared<CppBlock>(); + block->addLine(accessor + ".setIdentity();"); + return this->ResolveMaybeResetHardBlock(accessor, block, this->typenavigator); + } + + CppBlockPtr EigenQuaternionSerializer::getResetSoftBlock(const std::string& accessor) const + { + return getResetHardBlock(accessor); + } + CppBlockPtr EigenQuaternionSerializer::getWriteTypeBlock(const std::string& accessor) const { CppBlockPtr b = CppBlockPtr(new CppBlock()); diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenQuaternion.h b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenQuaternion.h index 039d20faca55b4856fcaca9337da0d1806a04cc9..8f471d8f3e2570d51fac512d14b1b06bbbed692d 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenQuaternion.h +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/EigenQuaternion.h @@ -33,20 +33,19 @@ namespace armarx::aron::cppserializer::serializer { - class EigenQuaternionSerializer; - typedef std::shared_ptr<EigenQuaternionSerializer> EigenQuaternionSerializerPtr; - class EigenQuaternionSerializer : virtual public detail::NDArraySerializerBase<typenavigator::EigenQuaternionNavigator, EigenQuaternionSerializer> { public: - using PointerType = EigenQuaternionSerializerPtr; + using PointerType = std::shared_ptr<EigenQuaternionSerializer>; public: // constructors EigenQuaternionSerializer(const typenavigator::EigenQuaternionNavigatorPtr&); // virtual implementations + virtual CppBlockPtr getResetHardBlock(const std::string&) const override; + virtual CppBlockPtr getResetSoftBlock(const std::string&) const override; virtual CppBlockPtr getWriteTypeBlock(const std::string&) const override; virtual CppBlockPtr getWriteBlock(const std::string&) const override; virtual CppBlockPtr getReadBlock(const std::string&) const override; diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Orientation.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Orientation.cpp index c2c1a5aaaddd5ceca4074144024cc62287a9a6d6..1bd39c73c977b6cf4da7a7de01b3346083c7c742 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Orientation.cpp +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Orientation.cpp @@ -40,16 +40,28 @@ namespace armarx::aron::cppserializer::serializer ARMARX_CHECK_NOT_NULL(typenavigator); } + CppBlockPtr OrientationSerializer::getResetHardBlock(const std::string& accessor) const + { + CppBlockPtr block = std::make_shared<CppBlock>(); + block->addLine(accessor + ".setIdentity();"); + return this->ResolveMaybeResetHardBlock(accessor, block, this->typenavigator); + } + + CppBlockPtr OrientationSerializer::getResetSoftBlock(const std::string& accessor) const + { + return getResetHardBlock(accessor); + } + CppBlockPtr OrientationSerializer::getWriteTypeBlock(const std::string& accessor) const { - CppBlockPtr b = CppBlockPtr(new CppBlock()); + CppBlockPtr b = std::make_shared<CppBlock>(); b->addLine("w.writeOrientation({" + MAYBE_TO_STRING(typenavigator->getMaybe()) + "}); // of " + accessor); return b; } CppBlockPtr OrientationSerializer::getWriteBlock(const std::string& accessor) const { - CppBlockPtr block_if_data = CppBlockPtr(new CppBlock()); + CppBlockPtr block_if_data = std::make_shared<CppBlock>(); block_if_data->addLine("w.writeNDArray({" + simox::alg::to_string(typenavigator->ACCEPTED_DIMENSION, ", ") + ", 4}, \"" + typenavigator->ACCEPTED_TYPE + "\", reinterpret_cast<const unsigned char*>(" + accessor + nextEl() + "coeffs().data())); // of " + accessor); return ResolveMaybeWriteBlock(accessor, block_if_data, typenavigator); @@ -57,14 +69,14 @@ namespace armarx::aron::cppserializer::serializer CppBlockPtr OrientationSerializer::getReadBlock(const std::string& accessor) const { - CppBlockPtr block_if_data = CppBlockPtr(new CppBlock()); + CppBlockPtr block_if_data = std::make_shared<CppBlock>(); block_if_data->addLine("r.readEndNDArray(reinterpret_cast<unsigned char*>(" + accessor + nextEl() + "coeffs().data())); // of " + accessor); return ResolveMaybeReadBlock(accessor, "r.readStartNDArray()", block_if_data, typenavigator); } CppBlockPtr OrientationSerializer::getEqualsBlock(const std::string& accessor, const std::string& otherInstanceAccessor) const { - CppBlockPtr block_if_data = CppBlockPtr(new CppBlock()); + CppBlockPtr block_if_data = std::make_shared<CppBlock>(); block_if_data->addLine("if (not (" + accessor + nextEl() + "isApprox(" + otherInstanceAccessor + ")))"); block_if_data->addLineAsBlock("return false;"); return ResolveMaybeEqualsBlock(accessor, otherInstanceAccessor, block_if_data, typenavigator); diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Orientation.h b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Orientation.h index 088b4d1c4262a2f34c6542543aa9cfb56bb0ded7..b4851e4bc6806fc60b157302a7bfc53adc6a110a 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Orientation.h +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Orientation.h @@ -29,14 +29,12 @@ namespace armarx::aron::cppserializer::serializer { - class OrientationSerializer; - typedef std::shared_ptr<OrientationSerializer> AronOrientationTypeCppSerializerPtr; class OrientationSerializer : virtual public detail::NDArraySerializerBase<typenavigator::OrientationNavigator, OrientationSerializer> { public: - using PointerType = AronOrientationTypeCppSerializerPtr; + using PointerType = std::shared_ptr<class OrientationSerializer>; public: @@ -44,10 +42,13 @@ namespace armarx::aron::cppserializer::serializer OrientationSerializer(const typenavigator::OrientationNavigatorPtr&); // virtual implementations + virtual CppBlockPtr getResetHardBlock(const std::string&) const override; + virtual CppBlockPtr getResetSoftBlock(const std::string&) const override; virtual CppBlockPtr getWriteTypeBlock(const std::string&) const override; virtual CppBlockPtr getWriteBlock(const std::string&) const override; virtual CppBlockPtr getReadBlock(const std::string&) const override; virtual CppBlockPtr getEqualsBlock(const std::string&, const std::string&) const override; }; + } diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Pose.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Pose.cpp index 9bf5f307437473abd5fc9e004a21c1db6767c087..b6be09e9f94b972f23e226a6dc8cbd64e11c6040 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Pose.cpp +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Pose.cpp @@ -40,16 +40,28 @@ namespace armarx::aron::cppserializer::serializer ARMARX_CHECK_NOT_NULL(typenavigator); } + CppBlockPtr PoseSerializer::getResetHardBlock(const std::string& accessor) const + { + CppBlockPtr block = std::make_shared<CppBlock>(); + block->addLine(accessor + ".setIdentity();"); + return this->ResolveMaybeResetHardBlock(accessor, block, this->typenavigator); + } + + CppBlockPtr PoseSerializer::getResetSoftBlock(const std::string& accessor) const + { + return getResetHardBlock(accessor); + } + CppBlockPtr PoseSerializer::getWriteTypeBlock(const std::string& accessor) const { - CppBlockPtr b = CppBlockPtr(new CppBlock()); + CppBlockPtr b = std::make_shared<CppBlock>(); b->addLine("w.writePose({" + MAYBE_TO_STRING(typenavigator->getMaybe()) + "}); // of " + accessor); return b; } CppBlockPtr PoseSerializer::getWriteBlock(const std::string& accessor) const { - CppBlockPtr block_if_data = CppBlockPtr(new CppBlock()); + CppBlockPtr block_if_data = std::make_shared<CppBlock>(); block_if_data->addLine("w.writeNDArray({" + simox::alg::to_string(typenavigator->ACCEPTED_DIMENSION, ", ") + ", 4}, \"" + typenavigator->ACCEPTED_TYPE + "\", reinterpret_cast<const unsigned char*>(" + accessor + nextEl() + "data())); // of " + accessor); return ResolveMaybeWriteBlock(accessor, block_if_data, typenavigator); @@ -57,14 +69,14 @@ namespace armarx::aron::cppserializer::serializer CppBlockPtr PoseSerializer::getReadBlock(const std::string& accessor) const { - CppBlockPtr block_if_data = CppBlockPtr(new CppBlock()); + CppBlockPtr block_if_data = std::make_shared<CppBlock>(); block_if_data->addLine("r.readEndNDArray(reinterpret_cast<unsigned char*>(" + accessor + nextEl() + "data())); // of " + accessor); return ResolveMaybeReadBlock(accessor, "r.readStartNDArray()", block_if_data, typenavigator); } CppBlockPtr PoseSerializer::getEqualsBlock(const std::string& accessor, const std::string& otherInstanceAccessor) const { - CppBlockPtr block_if_data = CppBlockPtr(new CppBlock()); + CppBlockPtr block_if_data = std::make_shared<CppBlock>(); block_if_data->addLine("if (not (" + accessor + nextEl() + "isApprox(" + otherInstanceAccessor + ")))"); block_if_data->addLineAsBlock("return false;"); return ResolveMaybeEqualsBlock(accessor, otherInstanceAccessor, block_if_data, typenavigator); diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Pose.h b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Pose.h index 131a73e728ac36eede0c2a7012179032867c91dd..195a04015ea58ae14b419dcda0bf163981cecff6 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Pose.h +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Pose.h @@ -29,20 +29,19 @@ namespace armarx::aron::cppserializer::serializer { - class PoseSerializer; - typedef std::shared_ptr<PoseSerializer> AronPoseTypeCppSerializerPtr; - class PoseSerializer : virtual public detail::NDArraySerializerBase<typenavigator::PoseNavigator, PoseSerializer> { public: - using PointerType = AronPoseTypeCppSerializerPtr; + using PointerType = std::shared_ptr<PoseSerializer>; public: // constructors PoseSerializer(const typenavigator::PoseNavigatorPtr&); // virtual implementations + virtual CppBlockPtr getResetHardBlock(const std::string&) const override; + virtual CppBlockPtr getResetSoftBlock(const std::string&) const override; virtual CppBlockPtr getWriteTypeBlock(const std::string&) const override; virtual CppBlockPtr getWriteBlock(const std::string&) const override; virtual CppBlockPtr getReadBlock(const std::string&) const override; diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Position.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Position.cpp index 60089f7c7568435f943318dece3c4e083f87d0fd..6c9e54ecd0a074cc1c56a63f090fc56c06152004 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Position.cpp +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Position.cpp @@ -40,16 +40,28 @@ namespace armarx::aron::cppserializer::serializer ARMARX_CHECK_NOT_NULL(typenavigator); } + CppBlockPtr PositionSerializer::getResetHardBlock(const std::string& accessor) const + { + CppBlockPtr block = std::make_shared<CppBlock>(); + block->addLine(accessor + ".setZero();"); + return this->ResolveMaybeResetHardBlock(accessor, block, this->typenavigator); + } + + CppBlockPtr PositionSerializer::getResetSoftBlock(const std::string& accessor) const + { + return getResetHardBlock(accessor); + } + CppBlockPtr PositionSerializer::getWriteTypeBlock(const std::string& accessor) const { - CppBlockPtr b = CppBlockPtr(new CppBlock()); + CppBlockPtr b = std::make_shared<CppBlock>(); b->addLine("w.writePosition({" + MAYBE_TO_STRING(typenavigator->getMaybe()) + "}); // of " + accessor); return b; } CppBlockPtr PositionSerializer::getWriteBlock(const std::string& accessor) const { - CppBlockPtr block_if_data = CppBlockPtr(new CppBlock()); + CppBlockPtr block_if_data = std::make_shared<CppBlock>(); block_if_data->addLine("w.writeNDArray({" + simox::alg::to_string(typenavigator->ACCEPTED_DIMENSION, ", ") + ", 4}, \"" + typenavigator->ACCEPTED_TYPE + "\", reinterpret_cast<const unsigned char*>(" + accessor + nextEl() + "data())); // of " + accessor); return ResolveMaybeWriteBlock(accessor, block_if_data, typenavigator); @@ -57,14 +69,14 @@ namespace armarx::aron::cppserializer::serializer CppBlockPtr PositionSerializer::getReadBlock(const std::string& accessor) const { - CppBlockPtr block_if_data = CppBlockPtr(new CppBlock()); + CppBlockPtr block_if_data = std::make_shared<CppBlock>(); block_if_data->addLine("r.readEndNDArray(reinterpret_cast<unsigned char*>(" + accessor + nextEl() + "data())); // of " + accessor); return ResolveMaybeReadBlock(accessor, "r.readStartNDArray()", block_if_data, typenavigator); } CppBlockPtr PositionSerializer::getEqualsBlock(const std::string& accessor, const std::string& otherInstanceAccessor) const { - CppBlockPtr block_if_data = CppBlockPtr(new CppBlock()); + CppBlockPtr block_if_data = std::make_shared<CppBlock>(); block_if_data->addLine("if (not (" + accessor + nextEl() + "isApprox(" + otherInstanceAccessor + ")))"); block_if_data->addLineAsBlock("return false;"); return ResolveMaybeEqualsBlock(accessor, otherInstanceAccessor, block_if_data, typenavigator); diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Position.h b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Position.h index 7a234106d331f109a0a75e0f15a0f629189d2191..61026f4617401bdc64393c4e813c3fd535dce301 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Position.h +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/serializer/ndarray/Position.h @@ -29,20 +29,20 @@ namespace armarx::aron::cppserializer::serializer { - class PositionSerializer; - typedef std::shared_ptr<PositionSerializer> AronPositionTypeCppSerializerPtr; class PositionSerializer : virtual public detail::NDArraySerializerBase<typenavigator::PositionNavigator, PositionSerializer> { public: - using PointerType = AronPositionTypeCppSerializerPtr; + using PointerType = std::shared_ptr<PositionSerializer>; public: // constructors PositionSerializer(const typenavigator::PositionNavigatorPtr&); // virtual implementations + virtual CppBlockPtr getResetHardBlock(const std::string&) const override; + virtual CppBlockPtr getResetSoftBlock(const std::string&) const override; virtual CppBlockPtr getWriteTypeBlock(const std::string&) const override; virtual CppBlockPtr getWriteBlock(const std::string&) const override; virtual CppBlockPtr getReadBlock(const std::string&) const override;