From 1a609ce322997fb8d7d4af0419c8b2787466e141 Mon Sep 17 00:00:00 2001
From: Mirko Waechter <mirko.waechter@kit.edu>
Date: Fri, 16 Nov 2018 11:40:01 +0100
Subject: [PATCH] Trajectory: added possibility to clone only meta data

---
 source/RobotAPI/libraries/core/Trajectory.cpp | 16 +++++++++++++---
 source/RobotAPI/libraries/core/Trajectory.h   |  3 ++-
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/source/RobotAPI/libraries/core/Trajectory.cpp b/source/RobotAPI/libraries/core/Trajectory.cpp
index 1d85531ea..404379ab6 100644
--- a/source/RobotAPI/libraries/core/Trajectory.cpp
+++ b/source/RobotAPI/libraries/core/Trajectory.cpp
@@ -131,6 +131,13 @@ namespace armarx
         return new Trajectory(*this);
     }
 
+    TrajectoryPtr Trajectory::cloneMetaData() const
+    {
+        TrajectoryPtr t = new Trajectory();
+        CopyMetaData(*this, *t);
+        return t;
+    }
+
     std::string Trajectory::output(const Ice::Current&) const
     {
 
@@ -1647,11 +1654,14 @@ namespace armarx
     }
 
 
-    void Trajectory::clear()
+    void Trajectory::clear(bool keepMetaData)
     {
         dataMap.erase(dataMap.begin(), dataMap.end());
-        dimensionNames.clear();
-        limitless.clear();
+        if (!keepMetaData)
+        {
+            dimensionNames.clear();
+            limitless.clear();
+        }
     }
 
 
diff --git a/source/RobotAPI/libraries/core/Trajectory.h b/source/RobotAPI/libraries/core/Trajectory.h
index 5f7613bdc..15de38e07 100644
--- a/source/RobotAPI/libraries/core/Trajectory.h
+++ b/source/RobotAPI/libraries/core/Trajectory.h
@@ -398,7 +398,7 @@ namespace armarx
         static void CopyData(const Trajectory& source, Trajectory& destination);
         static void CopyMetaData(const Trajectory& source, Trajectory& destination);
 
-        void clear();
+        void clear(bool keepMetaData = false);
         void setPositionEntry(const double t, const size_t dimIndex, const double& y);
         void setEntries(const double t, const size_t dimIndex, const Ice::DoubleSeq& y);
         bool dataExists(double t, size_t dimension = 0, size_t derivation = 0) const;
@@ -417,6 +417,7 @@ namespace armarx
 
         // VariantDataClass interface
         VariantDataClassPtr clone(const Ice::Current& c = Ice::Current()) const override;
+        TrajectoryPtr cloneMetaData() const;
         std::string output(const Ice::Current& c = Ice::Current()) const override;
         Ice::Int getType(const Ice::Current& c = Ice::Current()) const override;
         bool validate(const Ice::Current& c = Ice::Current()) override;
-- 
GitLab