27#include <SimoxUtility/meta/type_name.h>
33 const std::map<type::matrix::ElementType, std::tuple<std::string, int, std::string>>
37 sizeof(
unsigned char),
38 "::armarx::aron::type::matrix::UINT8"}},
39 {type::matrix::UINT16,
41 sizeof(
unsigned short),
42 "::armarx::aron::type::matrix::UINT16"}},
51 {type::matrix::FLOAT32,
53 {type::matrix::FLOAT64,
60 (n.getRows() == -1 ?
"Eigen::Dynamic" :
std::
to_string(n.getRows())) +
", " +
61 (n.getCols() == -1 ?
"Eigen::Dynamic" :
std::
to_string(n.getCols())) +
62 (n.getCols() != 1 ?
", Eigen::RowMajor>" :
">"),
64 (n.getRows() == -1 ?
"Eigen::Dynamic" :
std::
to_string(n.getRows())) +
", " +
65 (n.getCols() == -1 ?
"Eigen::Dynamic" :
std::
to_string(n.getCols())) +
66 (n.getCols() != 1 ?
", Eigen::RowMajor>" :
">"),
73 std::vector<std::string>
74 Matrix::getRequiredIncludes()
const
76 return {
"<RobotAPI/libraries/aron/common/rw/eigen.h>"};
79 std::pair<std::vector<std::pair<std::string, std::string>>,
bool>
80 Matrix::getCtorInitializers(
const std::string& name)
const
82 if (
type.getCols() == -1 ||
type.getRows() == -1)
87 if (
type.getDefaultValue() == aron::type::matrix::default_value::DEFAULT ||
88 type.getDefaultValue() == aron::type::matrix::default_value::IDENTITY)
92 else if (
type.getDefaultValue() == aron::type::matrix::default_value::ZEROS)
96 else if (
type.getDefaultValue() == aron::type::matrix::default_value::ONES)
100 else if (
type.getMaybe() == type::Maybe::OPTIONAL)
102 return {{{name,
"std::nullopt"}},
true};
113 Matrix::getResetHardBlock(
const std::string& cppAccessor)
const
115 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
117 if (
type.getCols() == -1 ||
type.getRows() == -1)
122 else if (
type.getDefaultValue() == aron::type::matrix::default_value::IDENTITY)
127 else if (
type.getDefaultValue() == aron::type::matrix::default_value::DEFAULT ||
128 type.getDefaultValue() == aron::type::matrix::default_value::ZEROS)
133 else if (
type.getDefaultValue() == aron::type::matrix::default_value::ONES)
137 else if (not
type.getDefaultValue().empty())
141 "::One() * " +
type.getDefaultValue() +
";");
147 Matrix::getResetSoftBlock(
const std::string& cppAccessor)
const
149 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
150 block_if_data->addLine(cppAccessor +
nextEl() +
"setZero();");
155 Matrix::getWriteTypeBlock(
const std::string& typeAccessor,
156 const std::string& cppAccessor,
158 std::string& variantAccessor)
const
164 ".writeMatrix(static_cast<int>( " + std::to_string(
type.getRows()) +
"), " +
165 "static_cast<int>( " + std::to_string(
type.getCols()) +
"), " +
167 type.getDefaultValue() +
"\", " +
170 "})); // of " + cppAccessor);
176 Matrix::getWriteBlock(
const std::string& cppAccessor,
178 std::string& variantAccessor)
const
180 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
186 resolved_accessor +
", " + variantAccessor +
", " +
188 simox::alg::join(p.
getPath(),
", ") +
"})); // of " + cppAccessor);
194 Matrix::getReadBlock(
const std::string& cppAccessor,
const std::string& variantAccessor)
const
196 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
202 block_if_data->addLine(reset);
206 variantAccessor +
", " + resolved_accessor +
"); // of " +
213 Matrix::getEqualsBlock(
const std::string& accessor,
214 const std::string& otherInstanceAccessor)
const
216 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
217 block_if_data->addLine(
"if (not (" + accessor +
nextEl() +
"isApprox(" +
219 block_if_data->addLineAsBlock(
"return false;");
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
Matrix(const type::Matrix &)
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
const std::string & to_string(const std::string &s)
static const char * Get()