17 template <
typename DtoT,
typename BoT>
25 template <
class... Ts>
90 template <
class DtoT,
class BoT>
99 template <
class BoT,
class DtoT>
109 template <
class DtoT,
class BoT>
119 template <
class DtoT,
class BoT>
123 bo = std::make_unique<BoT>();
128 template <
class DtoT,
class BoT>
129 requires(!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
131 toAron(std::optional<DtoT>& dto,
const std::optional<BoT>&
bo)
144 template <
class DtoT,
class BoT>
145 requires(!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
147 fromAron(
const std::optional<DtoT>& dto, std::optional<BoT>&
bo)
161 template <
class DtoT,
class BoT>
164 toAron(std::optional<DtoT>& dto,
const BoT&
bo)
170 template <
class DtoT,
class BoT>
173 fromAron(DtoT& dto,
const std::optional<BoT>&
bo)
180 template <
class DtoT,
class BoT>
182 toAron(DtoT& dto,
bool& dtoValid,
const BoT&
bo,
bool boValid)
195 template <
class DtoT,
class BoT>
197 fromAron(
const DtoT& dto,
bool dtoValid, BoT&
bo,
bool& boValid)
210 template <
class DtoT,
class BoT>
212 toAron(DtoT& dto,
bool& dtoValid,
const std::optional<BoT>&
bo)
214 dtoValid =
bo.has_value();
225 template <
class DtoT,
class BoT>
227 fromAron(
const DtoT& dto,
bool dtoValid, std::optional<BoT>&
bo)
241 template <
class DtoT,
class BoT>
242 requires(!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
244 toAron(std::vector<DtoT>& dtos,
const std::vector<BoT>& bos)
247 dtos.reserve(bos.size());
248 for (
const auto&
bo : bos)
254 template <
class DtoT,
class BoT>
255 requires(!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
257 fromAron(
const std::vector<DtoT>& dtos, std::vector<BoT>& bos)
260 bos.reserve(dtos.size());
261 for (
const auto& dto : dtos)
268 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
269 requires(!(detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and
270 detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
272 toAron(std::map<DtoKeyT, DtoValueT>& dtoMap,
const std::map<BoKeyT, BoValueT>& boMap)
275 for (
const auto& [boKey, boValue] : boMap)
279 auto [it, _] = dtoMap.emplace(std::move(dtoKey), DtoValueT{});
280 toAron(it->second, boValue);
284 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
285 requires(!(detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and
286 detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
288 fromAron(
const std::map<DtoKeyT, DtoValueT>& dtoMap, std::map<BoKeyT, BoValueT>& boMap)
291 for (
const auto& [dtoKey, dtoValue] : dtoMap)
295 auto [it, _] = boMap.emplace(boKey, BoValueT{});
300 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
301 requires(!(detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and
302 detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
303 std::map<DtoKeyT, DtoValueT>
304 toAron(
const std::map<BoKeyT, BoValueT>& boMap)
306 std::map<DtoKeyT, DtoValueT> dtoMap;
332 template <
class DtoT,
class BoT>
336 return armarx::aron::toAron<DtoT, BoT>(
bo);
339 template <
class BoT,
class DtoT>
343 return armarx::aron::fromAron<BoT, DtoT>(dto);
347 template <
class DtoT,
class BoT>
354 template <
class DtoT,
class BoT>
362 template <
class DtoT,
class BoT>
363 requires(!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
365 toAron(std::optional<DtoT>& dto,
const std::optional<BoT>&
bo)
370 template <
class DtoT,
class BoT>
371 requires(!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
373 fromAron(
const std::optional<DtoT>& dto, std::optional<BoT>&
bo)
379 template <
class DtoT,
class BoT>
381 toAron(DtoT& dto,
bool& dtoValid,
const BoT&
bo,
bool boValid)
386 template <
class DtoT,
class BoT>
388 fromAron(
const DtoT& dto,
bool dtoValid, BoT&
bo,
bool& boValid)
393 template <
class DtoT,
class BoT>
395 toAron(DtoT& dto,
bool& dtoValid,
const std::optional<BoT>&
bo)
400 template <
class DtoT,
class BoT>
402 fromAron(
const DtoT& dto,
bool dtoValid, std::optional<BoT>&
bo)
408 template <
class DtoT,
class BoT>
409 requires(!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
411 toAron(std::vector<DtoT>& dtos,
const std::vector<BoT>& bos)
416 template <
class DtoT,
class BoT>
417 requires(!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
419 fromAron(
const std::vector<DtoT>& dtos, std::vector<BoT>& bos)
424 template <
class DtoT,
class BoT>
425 requires(!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
427 toAron(
const std::vector<BoT>& bos)
429 return armarx::aron::toAron<DtoT, BoT>(bos);
433 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
434 requires(!(aron::detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and
435 aron::detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
437 toAron(std::map<DtoKeyT, DtoValueT>& dtoMap,
const std::map<BoKeyT, BoValueT>& boMap)
442 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
443 requires(!(aron::detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and
444 aron::detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
446 fromAron(
const std::map<DtoKeyT, DtoValueT>& dtoMap, std::map<BoKeyT, BoValueT>& boMap)
451 template <
class DtoKeyT,
class DtoValueT,
class BoKeyT,
class BoValueT>
452 requires(!(aron::detail::DtoAndBoAreSame<DtoKeyT, BoKeyT> and
453 aron::detail::DtoAndBoAreSame<DtoValueT, BoValueT>))
454 std::map<DtoKeyT, DtoValueT>
455 toAron(
const std::map<BoKeyT, BoValueT>& boMap)
457 armarx::aron::toAron<DtoKeyT, DtoValueT, BoKeyT, BoValueT>(boMap);
471 template <
typename T>
479 v.begin(),
v.end(), std::back_inserter(r), [](
const T& t) { return fromAron(t); });
484 template <
typename T>
488 std::vector<decltype(
toAron(
T()))> r;
492 v.begin(),
v.end(), std::back_inserter(r), [](
const T& t) { return toAron(t); });