From 3aa5d2670aa332284d12ee5dc173052a58f25237 Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Fri, 9 Oct 2020 16:21:38 +0200 Subject: [PATCH] Move and define ice_conversions in ArmarXObjects library --- .../ObjectPoseObserver/ice_conversions.cpp | 11 --- .../ObjectPoseObserver/ice_conversions.h | 2 - .../libraries/ArmarXObjects/CMakeLists.txt | 2 + .../ArmarXObjects/ice_conversions.cpp | 68 +++++++++++++++++++ .../libraries/ArmarXObjects/ice_conversions.h | 28 ++++++++ 5 files changed, 98 insertions(+), 13 deletions(-) create mode 100644 source/RobotAPI/libraries/ArmarXObjects/ice_conversions.cpp create mode 100644 source/RobotAPI/libraries/ArmarXObjects/ice_conversions.h diff --git a/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.cpp b/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.cpp index fb5a3bebe..0f520c8fc 100644 --- a/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.cpp +++ b/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.cpp @@ -34,17 +34,6 @@ namespace armarx return cast->toEigen(); } - - std::ostream& objpose::operator<<(std::ostream& os, const ObjectID& id) - { - os << "'" << id.dataset << "/" << id.className; - if (!id.instanceName.empty()) - { - os << "/" << id.instanceName; - } - return os << "'"; - } - const simox::meta::EnumNames<objpose::ObjectTypeEnum> objpose::ObjectTypeEnumNames = { { objpose::ObjectTypeEnum::AnyObject, "AnyObject" }, diff --git a/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.h b/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.h index 095798070..1cfac6f00 100644 --- a/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.h +++ b/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.h @@ -19,8 +19,6 @@ namespace simox namespace armarx::objpose { - std::ostream& operator<<(std::ostream& os, const ObjectID& id); - extern const simox::meta::EnumNames<objpose::ObjectTypeEnum> ObjectTypeEnumNames; diff --git a/source/RobotAPI/libraries/ArmarXObjects/CMakeLists.txt b/source/RobotAPI/libraries/ArmarXObjects/CMakeLists.txt index 8bda146bb..1eb0e4d81 100644 --- a/source/RobotAPI/libraries/ArmarXObjects/CMakeLists.txt +++ b/source/RobotAPI/libraries/ArmarXObjects/CMakeLists.txt @@ -13,6 +13,7 @@ set(LIB_FILES ObjectFinder.cpp json_conversions.cpp + ice_conversions.cpp ) set(LIB_HEADERS ArmarXObjects.h @@ -22,6 +23,7 @@ set(LIB_HEADERS ObjectFinder.h json_conversions.h + ice_conversions.h ) diff --git a/source/RobotAPI/libraries/ArmarXObjects/ice_conversions.cpp b/source/RobotAPI/libraries/ArmarXObjects/ice_conversions.cpp new file mode 100644 index 000000000..7dd31ad93 --- /dev/null +++ b/source/RobotAPI/libraries/ArmarXObjects/ice_conversions.cpp @@ -0,0 +1,68 @@ +#include "ice_conversions.h" + + +namespace armarx +{ + std::ostream& data::operator<<(std::ostream& os, const ObjectID& id) + { + os << "'" << id.dataset << "/" << id.className; + if (!id.instanceName.empty()) + { + os << "/" << id.instanceName; + } + return os << "'"; + } + +} + +void armarx::fromIce(const data::ObjectID& ice, ObjectID& id) +{ + id = fromIce(ice); +} + +armarx::ObjectID armarx::fromIce(const data::ObjectID& ice) +{ + return { ice.dataset, ice.className, ice.instanceName }; +} + +void armarx::toIce(data::ObjectID& ice, const ObjectID& id) +{ + ice.dataset = id.dataset(); + ice.className = id.className(); + ice.instanceName = id.instanceName(); +} + +armarx::data::ObjectID armarx::toIce(const ObjectID& id) +{ + data::ObjectID ice; + toIce(ice, id); + return ice; +} + +void armarx::fromIce(const data::ObjectIDSeq& ice, std::vector<ObjectID>& ids) +{ + ids.clear(); + std::transform(ice.begin(), ice.end(), std::back_inserter(ids), + static_cast<ObjectID(*)(const data::ObjectID&)>(&fromIce)); +} + +std::vector<armarx::ObjectID> armarx::fromIce(const data::ObjectIDSeq& ice) +{ + std::vector<ObjectID> ids; + fromIce(ice, ids); + return ids; +} + +void armarx::toIce(data::ObjectIDSeq& ice, const std::vector<ObjectID>& ids) +{ + ice.clear(); + std::transform(ids.begin(), ids.end(), std::back_inserter(ice), + static_cast<data::ObjectID(*)(const ObjectID&)>(&toIce)); +} + +armarx::data::ObjectIDSeq armarx::toIce(const std::vector<ObjectID>& ids) +{ + data::ObjectIDSeq ice; + toIce(ice, ids); + return ice; +} diff --git a/source/RobotAPI/libraries/ArmarXObjects/ice_conversions.h b/source/RobotAPI/libraries/ArmarXObjects/ice_conversions.h new file mode 100644 index 000000000..e17f37e35 --- /dev/null +++ b/source/RobotAPI/libraries/ArmarXObjects/ice_conversions.h @@ -0,0 +1,28 @@ +#pragma once + +#include <RobotAPI/interface/ArmarXObjects/ArmarXObjectsTypes.h> + +#include "ObjectID.h" + + +namespace armarx::data +{ + std::ostream& operator<<(std::ostream& os, const ObjectID& id); +} + +namespace armarx +{ + + void fromIce(const data::ObjectID& ice, ObjectID& id); + ObjectID fromIce(const data::ObjectID& id); + + void fromIce(const data::ObjectIDSeq& ice, std::vector<ObjectID>& ids); + std::vector<ObjectID> fromIce(const data::ObjectIDSeq& id); + + void toIce(data::ObjectID& ice, const ObjectID& ids); + data::ObjectID toIce(const ObjectID& ids); + + void toIce(data::ObjectIDSeq& ice, const std::vector<ObjectID>& ids); + data::ObjectIDSeq toIce(const std::vector<ObjectID>& ids); + +} -- GitLab