From b99d96382d7bd538b3cfdf3b48723cad293ea0a3 Mon Sep 17 00:00:00 2001
From: Floris Berendsen <floris.berendsen@gmail.com>
Date: Tue, 17 Nov 2015 17:51:29 +0100
Subject: [PATCH] COMP: integrated in SuperElastix with initial google tests

---
 .../ComponentInterface/{ => include}/ComponentBase.h  |  4 ++--
 .../{ => include}/Example3rdPartyCode.h               |  0
 .../{ => include}/Example4thPartyCode.h               |  0
 .../{ => include}/GDOptimizer3rdPartyComponent.h      |  2 +-
 .../{ => include}/GDOptimizer4thPartyComponent.h      |  2 +-
 .../ComponentInterface/{ => include}/Interfaces.hxx   |  0
 .../{ => include}/Metric3rdPartyWrapper.h             |  0
 .../{ => include}/Metric4thPartyWrapper.h             |  0
 .../{ => include}/SSDMetric3rdPartyComponent.h        |  2 +-
 .../{ => include}/SSDMetric4thPartyComponent.h        |  2 +-
 .../{ => src}/Example3rdPartyCode.cxx                 |  0
 .../{ => src}/Example4thPartyCode.cxx                 |  0
 .../{ => src}/GDOptimizer3rdPartyComponent.cxx        |  0
 .../{ => src}/GDOptimizer4thPartyComponent.cxx        |  0
 .../{ => src}/Metric3rdPartyWrapper.cxx               |  0
 .../{ => src}/Metric4thPartyWrapper.cxx               |  0
 .../{ => src}/SSDMetric3rdPartyComponent.cxx          |  0
 .../{ => src}/SSDMetric4thPartyComponent.cxx          |  0
 .../{ => src}/componenthandshake.cxx                  |  0
 Modules/Core/elxModuleCore.cmake                      | 11 +++++++++++
 Testing/Unit/CMakeLists.txt                           |  1 +
 21 files changed, 18 insertions(+), 6 deletions(-)
 rename Modules/Core/ComponentInterface/{ => include}/ComponentBase.h (87%)
 rename Modules/Core/ComponentInterface/{ => include}/Example3rdPartyCode.h (100%)
 rename Modules/Core/ComponentInterface/{ => include}/Example4thPartyCode.h (100%)
 rename Modules/Core/ComponentInterface/{ => include}/GDOptimizer3rdPartyComponent.h (94%)
 rename Modules/Core/ComponentInterface/{ => include}/GDOptimizer4thPartyComponent.h (94%)
 rename Modules/Core/ComponentInterface/{ => include}/Interfaces.hxx (100%)
 rename Modules/Core/ComponentInterface/{ => include}/Metric3rdPartyWrapper.h (100%)
 rename Modules/Core/ComponentInterface/{ => include}/Metric4thPartyWrapper.h (100%)
 rename Modules/Core/ComponentInterface/{ => include}/SSDMetric3rdPartyComponent.h (93%)
 rename Modules/Core/ComponentInterface/{ => include}/SSDMetric4thPartyComponent.h (93%)
 rename Modules/Core/ComponentInterface/{ => src}/Example3rdPartyCode.cxx (100%)
 rename Modules/Core/ComponentInterface/{ => src}/Example4thPartyCode.cxx (100%)
 rename Modules/Core/ComponentInterface/{ => src}/GDOptimizer3rdPartyComponent.cxx (100%)
 rename Modules/Core/ComponentInterface/{ => src}/GDOptimizer4thPartyComponent.cxx (100%)
 rename Modules/Core/ComponentInterface/{ => src}/Metric3rdPartyWrapper.cxx (100%)
 rename Modules/Core/ComponentInterface/{ => src}/Metric4thPartyWrapper.cxx (100%)
 rename Modules/Core/ComponentInterface/{ => src}/SSDMetric3rdPartyComponent.cxx (100%)
 rename Modules/Core/ComponentInterface/{ => src}/SSDMetric4thPartyComponent.cxx (100%)
 rename Modules/Core/ComponentInterface/{ => src}/componenthandshake.cxx (100%)

