27#include <SimoxUtility/algorithm/vector.hpp>
28#include <SimoxUtility/meta/type_name.h>
44 std::vector<std::string>
50 auto l1 = child_s1->getRequiredIncludes();
51 auto l2 = child_s2->getRequiredIncludes();
53 return simox::alg::appended(l1, l2);
59 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
64 block_if_data->appendBlock(b21);
68 block_if_data->appendBlock(b22);
74 const std::string& cppAccessor,
76 std::string& variantAccessor)
const
78 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
83 std::string accessor_iterator1 = cppAccessor +
nextEl() +
"first";
84 std::string firstVariantAccessor;
86 CppBlockPtr b21 = child_s1->getWriteTypeBlock(child_s1->getInstantiatedCppTypename(),
89 firstVariantAccessor);
90 block_if_data->appendBlock(b21);
93 std::string accessor_iterator2 = cppAccessor +
nextEl() +
"second";
94 std::string secondVariantAccessor;
96 CppBlockPtr b22 = child_s2->getWriteTypeBlock(child_s2->getInstantiatedCppTypename(),
99 secondVariantAccessor);
100 block_if_data->appendBlock(b22);
103 ".writePair(" + firstVariantAccessor +
", " + secondVariantAccessor +
106 simox::alg::join(p.
getPath(),
", ") +
"})); // of " + cppAccessor);
107 return block_if_data;
113 std::string& variantAccessor)
const
115 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
120 std::string accessor_iterator1 = cppAccessor +
nextEl() +
"first";
121 std::string firstVariantAccessor;
124 child_s1->getWriteBlock(accessor_iterator1, firstPath, firstVariantAccessor);
127 block_if_data->appendBlock(b21);
130 std::string accessor_iterator2 = cppAccessor +
nextEl() +
"second";
131 std::string secondVariantAccessor;
134 child_s2->getWriteBlock(accessor_iterator2, secondPath, secondVariantAccessor);
137 block_if_data->appendBlock(b22);
140 firstVariantAccessor +
", " + secondVariantAccessor +
", " +
142 simox::alg::join(p.
getPath(),
", ") +
"})); // of " + cppAccessor);
149 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
151 std::string elements_accessor =
154 block_if_data->addLine(
"std::vector<_Aron_TNonConst> " + elements_accessor +
";");
156 "); // of " + cppAccessor);
160 child_s1->getReadBlock(cppAccessor +
nextEl() +
"first", elements_accessor +
"[0]");
161 block_if_data->appendBlock(b21);
165 child_s2->getReadBlock(cppAccessor +
nextEl() +
"second", elements_accessor +
"[1]");
166 block_if_data->appendBlock(b22);
std::vector< std::string > getPath() const
Path withElement(const std::string &, bool escape=false) const
Path withAcceptedTypeIndex(int, bool escape=false) const
std::string resolveMaybeAccessor(const std::string &) const
CppBlockPtr resolveMaybeReadBlock(const CppBlockPtr &, const std::string &, const std::string &) const
static std::string EscapeAccessor(const std::string &)
CppBlockPtr resolveMaybeResetSoftBlock(const CppBlockPtr &, const std::string &) const
std::string nextEl() const
static std::string ExtractCppTypename(const type::Variant &)
static const std::string ARON_READER_ACCESSOR
static const std::string ARON_PATH_ACCESSOR
static const std::string ARON_VARIABLE_PREFIX
static const std::string ARON_WRITER_ACCESSOR
static std::unique_ptr< Generator > FromAronType(const type::Variant &)
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
std::vector< std::string > getRequiredIncludes() const final
CppBlockPtr getWriteTypeBlock(const std::string &typeAccessor, const std::string &cppAccessor, const Path &, std::string &variantAccessor) const final
Pair(const type::Pair &e)
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
A convenience header to include all aron files (full include, not forward declared)
std::shared_ptr< CppBlock > CppBlockPtr