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 requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
128 void toAron(std::optional<DtoT>& dto,
const std::optional<BoT>&
bo)
141 template <
class DtoT,
class BoT>
142 requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
143 void fromAron(
const std::optional<DtoT>& dto, std::optional<BoT>&
bo)
158 template <
class DtoT,
class BoT>
160 void toAron(std::optional<DtoT>& dto,
const BoT&
bo)
165 template <
class DtoT,
class BoT>
167 void fromAron(DtoT& dto,
const std::optional<BoT>&
bo)
175 template <
class DtoT,
class BoT>
176 void toAron(DtoT& dto,
bool& dtoValid,
const BoT&
bo,
bool boValid)
190 template <
class DtoT,
class BoT>
191 void fromAron(
const DtoT& dto,
bool dtoValid, BoT&
bo,
bool& boValid)
204 template <
class DtoT,
class BoT>
205 void toAron(DtoT& dto,
bool& dtoValid,
const std::optional<BoT>&
bo)
207 dtoValid =
bo.has_value();
218 template <
class DtoT,
class BoT>
219 void fromAron(
const DtoT& dto,
bool dtoValid, std::optional<BoT>&
bo)
234 template <
class DtoT,
class BoT>
235 requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
236 void toAron(std::vector<DtoT>& dtos,
const std::vector<BoT>& bos)
239 dtos.reserve(bos.size());
240 for (
const auto&
bo : bos)
245 template <
class DtoT,
class BoT>
246 requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
247 void fromAron(
const std::vector<DtoT>& dtos, std::vector<BoT>& bos)
250 bos.reserve(dtos.size());
251 for (
const auto& dto : dtos)
259 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
260 requires (!(detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
261 void toAron(std::map<DtoKeyT, DtoValueT>& dtoMap,
262 const std::map<BoKeyT, BoValueT>& boMap)
265 for (
const auto& [boKey, boValue] : boMap)
269 auto [it, _] = dtoMap.emplace(std::move(dtoKey), DtoValueT{});
270 toAron(it->second, boValue);
273 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
274 requires (!(detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
275 void fromAron(
const std::map<DtoKeyT, DtoValueT>& dtoMap,
276 std::map<BoKeyT, BoValueT>& boMap)
279 for (
const auto& [dtoKey, dtoValue] : dtoMap)
283 auto [it, _] = boMap.emplace(boKey, BoValueT{});
289 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
290 requires (!(detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
291 std::map<DtoKeyT, DtoValueT>
toAron(
const std::map<BoKeyT, BoValueT>& boMap)
293 std::map<DtoKeyT, DtoValueT> dtoMap;
321 template <
class DtoT,
class BoT>
324 return armarx::aron::toAron<DtoT, BoT>(
bo);
326 template <
class BoT,
class DtoT>
329 return armarx::aron::fromAron<BoT, DtoT>(dto);
333 template <
class DtoT,
class BoT>
334 void toAron(DtoT& dto,
const std::unique_ptr<BoT>&
bo)
338 template <
class DtoT,
class BoT>
345 template <
class DtoT,
class BoT>
346 requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
347 void toAron(std::optional<DtoT>& dto,
const std::optional<BoT>&
bo)
351 template <
class DtoT,
class BoT>
352 requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
353 void fromAron(
const std::optional<DtoT>& dto, std::optional<BoT>&
bo)
359 template <
class DtoT,
class BoT>
360 void toAron(DtoT& dto,
bool& dtoValid,
const BoT&
bo,
bool boValid)
364 template <
class DtoT,
class BoT>
365 void fromAron(
const DtoT& dto,
bool dtoValid, BoT&
bo,
bool& boValid)
370 template <
class DtoT,
class BoT>
371 void toAron(DtoT& dto,
bool& dtoValid,
const std::optional<BoT>&
bo)
375 template <
class DtoT,
class BoT>
376 void fromAron(
const DtoT& dto,
bool dtoValid, std::optional<BoT>&
bo)
382 template <
class DtoT,
class BoT>
383 requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
384 void toAron(std::vector<DtoT>& dtos,
const std::vector<BoT>& bos)
388 template <
class DtoT,
class BoT>
389 requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
390 void fromAron(
const std::vector<DtoT>& dtos, std::vector<BoT>& bos)
395 template <
class DtoT,
class BoT>
396 requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
397 std::vector<DtoT>
toAron(
const std::vector<BoT>& bos)
399 return armarx::aron::toAron<DtoT, BoT>(bos);
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 toAron(std::map<DtoKeyT, DtoValueT>& dtoMap,
const std::map<BoKeyT, BoValueT>& boMap)
410 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
411 requires (!(aron::detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and aron::detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
412 void fromAron(
const std::map<DtoKeyT, DtoValueT>& dtoMap, std::map<BoKeyT, BoValueT>& boMap)
418 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
419 requires (!(aron::detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and aron::detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
420 std::map<DtoKeyT, DtoValueT>
toAron(
const std::map<BoKeyT, BoValueT>& boMap)
422 armarx::aron::toAron<DtoKeyT, DtoValueT, BoKeyT, BoValueT>(boMap);
436 template <
typename T>
452 template <
typename T>
auto toAron(
const std::vector<T>&
v)
454 std::vector<decltype(
toAron(
T()))> r;