From 887753d71454e4f2bcdbdeda8d05ca2eb4890ba8 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Fri, 23 Apr 2021 11:15:19 +0200
Subject: [PATCH] defaultAxesUnits pure virtual in base class

---
 Device/Detector/IDetector.h             | 2 +-
 Device/Detector/RectangularDetector.cpp | 5 -----
 Device/Detector/RectangularDetector.h   | 2 +-
 Device/Detector/SpecularDetector1D.cpp  | 5 -----
 Device/Detector/SpecularDetector1D.h    | 3 ++-
 Device/Detector/SphericalDetector.cpp   | 5 -----
 Device/Detector/SphericalDetector.h     | 2 +-
 auto/Wrap/doxygenDevice.i               | 8 ++++----
 auto/Wrap/libBornAgainDevice.py         | 6 +++---
 auto/Wrap/libBornAgainDevice_wrap.cpp   | 6 +++---
 10 files changed, 15 insertions(+), 29 deletions(-)

diff --git a/Device/Detector/IDetector.h b/Device/Detector/IDetector.h
index 24d3d5d8df6..c6b71924ae2 100644
--- a/Device/Detector/IDetector.h
+++ b/Device/Detector/IDetector.h
@@ -95,7 +95,7 @@ public:
     createDetectorIntensity(const std::vector<SimulationElement>& elements) const;
 
     //! Return default axes units
-    virtual Axes::Units defaultAxesUnits() const { return Axes::Units::DEFAULT; }
+    virtual Axes::Units defaultAxesUnits() const = 0;
 
     //! Returns number of simulation elements.
     size_t numberOfSimulationElements() const;
diff --git a/Device/Detector/RectangularDetector.cpp b/Device/Detector/RectangularDetector.cpp
index e5df3ededff..517ffed8a0b 100644
--- a/Device/Detector/RectangularDetector.cpp
+++ b/Device/Detector/RectangularDetector.cpp
@@ -161,11 +161,6 @@ RectangularDetector::EDetectorArrangement RectangularDetector::getDetectorArrang
     return m_detector_arrangement;
 }
 
-Axes::Units RectangularDetector::defaultAxesUnits() const
-{
-    return Axes::Units::MM;
-}
-
 RectangularPixel* RectangularDetector::regionOfInterestPixel() const
 {
     const IAxis& u_axis = axis(0);
diff --git a/Device/Detector/RectangularDetector.h b/Device/Detector/RectangularDetector.h
index c21c912ea62..774af2c4779 100644
--- a/Device/Detector/RectangularDetector.h
+++ b/Device/Detector/RectangularDetector.h
@@ -73,7 +73,7 @@ public:
     EDetectorArrangement getDetectorArrangment() const;
 
     //! return default axes units
-    Axes::Units defaultAxesUnits() const override;
+    virtual Axes::Units defaultAxesUnits() const final { return Axes::Units::MM; }
 
     RectangularPixel* regionOfInterestPixel() const;
 
diff --git a/Device/Detector/SpecularDetector1D.cpp b/Device/Detector/SpecularDetector1D.cpp
index 9ed6713ce6e..1fc74af3801 100644
--- a/Device/Detector/SpecularDetector1D.cpp
+++ b/Device/Detector/SpecularDetector1D.cpp
@@ -37,11 +37,6 @@ SpecularDetector1D* SpecularDetector1D::clone() const
     return new SpecularDetector1D(*this);
 }
 
