From 08fbf9fb3efdf2ed40757cd7b9cb29dbab317284 Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Mon, 12 Jul 2021 09:27:56 +0200 Subject: [PATCH] Add toIce/fromIce for boost::container_flat_map (not used atm) --- .../RobotAPI/libraries/armem/CMakeLists.txt | 1 + .../core/ice_conversions_boost_templates.h | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 source/RobotAPI/libraries/armem/core/ice_conversions_boost_templates.h diff --git a/source/RobotAPI/libraries/armem/CMakeLists.txt b/source/RobotAPI/libraries/armem/CMakeLists.txt index 38d9515cc..73d3ba403 100644 --- a/source/RobotAPI/libraries/armem/CMakeLists.txt +++ b/source/RobotAPI/libraries/armem/CMakeLists.txt @@ -139,6 +139,7 @@ set(LIB_HEADERS core/aron_conversions.h core/json_conversions.h core/ice_conversions.h + core/ice_conversions_boost_templates.h core/ice_conversions_templates.h core/error.h diff --git a/source/RobotAPI/libraries/armem/core/ice_conversions_boost_templates.h b/source/RobotAPI/libraries/armem/core/ice_conversions_boost_templates.h new file mode 100644 index 000000000..7b6681236 --- /dev/null +++ b/source/RobotAPI/libraries/armem/core/ice_conversions_boost_templates.h @@ -0,0 +1,34 @@ +#pragma once + +#include <map> + +#include <boost/container/flat_map.hpp> + + +namespace armarx::armem +{ + // std::map <-> boost::container::flat_map + + template <class IceKeyT, class IceValueT, class CppKeyT, class CppValueT> + void toIce(std::map<IceKeyT, IceValueT>& iceMap, + const boost::container::flat_map<CppKeyT, CppValueT>& cppMap) + { + iceMap.clear(); + for (const auto& [key, value] : cppMap) + { + iceMap.emplace(toIce<IceKeyT>(key), toIce<IceValueT>(value)); + } + } + + template <class IceKeyT, class IceValueT, class CppKeyT, class CppValueT> + void fromIce(const std::map<IceKeyT, IceValueT>& iceMap, + boost::container::flat_map<CppKeyT, CppValueT>& cppMap) + { + cppMap.clear(); + for (const auto& [key, value] : iceMap) + { + cppMap.emplace(fromIce<CppKeyT>(key), fromIce<CppValueT>(value)); + } + } + +} -- GitLab