From 2b5ee38c0789b002c83fc33991c50830ed5878c0 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Fri, 9 Oct 2020 00:03:10 +0200
Subject: [PATCH] forward class declaration

---
 Core/Scattering/IFormFactorBorn.cpp |  6 ++++
 Core/Scattering/IFormFactorBorn.h   |  5 +--
 auto/Wrap/doxygenCore.i             |  5 ++-
 auto/Wrap/libBornAgainCore.py       |  2 +-
 auto/Wrap/libBornAgainCore_wrap.cpp | 50 ++++++++++++++++-------------
 5 files changed, 41 insertions(+), 27 deletions(-)

diff --git a/Core/Scattering/IFormFactorBorn.cpp b/Core/Scattering/IFormFactorBorn.cpp
index 0989b00386a..8eb54bf4172 100644
--- a/Core/Scattering/IFormFactorBorn.cpp
+++ b/Core/Scattering/IFormFactorBorn.cpp
@@ -17,12 +17,18 @@
 #include "Base/Utils/Algorithms.h"
 #include "Core/Material/WavevectorInfo.h"
 #include "Core/Scattering/Rotations.h"
+#include "Core/Shapes/IShape.h"
+
+
+IFormFactorBorn::IFormFactorBorn() = default;
 
 IFormFactorBorn::IFormFactorBorn(const NodeMeta& meta, const std::vector<double>& PValues)
     : IFormFactor(meta, PValues)
 {
 }
 
