27 #include <SimoxUtility/meta/type_name.h>
34 "std::map<std::string, " +
35 FromAronType(*e.getAcceptedType())->getFullInstantiatedCppTypename() +
">",
36 "std::map<std::string, " +
37 FromAronType(*e.getAcceptedType())->getFullInstantiatedCppTypename() +
">",
39 simox::meta::get_type_name<type::dto::
Dict>(),
45 std::vector<std::string>
49 return c->getRequiredIncludes();
55 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
56 block_if_data->addLine(cppAccessor +
nextEl() +
"clear();");
62 const std::string& cppAccessor,
64 std::string& variantAccessor)
const
71 std::string nextVariantAccessor;
73 b->appendBlock(type_s->getWriteTypeBlock(type_s->getInstantiatedCppTypename(),
74 cppAccessor +
nextEl() +
"accepted_type",
76 nextVariantAccessor));
81 simox::alg::join(p.
getPath(),
", ") +
"})); // of " + cppAccessor);
89 std::string& variantAccessor)
const
91 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
95 const std::string elementsAccessor = variantAccessor +
"_dictElements";
96 block_if_data->addLine(
"std::map<std::string, _Aron_T> " + elementsAccessor +
";");
99 std::string accessor_iterator_val =
103 block_if_data->addLine(
"for (const auto& [" + accessor_iterator_key +
", " +
104 accessor_iterator_val +
"] : " + resolved_accessor +
") ");
107 CppBlockPtr for_loop = std::make_shared<CppBlock>();
108 std::string nextVariantAccessor;
111 type_s->getWriteBlock(accessor_iterator_val, nextPath, nextVariantAccessor);
114 for_loop->appendBlock(child_b);
115 for_loop->addLine(elementsAccessor +
".emplace(" + accessor_iterator_key +
", " +
116 nextVariantAccessor +
");");
117 block_if_data->addBlock(for_loop);
121 elementsAccessor +
", " +
"std::nullopt, " +
"armarx::aron::Path(" +
123 "})); // of " + cppAccessor);
131 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
133 std::string elements_accessor =
135 std::string accessor_iterator_value =
137 std::string accessor_iterator_key =
140 block_if_data->addLine(
"std::map<std::string, _Aron_TNonConst> " + elements_accessor +
";");
142 elements_accessor +
");");
143 block_if_data->addLine(
"for (const auto& [" + accessor_iterator_key +
", " +
144 accessor_iterator_value +
"] : " + elements_accessor +
")");
147 CppBlockPtr for_loop = std::make_shared<CppBlock>();
148 std::string accessor_iterator_tmp =
150 for_loop->addLine(type_s->getFullInstantiatedCppTypename() +
" " +
151 accessor_iterator_tmp +
";");
152 for_loop->appendBlock(
153 type_s->getReadBlock(accessor_iterator_tmp, accessor_iterator_value));
154 for_loop->addLine(cppAccessor +
nextEl() +
"insert({" + accessor_iterator_key +
", " +
155 accessor_iterator_tmp +
"});");
156 block_if_data->addBlock(for_loop);