27#include <SimoxUtility/meta/type_name.h>
40 if (
type.getMaybe() != type::Maybe::NONE)
44 std::string message =
"\n\nSomehow the maybe flag of a top level int enum "
45 "declaration is set. This is not valid!\n"
47 std::to_string((int)type.getMaybe()) +
50 type.getPath().toString() +
52 "Check your xml definition! \n";
53 throw error::ValueNotValidException(
54 __PRETTY_FUNCTION__, message, std::to_string((int)type.getMaybe()));
58 std::pair<std::vector<std::pair<std::string, std::string>>,
bool>
61 if (
type.getMaybe() == type::Maybe::OPTIONAL)
63 return {{{name,
"std::nullopt"}},
true};
72 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
73 block_if_data->addLine(accessor +
nextEl() +
"resetSoft();");
81 if (
type.getMaybe() != type::Maybe::NONE)
83 b->addLine(accessor +
" = {};");
87 b->addLine(accessor +
nextEl() +
"resetHard();");
94 const std::string& cppAccessor,
96 std::string& variantAccessor)
const
106 "})); // of " + cppAccessor);
113 std::string& variantAccessor)
const
115 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
119 block_if_data->addLine(variantAccessor +
" = " + cppAccessor +
nextEl() +
"write(" +
122 "})); // of " + cppAccessor);
130 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
133 block_if_data->addLine(reset);
136 variantAccessor +
");");
std::vector< std::string > getPath() const
CppBlockPtr resolveMaybeResetHardBlock(const CppBlockPtr &, 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
CppBlockPtr getReadBlock(const std::string &cppAccessor, const std::string &variantAccessor) const final
CppBlockPtr getResetHardBlock(const std::string &cppAccessor) const final
std::pair< std::vector< std::pair< std::string, std::string > >, bool > getCtorInitializers(const std::string &name) const final
CppBlockPtr getWriteTypeBlock(const std::string &typeAccessor, const std::string &cppAccessor, const Path &, std::string &variantAccessor) const final
IntEnum(const type::IntEnum &)
CppBlockPtr getWriteBlock(const std::string &cppAccessor, const Path &, std::string &variantAccessor) const final
CppBlockPtr getResetSoftBlock(const std::string &cppAccessor) const final
SpecializedGeneratorBase(const std::string &instantiatedCppTypename, const std::string &classCppTypename, const std::string &aronDataTypename, const std::string &aronTypeTypename, const type::IntEnum &t)
const std::map< type::Maybe, std::string > Maybe2CppString
A convenience header to include all aron files (full include, not forward declared)
std::shared_ptr< CppBlock > CppBlockPtr