+IFormFactorBorn::~IFormFactorBorn() = default;
+
 complex_t IFormFactorBorn::evaluate(const WavevectorInfo& wavevectors) const
 {
     return evaluate_for_q(wavevectors.getQ());
diff --git a/Core/Scattering/IFormFactorBorn.h b/Core/Scattering/IFormFactorBorn.h
index 298ffad39cc..a846ec85d71 100644
--- a/Core/Scattering/IFormFactorBorn.h
+++ b/Core/Scattering/IFormFactorBorn.h
@@ -17,8 +17,8 @@
 
 #include "Base/Vector/Vectors3D.h"
 #include "Core/Scattering/IFormFactor.h"
-#include "Core/Shapes/IShape.h"
 
+class IShape;
 struct SlicingEffects; // defined below
 
 //! Pure virtual base class for Born form factors.
@@ -32,8 +32,9 @@ struct SlicingEffects; // defined below
 class IFormFactorBorn : public IFormFactor
 {
 public:
-    IFormFactorBorn() = default;
+    IFormFactorBorn();
     IFormFactorBorn(const NodeMeta& meta, const std::vector<double>& PValues);
+    ~IFormFactorBorn();
 
     IFormFactorBorn* clone() const override = 0;
 
diff --git a/auto/Wrap/doxygenCore.i b/auto/Wrap/doxygenCore.i
index 28ca1e46171..415c01d751c 100644
--- a/auto/Wrap/doxygenCore.i
+++ b/auto/Wrap/doxygenCore.i
@@ -6113,12 +6113,15 @@ In contrast to the generic  IFormFactor, a Born form factor does not depend on t
 C++ includes: IFormFactorBorn.h
 ";
 
-%feature("docstring")  IFormFactorBorn::IFormFactorBorn "IFormFactorBorn::IFormFactorBorn()=default
+%feature("docstring")  IFormFactorBorn::IFormFactorBorn "IFormFactorBorn::IFormFactorBorn()
 ";
 
 %feature("docstring")  IFormFactorBorn::IFormFactorBorn "IFormFactorBorn::IFormFactorBorn(const NodeMeta &meta, const std::vector< double > &PValues)
 ";
 
+%feature("docstring")  IFormFactorBorn::~IFormFactorBorn "IFormFactorBorn::~IFormFactorBorn()
+";
+
 %feature("docstring")  IFormFactorBorn::clone "IFormFactorBorn* IFormFactorBorn::clone() const override=0
 
 Returns a clone of this  ISample object. 
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index 29b0dc1c1f1..992b42fd352 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -7624,6 +7624,7 @@ class IFormFactorBorn(IFormFactor):
         else:
             _self = self
         _libBornAgainCore.IFormFactorBorn_swiginit(self, _libBornAgainCore.new_IFormFactorBorn(_self, *args))
+    __swig_destroy__ = _libBornAgainCore.delete_IFormFactorBorn
 
     def clone(self):
         r"""
@@ -7688,7 +7689,6 @@ class IFormFactorBorn(IFormFactor):
     def canSliceAnalytically(self, rot):
         r"""canSliceAnalytically(IFormFactorBorn self, IRotation rot) -> bool"""
         return _libBornAgainCore.IFormFactorBorn_canSliceAnalytically(self, rot)
-    __swig_destroy__ = _libBornAgainCore.delete_IFormFactorBorn
     def __disown__(self):
         self.this.disown()
         _libBornAgainCore.disown_IFormFactorBorn(self)
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index bcc8347ef45..86d3769f0a4 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -67079,6 +67079,28 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_delete_IFormFactorBorn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  IFormFactorBorn *arg1 = (IFormFactorBorn *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_IFormFactorBorn, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_IFormFactorBorn" "', argument " "1"" of type '" "IFormFactorBorn *""'"); 
+  }
+  arg1 = reinterpret_cast< IFormFactorBorn * >(argp1);
+  delete arg1;
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_IFormFactorBorn_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   IFormFactorBorn *arg1 = (IFormFactorBorn *) 0 ;
@@ -67408,28 +67430,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_delete_IFormFactorBorn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  IFormFactorBorn *arg1 = (IFormFactorBorn *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_IFormFactorBorn, SWIG_POINTER_DISOWN |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_IFormFactorBorn" "', argument " "1"" of type '" "IFormFactorBorn *""'"); 
-  }
-  arg1 = reinterpret_cast< IFormFactorBorn * >(argp1);
-  delete arg1;
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *_wrap_disown_IFormFactorBorn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   IFormFactorBorn *arg1 = (IFormFactorBorn *) 0 ;
@@ -122168,6 +122168,11 @@ static PyMethodDef SwigMethods[] = {
 		"IFormFactorBorn::IFormFactorBorn(const NodeMeta &meta, const std::vector< double > &PValues)\n"
 		"\n"
 		""},
+	 { "delete_IFormFactorBorn", _wrap_delete_IFormFactorBorn, METH_O, "\n"
+		"delete_IFormFactorBorn(IFormFactorBorn self)\n"
+		"IFormFactorBorn::~IFormFactorBorn()\n"
+		"\n"
+		""},
 	 { "IFormFactorBorn_clone", _wrap_IFormFactorBorn_clone, METH_O, "\n"
 		"IFormFactorBorn_clone(IFormFactorBorn self) -> IFormFactorBorn\n"
 		"IFormFactorBorn* IFormFactorBorn::clone() const override=0\n"
@@ -122211,7 +122216,6 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { "IFormFactorBorn_canSliceAnalytically", _wrap_IFormFactorBorn_canSliceAnalytically, METH_VARARGS, "IFormFactorBorn_canSliceAnalytically(IFormFactorBorn self, IRotation rot) -> bool"},
-	 { "delete_IFormFactorBorn", _wrap_delete_IFormFactorBorn, METH_O, "delete_IFormFactorBorn(IFormFactorBorn self)"},
 	 { "disown_IFormFactorBorn", _wrap_disown_IFormFactorBorn, METH_O, NULL},
 	 { "IFormFactorBorn_sliceFormFactor", _wrap_IFormFactorBorn_sliceFormFactor, METH_VARARGS, "IFormFactorBorn_sliceFormFactor(IFormFactorBorn self, ZLimits limits, IRotation rot, kvector_t translation) -> IFormFactor"},
 	 { "IFormFactorBorn_swigregister", IFormFactorBorn_swigregister, METH_O, NULL},
-- 
GitLab