From 6b773254786abc0957f555ec9830a368b3f9861b Mon Sep 17 00:00:00 2001
From: Raphael <ufdrv@student.kit.edu>
Date: Fri, 20 Jan 2017 16:19:26 +0100
Subject: [PATCH] now using pure virtual functions in target base (instead of
 ducktyping)

---
 source/RobotAPI/libraries/Controllers/LVL0Controller.h        | 2 +-
 .../libraries/Controllers/Targets/JointPositionTarget.h       | 4 ++--
 .../Controllers/Targets/JointPositionVelocityTarget.h         | 4 ++--
 .../RobotAPI/libraries/Controllers/Targets/JointTargetBase.h  | 2 ++
 .../libraries/Controllers/Targets/JointTorqueTarget.h         | 4 ++--
 .../libraries/Controllers/Targets/JointVelocityTarget.h       | 4 ++--
 6 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/source/RobotAPI/libraries/Controllers/LVL0Controller.h b/source/RobotAPI/libraries/Controllers/LVL0Controller.h
index e38510288..fafa5b0ac 100644
--- a/source/RobotAPI/libraries/Controllers/LVL0Controller.h
+++ b/source/RobotAPI/libraries/Controllers/LVL0Controller.h
@@ -50,7 +50,7 @@ namespace armarx
 
         TargetType* getTarget()
         {
-            return target;
+            return & target;
         }
 
         void resetTarget()
diff --git a/source/RobotAPI/libraries/Controllers/Targets/JointPositionTarget.h b/source/RobotAPI/libraries/Controllers/Targets/JointPositionTarget.h
index 9bc7d9d13..39c788d5d 100644
--- a/source/RobotAPI/libraries/Controllers/Targets/JointPositionTarget.h
+++ b/source/RobotAPI/libraries/Controllers/Targets/JointPositionTarget.h
@@ -46,11 +46,11 @@ namespace armarx
         {
             return ePositionControl;
         }
-        virtual void reset()
+        virtual void reset() override
         {
             position = ControllerConstatns::ValueNotSetNaN;
         }
-        bool isValid() const
+        virtual bool isValid() const override
         {
             return std::isfinite(position);
         }
diff --git a/source/RobotAPI/libraries/Controllers/Targets/JointPositionVelocityTarget.h b/source/RobotAPI/libraries/Controllers/Targets/JointPositionVelocityTarget.h
index d2622cc91..5cd022809 100644
--- a/source/RobotAPI/libraries/Controllers/Targets/JointPositionVelocityTarget.h
+++ b/source/RobotAPI/libraries/Controllers/Targets/JointPositionVelocityTarget.h
@@ -47,12 +47,12 @@ namespace armarx
         {
             return ePositionVelocityControl;
         }
-        virtual void reset()
+        virtual void reset() override
         {
             position = ControllerConstatns::ValueNotSetNaN;
             velocity = ControllerConstatns::ValueNotSetNaN;
         }
-        bool isValid() const
+        virtual bool isValid() const override
         {
             return std::isfinite(position) && std::isfinite(velocity);
         }
diff --git a/source/RobotAPI/libraries/Controllers/Targets/JointTargetBase.h b/source/RobotAPI/libraries/Controllers/Targets/JointTargetBase.h
index 0dc9ee2b6..d7077bde9 100644
--- a/source/RobotAPI/libraries/Controllers/Targets/JointTargetBase.h
+++ b/source/RobotAPI/libraries/Controllers/Targets/JointTargetBase.h
@@ -43,6 +43,8 @@ namespace armarx
     {
     public:
         virtual ControlMode getType() const = 0;
+        virtual void reset() = 0;
+        virtual bool isValid() const = 0;
     };
 
 }
diff --git a/source/RobotAPI/libraries/Controllers/Targets/JointTorqueTarget.h b/source/RobotAPI/libraries/Controllers/Targets/JointTorqueTarget.h
index 8b4ffad81..84860c756 100644
--- a/source/RobotAPI/libraries/Controllers/Targets/JointTorqueTarget.h
+++ b/source/RobotAPI/libraries/Controllers/Targets/JointTorqueTarget.h
@@ -46,11 +46,11 @@ namespace armarx
         {
             return eTorqueControl;
         }
-        virtual void reset()
+        virtual void reset() override
         {
             torque = ControllerConstatns::ValueNotSetNaN;
         }
-        bool isValid() const
+        virtual bool isValid() const override
         {
             return std::isfinite(torque);
         }
diff --git a/source/RobotAPI/libraries/Controllers/Targets/JointVelocityTarget.h b/source/RobotAPI/libraries/Controllers/Targets/JointVelocityTarget.h
index 8f44b2c05..88265541b 100644
--- a/source/RobotAPI/libraries/Controllers/Targets/JointVelocityTarget.h
+++ b/source/RobotAPI/libraries/Controllers/Targets/JointVelocityTarget.h
@@ -46,11 +46,11 @@ namespace armarx
         {
             return eVelocityControl;
         }
-        virtual void reset()
+        virtual void reset() override
         {
             velocity = ControllerConstatns::ValueNotSetNaN;
         }
-        bool isValid() const
+        virtual bool isValid() const override
         {
             return std::isfinite(velocity);
         }
-- 
GitLab