19 template<
typename DtoT,
typename BoT>
25 template <
class ...Ts>
86 template <
class DtoT,
class BoT>
93 template <
class BoT,
class DtoT>
108 template <
class DtoT,
class BoT>
109 void toAron(DtoT& dto,
const std::unique_ptr<BoT>&
bo)
117 template <
class DtoT,
class BoT>
120 bo = std::make_unique<BoT>();
126 template <
class DtoT,
class BoT>
127 void toAron(std::optional<DtoT>& dto,
const std::optional<BoT>&
bo)
140 template <
class DtoT,
class BoT>
141 void fromAron(
const std::optional<DtoT>& dto, std::optional<BoT>&
bo)
156 template <
class DtoT,
class BoT>
158 void toAron(std::optional<DtoT>& dto,
const BoT&
bo)
163 template <
class DtoT,
class BoT>
165 void fromAron(DtoT& dto,
const std::optional<BoT>&
bo)
173 template <
class DtoT,
class BoT>
174 void toAron(DtoT& dto,
bool& dtoValid,
const BoT&
bo,
bool boValid)
188 template <
class DtoT,
class BoT>
189 void fromAron(
const DtoT& dto,
bool dtoValid, BoT&
bo,
bool& boValid)
202 template <
class DtoT,
class BoT>
203 void toAron(DtoT& dto,
bool& dtoValid,
const std::optional<BoT>&
bo)
205 dtoValid =
bo.has_value();
216 template <
class DtoT,
class BoT>
217 void fromAron(
const DtoT& dto,
bool dtoValid, std::optional<BoT>&
bo)
232 template <
class DtoT,
class BoT>
233 void toAron(std::vector<DtoT>& dtos,
const std::vector<BoT>& bos)
236 dtos.reserve(bos.size());
237 for (
const auto&
bo : bos)
242 template <
class DtoT,
class BoT>
243 void fromAron(
const std::vector<DtoT>& dtos, std::vector<BoT>& bos)
246 bos.reserve(dtos.size());
247 for (
const auto& dto : dtos)
255 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
256 requires (!(detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
257 void toAron(std::map<DtoKeyT, DtoValueT>& dtoMap,
258 const std::map<BoKeyT, BoValueT>& boMap)
261 for (
const auto& [boKey, boValue] : boMap)
265 auto [it, _] = dtoMap.emplace(std::move(dtoKey), DtoValueT{});
266 toAron(it->second, boValue);
269 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
270 requires (!(detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
271 void fromAron(
const std::map<DtoKeyT, DtoValueT>& dtoMap,
272 std::map<BoKeyT, BoValueT>& boMap)
275 for (
const auto& [dtoKey, dtoValue] : dtoMap)
279 auto [it, _] = boMap.emplace(boKey, BoValueT{});
285 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
286 requires (!(detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
287 std::map<DtoKeyT, DtoValueT>
toAron(
const std::map<BoKeyT, BoValueT>& boMap)
289 std::map<DtoKeyT, DtoValueT> dtoMap;
317 template <
class DtoT,
class BoT>
320 return armarx::aron::toAron<DtoT, BoT>(
bo);
322 template <
class BoT,
class DtoT>
325 return armarx::aron::fromAron<BoT, DtoT>(dto);
329 template <
class DtoT,
class BoT>
330 void toAron(DtoT& dto,
const std::unique_ptr<BoT>&
bo)
334 template <
class DtoT,
class BoT>
341 template <
class DtoT,
class BoT>
342 void toAron(std::optional<DtoT>& dto,
const std::optional<BoT>&
bo)
346 template <
class DtoT,
class BoT>
347 void fromAron(
const std::optional<DtoT>& dto, std::optional<BoT>&
bo)
353 template <
class DtoT,
class BoT>
354 void toAron(DtoT& dto,
bool& dtoValid,
const BoT&
bo,
bool boValid)
358 template <
class DtoT,
class BoT>
359 void fromAron(
const DtoT& dto,
bool dtoValid, BoT&
bo,
bool& boValid)
364 template <
class DtoT,
class BoT>
365 void toAron(DtoT& dto,
bool& dtoValid,
const std::optional<BoT>&
bo)
369 template <
class DtoT,
class BoT>
370 void fromAron(
const DtoT& dto,
bool dtoValid, std::optional<BoT>&
bo)
376 template <
class DtoT,
class BoT>
377 requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
378 void toAron(std::vector<DtoT>& dtos,
const std::vector<BoT>& bos)
382 template <
class DtoT,
class BoT>
383 requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
384 void fromAron(
const std::vector<DtoT>& dtos, std::vector<BoT>& bos)
389 template <
class DtoT,
class BoT>
390 requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
391 std::vector<DtoT>
toAron(
const std::vector<BoT>& bos)
393 return armarx::aron::toAron<DtoT, BoT>(bos);
398 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
399 requires (!(aron::detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and aron::detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
400 void toAron(std::map<DtoKeyT, DtoValueT>& dtoMap,
const std::map<BoKeyT, BoValueT>& boMap)
404 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
405 requires (!(aron::detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and aron::detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
406 void fromAron(
const std::map<DtoKeyT, DtoValueT>& dtoMap, std::map<BoKeyT, BoValueT>& boMap)
412 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
413 requires (!(aron::detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and aron::detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
414 std::map<DtoKeyT, DtoValueT>
toAron(
const std::map<BoKeyT, BoValueT>& boMap)
416 armarx::aron::toAron<DtoKeyT, DtoValueT, BoKeyT, BoValueT>(boMap);
430 template <
typename T>
446 template <
typename T>
auto toAron(
const std::vector<T>&
v)
448 std::vector<decltype(
toAron(
T()))> r;