-Axes::Units SpecularDetector1D::defaultAxesUnits() const
-{
-    return Axes::Units::RADIANS;
-}
-
 std::string SpecularDetector1D::axisName(size_t index) const
 {
     if (index == 0) {
diff --git a/Device/Detector/SpecularDetector1D.h b/Device/Detector/SpecularDetector1D.h
index 353cb8ab047..09501594e10 100644
--- a/Device/Detector/SpecularDetector1D.h
+++ b/Device/Detector/SpecularDetector1D.h
@@ -49,7 +49,8 @@ public:
     void setAxis(const IAxis& axis);
 
     //! Return default axes units
-    Axes::Units defaultAxesUnits() const override;
+    virtual Axes::Units defaultAxesUnits() const final { return Axes::Units::RADIANS; }
+
 
 protected:
     SpecularDetector1D(const SpecularDetector1D& other);
diff --git a/Device/Detector/SphericalDetector.cpp b/Device/Detector/SphericalDetector.cpp
index 6c4803f6529..a1686167e80 100644
--- a/Device/Detector/SphericalDetector.cpp
+++ b/Device/Detector/SphericalDetector.cpp
@@ -48,11 +48,6 @@ SphericalDetector* SphericalDetector::clone() const
     return new SphericalDetector(*this);
 }
 
-Axes::Units SphericalDetector::defaultAxesUnits() const
-{
-    return Axes::Units::RADIANS;
-}
-
 IPixel* SphericalDetector::createPixel(size_t index) const
 {
     const IAxis& phi_axis = axis(0);
diff --git a/Device/Detector/SphericalDetector.h b/Device/Detector/SphericalDetector.h
index f31460c4cbb..52eef2a455a 100644
--- a/Device/Detector/SphericalDetector.h
+++ b/Device/Detector/SphericalDetector.h
@@ -53,7 +53,7 @@ public:
     ~SphericalDetector() override {}
 
     //! return default axes units
-    Axes::Units defaultAxesUnits() const override;
+    virtual Axes::Units defaultAxesUnits() const final { return Axes::Units::RADIANS; }
 
 protected:
     //! Creates an IPixel for the given OutputData object and index
diff --git a/auto/Wrap/doxygenDevice.i b/auto/Wrap/doxygenDevice.i
index 2d46df823e6..ef9fd2fa7af 100644
--- a/auto/Wrap/doxygenDevice.i
+++ b/auto/Wrap/doxygenDevice.i
@@ -881,7 +881,7 @@ Returns detection properties.
 Returns new intensity map with resolution applied, and cropped to ROI if applicable. 
 ";
 
-%feature("docstring")  IDetector::defaultAxesUnits "virtual Axes::Units IDetector::defaultAxesUnits() const
+%feature("docstring")  IDetector::defaultAxesUnits "virtual Axes::Units IDetector::defaultAxesUnits() const =0
 
 Return default axes units. 
 ";
@@ -2263,7 +2263,7 @@ Inits detector with the beam settings.
 %feature("docstring")  RectangularDetector::getDetectorArrangment "RectangularDetector::EDetectorArrangement RectangularDetector::getDetectorArrangment() const
 ";
 
-%feature("docstring")  RectangularDetector::defaultAxesUnits "Axes::Units RectangularDetector::defaultAxesUnits() const override
+%feature("docstring")  RectangularDetector::defaultAxesUnits "virtual Axes::Units RectangularDetector::defaultAxesUnits() const final
 
 return default axes units 
 ";
@@ -2577,7 +2577,7 @@ Resets region of interest making whole detector plane available for the simulati
 %feature("docstring")  SpecularDetector1D::setAxis "void SpecularDetector1D::setAxis(const IAxis &axis)
 ";
 
-%feature("docstring")  SpecularDetector1D::defaultAxesUnits "Axes::Units SpecularDetector1D::defaultAxesUnits() const override
+%feature("docstring")  SpecularDetector1D::defaultAxesUnits "virtual Axes::Units SpecularDetector1D::defaultAxesUnits() const final
 
 Return default axes units. 
 ";
@@ -2678,7 +2678,7 @@ central alpha angle
 %feature("docstring")  SphericalDetector::~SphericalDetector "SphericalDetector::~SphericalDetector() override
 ";
 
-%feature("docstring")  SphericalDetector::defaultAxesUnits "Axes::Units SphericalDetector::defaultAxesUnits() const override
+%feature("docstring")  SphericalDetector::defaultAxesUnits "virtual Axes::Units SphericalDetector::defaultAxesUnits() const final
 
 return default axes units 
 ";
diff --git a/auto/Wrap/libBornAgainDevice.py b/auto/Wrap/libBornAgainDevice.py
index 8fc149e36b3..cb2f32659e3 100644
--- a/auto/Wrap/libBornAgainDevice.py
+++ b/auto/Wrap/libBornAgainDevice.py
@@ -4037,7 +4037,7 @@ class IDetector(libBornAgainBase.ICloneable, libBornAgainParam.INode):
     def defaultAxesUnits(self):
         r"""
         defaultAxesUnits(IDetector self) -> Axes::Units
-        virtual Axes::Units IDetector::defaultAxesUnits() const
+        virtual Axes::Units IDetector::defaultAxesUnits() const =0
 
         Return default axes units. 
 
@@ -4402,7 +4402,7 @@ class RectangularDetector(IDetector2D):
     def defaultAxesUnits(self):
         r"""
         defaultAxesUnits(RectangularDetector self) -> Axes::Units
-        Axes::Units RectangularDetector::defaultAxesUnits() const override
+        virtual Axes::Units RectangularDetector::defaultAxesUnits() const final
 
         return default axes units 
 
@@ -4464,7 +4464,7 @@ class SphericalDetector(IDetector2D):
     def defaultAxesUnits(self):
         r"""
         defaultAxesUnits(SphericalDetector self) -> Axes::Units
-        Axes::Units SphericalDetector::defaultAxesUnits() const override
+        virtual Axes::Units SphericalDetector::defaultAxesUnits() const final
 
         return default axes units 
 
diff --git a/auto/Wrap/libBornAgainDevice_wrap.cpp b/auto/Wrap/libBornAgainDevice_wrap.cpp
index e73747c2a4b..a88ac3eff81 100644
--- a/auto/Wrap/libBornAgainDevice_wrap.cpp
+++ b/auto/Wrap/libBornAgainDevice_wrap.cpp
@@ -45206,7 +45206,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "IDetector_defaultAxesUnits", _wrap_IDetector_defaultAxesUnits, METH_O, "\n"
 		"IDetector_defaultAxesUnits(IDetector self) -> Axes::Units\n"
-		"virtual Axes::Units IDetector::defaultAxesUnits() const\n"
+		"virtual Axes::Units IDetector::defaultAxesUnits() const =0\n"
 		"\n"
 		"Return default axes units. \n"
 		"\n"
@@ -45431,7 +45431,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "RectangularDetector_defaultAxesUnits", _wrap_RectangularDetector_defaultAxesUnits, METH_O, "\n"
 		"RectangularDetector_defaultAxesUnits(RectangularDetector self) -> Axes::Units\n"
-		"Axes::Units RectangularDetector::defaultAxesUnits() const override\n"
+		"virtual Axes::Units RectangularDetector::defaultAxesUnits() const final\n"
 		"\n"
 		"return default axes units \n"
 		"\n"
@@ -45468,7 +45468,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "SphericalDetector_defaultAxesUnits", _wrap_SphericalDetector_defaultAxesUnits, METH_O, "\n"
 		"SphericalDetector_defaultAxesUnits(SphericalDetector self) -> Axes::Units\n"
-		"Axes::Units SphericalDetector::defaultAxesUnits() const override\n"
+		"virtual Axes::Units SphericalDetector::defaultAxesUnits() const final\n"
 		"\n"
 		"return default axes units \n"
 		"\n"
-- 
GitLab