From 7f1232d46228c85b326dcaa574675c251c29b039 Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Tue, 31 Oct 2023 11:11:14 +0100
Subject: [PATCH] Add json conversions for arondto::FrameID

---
 .../libraries/aron/common/CMakeLists.txt        |  2 ++
 .../aron/common/forward_declarations.h          |  7 ++++---
 .../libraries/aron/common/json_conversions.h    |  1 +
 .../aron/common/json_conversions/framed.cpp     | 17 +++++++++++++++++
 .../aron/common/json_conversions/framed.h       | 12 ++++++++++++
 5 files changed, 36 insertions(+), 3 deletions(-)
 create mode 100644 source/RobotAPI/libraries/aron/common/json_conversions/framed.cpp
 create mode 100644 source/RobotAPI/libraries/aron/common/json_conversions/framed.h

diff --git a/source/RobotAPI/libraries/aron/common/CMakeLists.txt b/source/RobotAPI/libraries/aron/common/CMakeLists.txt
index f8109b4a3..36cbeb1f8 100644
--- a/source/RobotAPI/libraries/aron/common/CMakeLists.txt
+++ b/source/RobotAPI/libraries/aron/common/CMakeLists.txt
@@ -28,6 +28,7 @@ armarx_add_library(
         aron_conversions/eigen.h
 
         json_conversions/armarx.h
+        json_conversions/framed.h
 
         rw/time.h
         rw/eigen.h
@@ -47,6 +48,7 @@ armarx_add_library(
         aron_conversions/eigen.cpp
 
         json_conversions/armarx.cpp
+        json_conversions/framed.cpp
 
         rw/time.cpp
         rw/eigen.cpp
diff --git a/source/RobotAPI/libraries/aron/common/forward_declarations.h b/source/RobotAPI/libraries/aron/common/forward_declarations.h
index 626147c3f..d3c7df9f8 100644
--- a/source/RobotAPI/libraries/aron/common/forward_declarations.h
+++ b/source/RobotAPI/libraries/aron/common/forward_declarations.h
@@ -1,13 +1,14 @@
 #pragma once
 
-
 namespace simox::arondto
 {
     class AxisAlignedBoundingBox;
     class Color;
     class OrientedBox;
-}
+} // namespace simox::arondto
+
 namespace armarx::arondto
 {
     class Names;
-}
+    class FrameID;
+} // namespace armarx::arondto
diff --git a/source/RobotAPI/libraries/aron/common/json_conversions.h b/source/RobotAPI/libraries/aron/common/json_conversions.h
index a56bd4428..b29300e6c 100644
--- a/source/RobotAPI/libraries/aron/common/json_conversions.h
+++ b/source/RobotAPI/libraries/aron/common/json_conversions.h
@@ -1,3 +1,4 @@
 #pragma once
 
 #include "json_conversions/armarx.h"
+#include "json_conversions/framed.h"
diff --git a/source/RobotAPI/libraries/aron/common/json_conversions/framed.cpp b/source/RobotAPI/libraries/aron/common/json_conversions/framed.cpp
new file mode 100644
index 000000000..fa1cf6ae4
--- /dev/null
+++ b/source/RobotAPI/libraries/aron/common/json_conversions/framed.cpp
@@ -0,0 +1,17 @@
+#include "framed.h"
+
+#include <RobotAPI/libraries/aron/common/aron/framed.aron.generated.h>
+
+void
+armarx::arondto::to_json(nlohmann::json& j, const FrameID& bo)
+{
+    j["agent"] = bo.agent;
+    j["frame"] = bo.frame;
+}
+
+void
+armarx::arondto::from_json(const nlohmann::json& j, FrameID& bo)
+{
+    j.at("agent").get_to(bo.agent);
+    j.at("frame").get_to(bo.frame);
+}
diff --git a/source/RobotAPI/libraries/aron/common/json_conversions/framed.h b/source/RobotAPI/libraries/aron/common/json_conversions/framed.h
new file mode 100644
index 000000000..fb7314e83
--- /dev/null
+++ b/source/RobotAPI/libraries/aron/common/json_conversions/framed.h
@@ -0,0 +1,12 @@
+#pragma once
+
+#include <SimoxUtility/json/json.h>
+
+#include <RobotAPI/libraries/aron/common/forward_declarations.h>
+
+namespace armarx::arondto
+{
+    void to_json(nlohmann::json& j, const FrameID& bo);
+    void from_json(const nlohmann::json& j, FrameID& bo);
+
+} // namespace armarx::arondto
-- 
GitLab