From efe131f3e382bd21a502880c1c2ba63dfcdc03cf Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Mon, 9 Aug 2021 14:40:29 +0200
Subject: [PATCH] Add forward declarations headers

---
 .../RobotAPI/libraries/armem/CMakeLists.txt   |  4 ++
 .../armem/core/forward_declarations.h         | 52 +++++++++++++++++++
 .../armem/server/forward_declarations.h       | 18 +++++++
 .../armem/server/wm/memory_definitions.h      |  1 -
 4 files changed, 74 insertions(+), 1 deletion(-)
 create mode 100644 source/RobotAPI/libraries/armem/core/forward_declarations.h
 create mode 100644 source/RobotAPI/libraries/armem/server/forward_declarations.h

diff --git a/source/RobotAPI/libraries/armem/CMakeLists.txt b/source/RobotAPI/libraries/armem/CMakeLists.txt
index f4f2f66c9..457c62565 100644
--- a/source/RobotAPI/libraries/armem/CMakeLists.txt
+++ b/source/RobotAPI/libraries/armem/CMakeLists.txt
@@ -119,6 +119,8 @@ set(LIB_FILES
 
 set(LIB_HEADERS
     core.h
+    core/forward_declarations.h
+
     core/Commit.h
     core/DataMode.h
     core/MemoryID.h
@@ -200,6 +202,8 @@ set(LIB_HEADERS
     client/util/SimpleWriterBase.h
 
     server.h
+    server/forward_declarations.h
+
     server/ComponentPlugin.h
     server/MemoryToIceAdapter.h
     server/MemoryRemoteGui.h
diff --git a/source/RobotAPI/libraries/armem/core/forward_declarations.h b/source/RobotAPI/libraries/armem/core/forward_declarations.h
new file mode 100644
index 000000000..761a85131
--- /dev/null
+++ b/source/RobotAPI/libraries/armem/core/forward_declarations.h
@@ -0,0 +1,52 @@
+#pragma once
+
+
+namespace armarx::armem
+{
+    // class Time;  // Cannot be forward declared (it's a typedef)
+
+    class MemoryID;
+    class Commit;
+    class EntityUpdate;
+    class CommitResult;
+    class EntityUpdateResult;
+}
+
+namespace armarx::armem::base
+{
+    struct NoData;
+    struct EntityInstanceMetadata;
+
+    template <class _DataT, class _MetadataT>
+    class EntityInstanceBase;
+    template <class _EntityInstanceT, class _Derived>
+    class EntitySnapshotBase;
+    template <class _EntitySnapshotT, class _Derived>
+    class EntityBase;
+    template <class _EntityT, class _Derived>
+    class ProviderSegmentBase;
+    template <class _ProviderSegmentT, class _Derived>
+    class CoreSegmentBase;
+    template <class _CoreSegmentT, class _Derived>
+    class MemoryBase;
+}
+
+namespace armarx::armem::wm
+{
+    class EntityInstance;
+    class EntitySnapshot;
+    class Entity;
+    class ProviderSegment;
+    class CoreSegment;
+    class Memory;
+}
+
+namespace armarx::armem::server::wm
+{
+    using EntityInstance = armem::wm::EntityInstance;
+    using EntitySnapshot = armem::wm::EntitySnapshot;
+    class Entity;
+    class ProviderSegment;
+    class CoreSegment;
+    class Memory;
+}
diff --git a/source/RobotAPI/libraries/armem/server/forward_declarations.h b/source/RobotAPI/libraries/armem/server/forward_declarations.h
new file mode 100644
index 000000000..6872e2584
--- /dev/null
+++ b/source/RobotAPI/libraries/armem/server/forward_declarations.h
@@ -0,0 +1,18 @@
+#pragma once
+
+#include <RobotAPI/libraries/armem/core/forward_declarations.h>
+
+
+namespace armarx::armem::server
+{
+    class MemoryToIceAdapter;
+}
+namespace armarx::armem::server::wm
+{
+    using EntityInstance = armem::wm::EntityInstance;
+    using EntitySnapshot = armem::wm::EntitySnapshot;
+    class Entity;
+    class ProviderSegment;
+    class CoreSegment;
+    class Memory;
+}
diff --git a/source/RobotAPI/libraries/armem/server/wm/memory_definitions.h b/source/RobotAPI/libraries/armem/server/wm/memory_definitions.h
index cf54d95fe..4eb6fdbb3 100644
--- a/source/RobotAPI/libraries/armem/server/wm/memory_definitions.h
+++ b/source/RobotAPI/libraries/armem/server/wm/memory_definitions.h
@@ -16,7 +16,6 @@
 
 namespace armarx::armem::server::wm
 {
-
     using EntityInstanceMetadata = base::EntityInstanceMetadata;
     using EntityInstanceData = armarx::aron::datanavigator::DictNavigator;
     using EntityInstanceDataPtr = armarx::aron::datanavigator::DictNavigatorPtr;
-- 
GitLab