diff --git a/Modules/Core/ComponentInterface/ComponentBase.h b/Modules/Core/ComponentInterface/include/ComponentBase.h
similarity index 87%
rename from Modules/Core/ComponentInterface/ComponentBase.h
rename to Modules/Core/ComponentInterface/include/ComponentBase.h
index 77571d97..1fb89f4a 100644
--- a/Modules/Core/ComponentInterface/ComponentBase.h
+++ b/Modules/Core/ComponentInterface/include/ComponentBase.h
@@ -10,8 +10,8 @@ namespace elx
   class ComponentBase {
   public:
     virtual interfaceStatus ConnectFrom(const char *, ComponentBase*) = 0;
-  protected:
-    virtual ~ComponentBase(){};
+  //protected:
+    virtual ~ComponentBase() {};
   };
 } // end namespace elx
 #endif // #define ComponentBase_h
\ No newline at end of file
diff --git a/Modules/Core/ComponentInterface/Example3rdPartyCode.h b/Modules/Core/ComponentInterface/include/Example3rdPartyCode.h
similarity index 100%
rename from Modules/Core/ComponentInterface/Example3rdPartyCode.h
rename to Modules/Core/ComponentInterface/include/Example3rdPartyCode.h
diff --git a/Modules/Core/ComponentInterface/Example4thPartyCode.h b/Modules/Core/ComponentInterface/include/Example4thPartyCode.h
similarity index 100%
rename from Modules/Core/ComponentInterface/Example4thPartyCode.h
rename to Modules/Core/ComponentInterface/include/Example4thPartyCode.h
diff --git a/Modules/Core/ComponentInterface/GDOptimizer3rdPartyComponent.h b/Modules/Core/ComponentInterface/include/GDOptimizer3rdPartyComponent.h
similarity index 94%
rename from Modules/Core/ComponentInterface/GDOptimizer3rdPartyComponent.h
rename to Modules/Core/ComponentInterface/include/GDOptimizer3rdPartyComponent.h
index c584235d..1d281e9b 100644
--- a/Modules/Core/ComponentInterface/GDOptimizer3rdPartyComponent.h
+++ b/Modules/Core/ComponentInterface/include/GDOptimizer3rdPartyComponent.h
@@ -18,7 +18,7 @@ namespace elx
   {
   public:
     GDOptimizer3rdPartyComponent();
-    ~GDOptimizer3rdPartyComponent();
+    virtual ~GDOptimizer3rdPartyComponent();
     Example3rdParty::GDOptimizer3rdParty* theImplementation;
     Metric3rdPartyWrapper* MetricObject;
     //virtual int ConnectFrom(const char *, ComponentBase*);
diff --git a/Modules/Core/ComponentInterface/GDOptimizer4thPartyComponent.h b/Modules/Core/ComponentInterface/include/GDOptimizer4thPartyComponent.h
similarity index 94%
rename from Modules/Core/ComponentInterface/GDOptimizer4thPartyComponent.h
rename to Modules/Core/ComponentInterface/include/GDOptimizer4thPartyComponent.h
index 29f03e96..eff1bb78 100644
--- a/Modules/Core/ComponentInterface/GDOptimizer4thPartyComponent.h
+++ b/Modules/Core/ComponentInterface/include/GDOptimizer4thPartyComponent.h
@@ -18,7 +18,7 @@ namespace elx
   {
   public:
     GDOptimizer4thPartyComponent();
-    ~GDOptimizer4thPartyComponent();
+    virtual ~GDOptimizer4thPartyComponent();
     Example4thParty::GDOptimizer4thParty* theImplementation;
     Metric4thPartyWrapper* MetricObject;
     //virtual int ConnectFrom(const char *, ComponentBase*);
diff --git a/Modules/Core/ComponentInterface/Interfaces.hxx b/Modules/Core/ComponentInterface/include/Interfaces.hxx
similarity index 100%
rename from Modules/Core/ComponentInterface/Interfaces.hxx
rename to Modules/Core/ComponentInterface/include/Interfaces.hxx
diff --git a/Modules/Core/ComponentInterface/Metric3rdPartyWrapper.h b/Modules/Core/ComponentInterface/include/Metric3rdPartyWrapper.h
similarity index 100%
rename from Modules/Core/ComponentInterface/Metric3rdPartyWrapper.h
rename to Modules/Core/ComponentInterface/include/Metric3rdPartyWrapper.h
diff --git a/Modules/Core/ComponentInterface/Metric4thPartyWrapper.h b/Modules/Core/ComponentInterface/include/Metric4thPartyWrapper.h
similarity index 100%
rename from Modules/Core/ComponentInterface/Metric4thPartyWrapper.h
rename to Modules/Core/ComponentInterface/include/Metric4thPartyWrapper.h
diff --git a/Modules/Core/ComponentInterface/SSDMetric3rdPartyComponent.h b/Modules/Core/ComponentInterface/include/SSDMetric3rdPartyComponent.h
similarity index 93%
rename from Modules/Core/ComponentInterface/SSDMetric3rdPartyComponent.h
rename to Modules/Core/ComponentInterface/include/SSDMetric3rdPartyComponent.h
index e789950a..860398a5 100644
--- a/Modules/Core/ComponentInterface/SSDMetric3rdPartyComponent.h
+++ b/Modules/Core/ComponentInterface/include/SSDMetric3rdPartyComponent.h
@@ -16,7 +16,7 @@ namespace elx
   {
   public:
     SSDMetric3rdPartyComponent();
-    ~SSDMetric3rdPartyComponent();
+    virtual ~SSDMetric3rdPartyComponent();
     Example3rdParty::SSDMetric3rdParty* theImplementation;
     int GetValue();
     int GetDerivative();
diff --git a/Modules/Core/ComponentInterface/SSDMetric4thPartyComponent.h b/Modules/Core/ComponentInterface/include/SSDMetric4thPartyComponent.h
similarity index 93%
rename from Modules/Core/ComponentInterface/SSDMetric4thPartyComponent.h
rename to Modules/Core/ComponentInterface/include/SSDMetric4thPartyComponent.h
index 26685c74..c07ff0ab 100644
--- a/Modules/Core/ComponentInterface/SSDMetric4thPartyComponent.h
+++ b/Modules/Core/ComponentInterface/include/SSDMetric4thPartyComponent.h
@@ -16,7 +16,7 @@ namespace elx
   {
   public:
     SSDMetric4thPartyComponent();
-    ~SSDMetric4thPartyComponent();
+    virtual ~SSDMetric4thPartyComponent();
     Example4thParty::SSDMetric4thParty* theImplementation;
     int GetValue();
   };
diff --git a/Modules/Core/ComponentInterface/Example3rdPartyCode.cxx b/Modules/Core/ComponentInterface/src/Example3rdPartyCode.cxx
similarity index 100%
rename from Modules/Core/ComponentInterface/Example3rdPartyCode.cxx
rename to Modules/Core/ComponentInterface/src/Example3rdPartyCode.cxx
diff --git a/Modules/Core/ComponentInterface/Example4thPartyCode.cxx b/Modules/Core/ComponentInterface/src/Example4thPartyCode.cxx
similarity index 100%
rename from Modules/Core/ComponentInterface/Example4thPartyCode.cxx
rename to Modules/Core/ComponentInterface/src/Example4thPartyCode.cxx
diff --git a/Modules/Core/ComponentInterface/GDOptimizer3rdPartyComponent.cxx b/Modules/Core/ComponentInterface/src/GDOptimizer3rdPartyComponent.cxx
similarity index 100%
rename from Modules/Core/ComponentInterface/GDOptimizer3rdPartyComponent.cxx
rename to Modules/Core/ComponentInterface/src/GDOptimizer3rdPartyComponent.cxx
diff --git a/Modules/Core/ComponentInterface/GDOptimizer4thPartyComponent.cxx b/Modules/Core/ComponentInterface/src/GDOptimizer4thPartyComponent.cxx
similarity index 100%
rename from Modules/Core/ComponentInterface/GDOptimizer4thPartyComponent.cxx
rename to Modules/Core/ComponentInterface/src/GDOptimizer4thPartyComponent.cxx
diff --git a/Modules/Core/ComponentInterface/Metric3rdPartyWrapper.cxx b/Modules/Core/ComponentInterface/src/Metric3rdPartyWrapper.cxx
similarity index 100%
rename from Modules/Core/ComponentInterface/Metric3rdPartyWrapper.cxx
rename to Modules/Core/ComponentInterface/src/Metric3rdPartyWrapper.cxx
diff --git a/Modules/Core/ComponentInterface/Metric4thPartyWrapper.cxx b/Modules/Core/ComponentInterface/src/Metric4thPartyWrapper.cxx
similarity index 100%
rename from Modules/Core/ComponentInterface/Metric4thPartyWrapper.cxx
rename to Modules/Core/ComponentInterface/src/Metric4thPartyWrapper.cxx
diff --git a/Modules/Core/ComponentInterface/SSDMetric3rdPartyComponent.cxx b/Modules/Core/ComponentInterface/src/SSDMetric3rdPartyComponent.cxx
similarity index 100%
rename from Modules/Core/ComponentInterface/SSDMetric3rdPartyComponent.cxx
rename to Modules/Core/ComponentInterface/src/SSDMetric3rdPartyComponent.cxx
diff --git a/Modules/Core/ComponentInterface/SSDMetric4thPartyComponent.cxx b/Modules/Core/ComponentInterface/src/SSDMetric4thPartyComponent.cxx
similarity index 100%
rename from Modules/Core/ComponentInterface/SSDMetric4thPartyComponent.cxx
rename to Modules/Core/ComponentInterface/src/SSDMetric4thPartyComponent.cxx
diff --git a/Modules/Core/ComponentInterface/componenthandshake.cxx b/Modules/Core/ComponentInterface/src/componenthandshake.cxx
similarity index 100%
rename from Modules/Core/ComponentInterface/componenthandshake.cxx
rename to Modules/Core/ComponentInterface/src/componenthandshake.cxx
diff --git a/Modules/Core/elxModuleCore.cmake b/Modules/Core/elxModuleCore.cmake
index 24e93a5a..f0db2453 100644
--- a/Modules/Core/elxModuleCore.cmake
+++ b/Modules/Core/elxModuleCore.cmake
@@ -4,6 +4,7 @@ set( MODULE elxModuleCore )
 set( ${MODULE}_INCLUDE_DIRS
   ${${MODULE}_SOURCE_DIR}/Common/include
   ${${MODULE}_SOURCE_DIR}/Blueprints/include
+  ${${MODULE}_SOURCE_DIR}/ComponentInterface/include
 )
 
 # Export libraries
@@ -14,8 +15,18 @@ set( ${MODULE}_LIBRARIES
 # Module source files
 set( ${MODULE}_SOURCE_FILES
   ${${MODULE}_SOURCE_DIR}/Blueprints/src/elxBlueprint.cxx
+  ${${MODULE}_SOURCE_DIR}/ComponentInterface/src/Example3rdPartyCode.cxx
+  ${${MODULE}_SOURCE_DIR}/ComponentInterface/src/Example4thPartyCode.cxx
+  ${${MODULE}_SOURCE_DIR}/ComponentInterface/src/GDOptimizer3rdPartyComponent.cxx
+  ${${MODULE}_SOURCE_DIR}/ComponentInterface/src/GDOptimizer4thPartyComponent.cxx
+  ${${MODULE}_SOURCE_DIR}/ComponentInterface/src/Metric3rdPartyWrapper.cxx
+  ${${MODULE}_SOURCE_DIR}/ComponentInterface/src/Metric4thPartyWrapper.cxx
+  ${${MODULE}_SOURCE_DIR}/ComponentInterface/src/SSDMetric3rdPartyComponent.cxx
+  ${${MODULE}_SOURCE_DIR}/ComponentInterface/src/SSDMetric4thPartyComponent.cxx
+  ${${MODULE}_SOURCE_DIR}/ComponentInterface/src/componenthandshake.cxx
 )
 
+
 # Compile library
 
 add_library( ${MODULE} STATIC "${${MODULE}_SOURCE_FILES}" )
diff --git a/Testing/Unit/CMakeLists.txt b/Testing/Unit/CMakeLists.txt
index 06f783c2..a20706ab 100644
--- a/Testing/Unit/CMakeLists.txt
+++ b/Testing/Unit/CMakeLists.txt
@@ -6,6 +6,7 @@
 set( ElastixUnitTestFilenames
   elxExampleUnitTest.cxx
   elxBlueprintTest.cxx
+  elxComponentInterfaceTest.cxx
 )         
 
 # ---------------------------------------------------------------------
-- 
GitLab