27#include <SimoxUtility/meta/type_name.h>
29#include <RobotAPI/interface/aron/Aron.h>
34 const std::map<type::quaternion::ElementType, std::tuple<std::string, int, std::string>>
38 "::armarx::aron::type::quaternion::ElementType::FLOAT32"}},
39 {type::quaternion::ElementType::FLOAT64,
42 "::armarx::aron::type::quaternion::ElementType::FLOAT64"}}};
55 std::vector<std::string>
58 return {
"<RobotAPI/libraries/aron/common/rw/eigen.h>"};
61 std::pair<std::vector<std::pair<std::string, std::string>>,
bool>
66 if (
type.getDefaultValue() == aron::type::quaternion::default_value::DEFAULT ||
67 type.getDefaultValue() == aron::type::quaternion::default_value::IDENTITY)
71 else if (
type.getMaybe() == type::Maybe::OPTIONAL)
73 return {{{name,
"std::nullopt"}},
true};
76 else if (
type.getDefaultValue() == aron::type::quaternion::default_value::ZEROS)
78 std::cerr <<
"WARNING: using ZEROS as a default value for Quaternions is highly "
79 "frowned upon and will be removed in the future";
82 else if (
type.getDefaultValue() == aron::type::quaternion::default_value::ONES)
84 std::cerr <<
"WARNING: using ONES as a default value for Quaternions is highly frowned "
85 "upon and will be removed in the future";
99 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
101 if (
type.getDefaultValue() == aron::type::quaternion::default_value::DEFAULT)
106 else if (
type.getDefaultValue() == aron::type::quaternion::default_value::ZEROS)
111 else if (
type.getDefaultValue() == aron::type::quaternion::default_value::ONES)
116 else if (not
type.getDefaultValue().empty())
120 type.getDefaultValue() +
");");
128 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
129 block_if_data->addLine(cppAccessor +
nextEl() +
"setIdentity();");
135 const std::string& cppAccessor,
137 std::string& variantAccessor)
const
145 type.getDefaultValue() +
"\", " +
148 "})); // of " + cppAccessor);
155 std::string& variantAccessor)
const
157 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
163 resolved_accessor +
", " + variantAccessor +
", " +
165 simox::alg::join(p.
getPath(),
", ") +
"})); // of " + cppAccessor);
172 const std::string& variantAccessor)
const
174 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
180 block_if_data->addLine(reset);
184 variantAccessor +
", " + resolved_accessor +
"); // of " +
192 const std::string& otherInstanceAccessor)
const
194 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
195 block_if_data->addLine(
"if (not (" + accessor +
nextEl() +
"isApprox(" +
196 (
type.getMaybe() != type::Maybe::NONE ?
"*" + otherInstanceAccessor
197 : otherInstanceAccessor) +
199 block_if_data->addLineAsBlock(
"return false;");
Quaternion()
Construct an identity quaternion.
std::vector< std::string > getPath() const
std::string resolveMaybeAccessor(const std::string &) const
CppBlockPtr resolveMaybeResetHardBlock(const CppBlockPtr &, const std::string &) const
CppBlockPtr resolveMaybeEqualsBlock(const CppBlockPtr &, const std::string &, const std::string &) const
CppBlockPtr resolveMaybeReadBlock(const CppBlockPtr &, const std::string &, const std::string &) const
std::string resolveMaybeGeneratorWithSetter(const std::string &, const std::string &args="") const
static std::string EscapeAccessor(const std::string &)
CppBlockPtr resolveMaybeResetSoftBlock(const CppBlockPtr &, const std::string &) const
std::string nextEl() const
static const std::string ARON_READER_ACCESSOR
std::string getInstantiatedCppTypename() const
static const std::string ARON_PATH_ACCESSOR
static const std::string ARON_WRITER_ACCESSOR
static const std::string ARON_VARIANT_RETURN_ACCESSOR
CppBlockPtr resolveMaybeWriteBlock(const CppBlockPtr &, const std::string &) const
Quaternion(const type::Quaternion &)
CppBlockPtr getReadBlock(const std::string &cppAccessor, const std::string &variantAccessor) const final
std::vector< std::string > getRequiredIncludes() const final
CppBlockPtr getEqualsBlock(const std::string &, const std::string &) const final
CppBlockPtr getResetHardBlock(const std::string &cppAccessor) const final
CppBlockPtr getWriteTypeBlock(const std::string &typeAccessor, const std::string &cppAccessor, const Path &, std::string &variantAccessor) const final
std::pair< std::vector< std::pair< std::string, std::string > >, bool > getCtorInitializers(const std::string &) const final
CppBlockPtr getWriteBlock(const std::string &cppAccessor, const Path &, std::string &variantAccessor) const final
CppBlockPtr getResetSoftBlock(const std::string &cppAccessor) const final
const std::map< type::Maybe, std::string > Maybe2CppString
const std::map< type::matrix::ElementType, std::tuple< std::string, int, std::string > > ElementType2Cpp
A convenience header to include all aron files (full include, not forward declared)
std::shared_ptr< CppBlock > CppBlockPtr
static const char * Get()