diff --git a/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.cpp b/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.cpp index fb5a3bebe7c005c8799398df79909922ed360e9a..0f520c8fcc12391e7b47474248043dbafac0d73b 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 0957980702de8cb17bf4c59214330cc9015ab99d..1cfac6f00fa39c73cd7f74db6e68fd6d3b14d30b 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 8bda146bb3a89d2ccd32fd3ffb54ac612bbdfb84..1eb0e4d8158f766649e7b0089e7001761241e664 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 0000000000000000000000000000000000000000..7dd31ad9379e40a716869631b72ae3a6a7fb99a4 --- /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 0000000000000000000000000000000000000000..e17f37e35e1ff217d3fe8baab719ccaefe2d88b6 --- /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); + +}