From d32c13f78bbcd8cdcc8539a24f7a69a2406c8c8a Mon Sep 17 00:00:00 2001
From: Walter Van Herck <w.van.herck@fz-juelich.de>
Date: Wed, 25 Oct 2017 14:15:31 +0200
Subject: [PATCH] Regenerate Python API

---
 auto/Wrap/libBornAgainCore.py       |  488 +++++-----
 auto/Wrap/libBornAgainCore_wrap.cpp | 1274 ++++++++++++---------------
 auto/Wrap/libBornAgainCore_wrap.h   |    2 +-
 auto/Wrap/swig_runtime.h            |   31 +-
 4 files changed, 861 insertions(+), 934 deletions(-)

diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index d553af631b3..6ba1ed325be 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -1,22 +1,15 @@
 # This file was automatically generated by SWIG (http://www.swig.org).
-# Version 3.0.12
+# Version 3.0.8
 #
 # Do not make changes to this file unless you know what you are doing--modify
 # the SWIG interface file instead.
 
-from sys import version_info as _swig_python_version_info
-if _swig_python_version_info >= (2, 7, 0):
-    def swig_import_helper():
-        import importlib
-        pkg = __name__.rpartition('.')[0]
-        mname = '.'.join((pkg, '_libBornAgainCore')).lstrip('.')
-        try:
-            return importlib.import_module(mname)
-        except ImportError:
-            return importlib.import_module('_libBornAgainCore')
-    _libBornAgainCore = swig_import_helper()
-    del swig_import_helper
-elif _swig_python_version_info >= (2, 6, 0):
+
+
+
+
+from sys import version_info
+if version_info >= (2, 6, 0):
     def swig_import_helper():
         from os.path import dirname
         import imp
@@ -26,27 +19,22 @@ elif _swig_python_version_info >= (2, 6, 0):
         except ImportError:
             import _libBornAgainCore
             return _libBornAgainCore
-        try:
-            _mod = imp.load_module('_libBornAgainCore', fp, pathname, description)
-        finally:
-            if fp is not None:
+        if fp is not None:
+            try:
+                _mod = imp.load_module('_libBornAgainCore', fp, pathname, description)
+            finally:
                 fp.close()
-        return _mod
+            return _mod
     _libBornAgainCore = swig_import_helper()
     del swig_import_helper
 else:
     import _libBornAgainCore
-del _swig_python_version_info
-
+del version_info
 try:
     _swig_property = property
 except NameError:
     pass  # Python < 2.2 doesn't have 'property'.
 
-try:
-    import builtins as __builtin__
-except ImportError:
-    import __builtin__
 
 def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
     if (name == "thisown"):
@@ -71,34 +59,41 @@ def _swig_setattr(self, class_type, name, value):
     return _swig_setattr_nondynamic(self, class_type, name, value, 0)
 
 
-def _swig_getattr(self, class_type, name):
+def _swig_getattr_nondynamic(self, class_type, name, static=1):
     if (name == "thisown"):
         return self.this.own()
     method = class_type.__swig_getmethods__.get(name, None)
     if method:
         return method(self)
-    raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name))
+    if (not static):
+        return object.__getattr__(self, name)
+    else:
+        raise AttributeError(name)
+
+def _swig_getattr(self, class_type, name):
+    return _swig_getattr_nondynamic(self, class_type, name, 0)
 
 
 def _swig_repr(self):
     try:
         strthis = "proxy of " + self.this.__repr__()
-    except __builtin__.Exception:
+    except Exception:
         strthis = ""
     return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
 
 try:
     _object = object
     _newclass = 1
-except __builtin__.Exception:
+except AttributeError:
     class _object:
         pass
     _newclass = 0
 
+
 try:
     import weakref
     weakref_proxy = weakref.proxy
-except __builtin__.Exception:
+except Exception:
     weakref_proxy = lambda x: x
 
 
@@ -209,6 +204,8 @@ class SwigPyIterator(_object):
 SwigPyIterator_swigregister = _libBornAgainCore.SwigPyIterator_swigregister
 SwigPyIterator_swigregister(SwigPyIterator)
 
+
+_libBornAgainCore.SHARED_PTR_DISOWN_swigconstant(_libBornAgainCore)
 SHARED_PTR_DISOWN = _libBornAgainCore.SHARED_PTR_DISOWN
 
 class ParameterPoolIterator(object):
@@ -389,7 +386,7 @@ class vdouble1d_t(_object):
         this = _libBornAgainCore.new_vdouble1d_t(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def push_back(self, x):
@@ -601,7 +598,7 @@ class vdouble2d_t(_object):
         this = _libBornAgainCore.new_vdouble2d_t(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def push_back(self, x):
@@ -813,7 +810,7 @@ class vector_integer_t(_object):
         this = _libBornAgainCore.new_vector_integer_t(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1025,7 +1022,7 @@ class vinteger2d_t(_object):
         this = _libBornAgainCore.new_vinteger2d_t(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1237,7 +1234,7 @@ class vector_longinteger_t(_object):
         this = _libBornAgainCore.new_vector_longinteger_t(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1449,7 +1446,7 @@ class vector_complex_t(_object):
         this = _libBornAgainCore.new_vector_complex_t(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1661,7 +1658,7 @@ class vector_string_t(_object):
         this = _libBornAgainCore.new_vector_string_t(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1774,7 +1771,7 @@ class INoncopyable(_object):
         this = _libBornAgainCore.new_INoncopyable()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_INoncopyable
     __del__ = lambda self: None
@@ -1867,7 +1864,7 @@ class INamed(_object):
         this = _libBornAgainCore.new_INamed(_self, *args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_INamed
     __del__ = lambda self: None
@@ -1924,7 +1921,7 @@ class IParameterized(INamed):
         this = _libBornAgainCore.new_IParameterized(_self, *args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IParameterized
     __del__ = lambda self: None
@@ -2059,7 +2056,7 @@ class INode(IParameterized):
         this = _libBornAgainCore.new_INode(_self, )
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_INode
     __del__ = lambda self: None
@@ -2332,7 +2329,7 @@ class swig_dummy_type_inode_vector(_object):
         this = _libBornAgainCore.new_swig_dummy_type_inode_vector(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def push_back(self, x):
@@ -2544,7 +2541,7 @@ class swig_dummy_type_const_inode_vector(_object):
         this = _libBornAgainCore.new_swig_dummy_type_const_inode_vector(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def push_back(self, x):
@@ -2626,7 +2623,7 @@ class kvector_t(_object):
         this = _libBornAgainCore.new_kvector_t(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def x(self):
@@ -3056,7 +3053,7 @@ class vector_kvector_t(_object):
         this = _libBornAgainCore.new_vector_kvector_t(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def push_back(self, x):
@@ -3138,7 +3135,7 @@ class cvector_t(_object):
         this = _libBornAgainCore.new_cvector_t(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def x(self):
@@ -3476,7 +3473,7 @@ class vector_cvector_t(_object):
         this = _libBornAgainCore.new_vector_cvector_t(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def push_back(self, x):
@@ -3589,7 +3586,9 @@ class WavevectorInfo(_object):
         """GetZeroQ() -> WavevectorInfo"""
         return _libBornAgainCore.WavevectorInfo_GetZeroQ()
 
-    GetZeroQ = staticmethod(GetZeroQ)
+    if _newclass:
+        GetZeroQ = staticmethod(GetZeroQ)
+    __swig_getmethods__["GetZeroQ"] = lambda x: GetZeroQ
 
     def __init__(self, *args):
         """
@@ -3602,7 +3601,7 @@ class WavevectorInfo(_object):
         this = _libBornAgainCore.new_WavevectorInfo(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def transformed(self, transform):
@@ -3710,7 +3709,7 @@ class Beam(INode):
         this = _libBornAgainCore.new_Beam(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Beam
     __del__ = lambda self: None
@@ -3844,7 +3843,7 @@ class Bin1D(_object):
         this = _libBornAgainCore.new_Bin1D(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_setmethods__["m_lower"] = _libBornAgainCore.Bin1D_m_lower_set
     __swig_getmethods__["m_lower"] = _libBornAgainCore.Bin1D_m_lower_get
@@ -3920,7 +3919,7 @@ class Bin1DKVector(_object):
         this = _libBornAgainCore.new_Bin1DKVector(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def getMidPoint(self):
@@ -3985,7 +3984,7 @@ class Bin1DCVector(_object):
         this = _libBornAgainCore.new_Bin1DCVector(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def getMidPoint(self):
@@ -4282,7 +4281,7 @@ class VariableBinAxis(IAxis):
         this = _libBornAgainCore.new_VariableBinAxis(name, nbins, bin_boundaries)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_VariableBinAxis
     __del__ = lambda self: None
@@ -4455,7 +4454,7 @@ class ConstKBinAxis(VariableBinAxis):
         this = _libBornAgainCore.new_ConstKBinAxis(name, nbins, start, end)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ConstKBinAxis
     __del__ = lambda self: None
@@ -4533,7 +4532,7 @@ class CustomBinAxis(VariableBinAxis):
         this = _libBornAgainCore.new_CustomBinAxis(name, nbins, start, end)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_CustomBinAxis
     __del__ = lambda self: None
@@ -4710,7 +4709,7 @@ class ISample(ICloneable, INode):
         this = _libBornAgainCore.new_ISample(_self, )
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ISample
     __del__ = lambda self: None
@@ -4939,7 +4938,7 @@ class IObservable(_object):
         this = _libBornAgainCore.new_IObservable(_self, )
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     def __disown__(self):
         self.this.disown()
@@ -4982,7 +4981,7 @@ class IFitObserver(IObserver):
         this = _libBornAgainCore.new_IFitObserver(_self, update_every_nth)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def notify(self, subject):
@@ -5104,7 +5103,7 @@ class FitStrategyDefault(IFitStrategy):
         this = _libBornAgainCore.new_FitStrategyDefault()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -5230,7 +5229,7 @@ class IntensityFunctionLog(IIntensityFunction):
         this = _libBornAgainCore.new_IntensityFunctionLog()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 IntensityFunctionLog_swigregister = _libBornAgainCore.IntensityFunctionLog_swigregister
 IntensityFunctionLog_swigregister(IntensityFunctionLog)
@@ -5291,7 +5290,7 @@ class IntensityFunctionSqrt(IIntensityFunction):
         this = _libBornAgainCore.new_IntensityFunctionSqrt()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 IntensityFunctionSqrt_swigregister = _libBornAgainCore.IntensityFunctionSqrt_swigregister
 IntensityFunctionSqrt_swigregister(IntensityFunctionSqrt)
@@ -5395,7 +5394,7 @@ class IntensityNormalizer(IIntensityNormalizer):
         this = _libBornAgainCore.new_IntensityNormalizer(scale, shift)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IntensityNormalizer
     __del__ = lambda self: None
@@ -5486,7 +5485,7 @@ class IntensityScaleAndShiftNormalizer(IntensityNormalizer):
         this = _libBornAgainCore.new_IntensityScaleAndShiftNormalizer(scale, shift)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IntensityScaleAndShiftNormalizer
     __del__ = lambda self: None
@@ -5609,7 +5608,7 @@ class SquaredFunctionDefault(ISquaredFunction):
         this = _libBornAgainCore.new_SquaredFunctionDefault()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SquaredFunctionDefault
     __del__ = lambda self: None
@@ -5906,7 +5905,7 @@ class ChiSquaredModule(IChiSquaredModule):
         this = _libBornAgainCore.new_ChiSquaredModule(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ChiSquaredModule
     __del__ = lambda self: None
@@ -5983,7 +5982,7 @@ class FitObject(INode, INoncopyable):
         this = _libBornAgainCore.new_FitObject(simulation, real_data, weight)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitObject
     __del__ = lambda self: None
@@ -6135,7 +6134,7 @@ class FitOptions(_object):
         this = _libBornAgainCore.new_FitOptions()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitOptions
     __del__ = lambda self: None
@@ -6198,7 +6197,7 @@ class FitParameter(libBornAgainFit.IFitParameter):
         this = _libBornAgainCore.new_FitParameter(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitParameter
     __del__ = lambda self: None
@@ -6339,7 +6338,7 @@ class FitSuite(IObservable):
         this = _libBornAgainCore.new_FitSuite()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitSuite
     __del__ = lambda self: None
@@ -6771,7 +6770,7 @@ class FitSuiteObjects(INode, INoncopyable):
         this = _libBornAgainCore.new_FitSuiteObjects()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitSuiteObjects
     __del__ = lambda self: None
@@ -7122,7 +7121,11 @@ def Bessel_J1c(*args):
 
     """
     return _libBornAgainCore.Bessel_J1c(*args)
+
+_libBornAgainCore.FORWARD_FFT_swigconstant(_libBornAgainCore)
 FORWARD_FFT = _libBornAgainCore.FORWARD_FFT
+
+_libBornAgainCore.BACKWARD_FFT_swigconstant(_libBornAgainCore)
 BACKWARD_FFT = _libBornAgainCore.BACKWARD_FFT
 
 def FastFourierTransform(*args):
@@ -7207,7 +7210,7 @@ class AdjustMinimizerStrategy(IFitStrategy):
         this = _libBornAgainCore.new_AdjustMinimizerStrategy(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -7280,7 +7283,7 @@ class IMultiLayerBuilder(IParameterized):
         this = _libBornAgainCore.new_IMultiLayerBuilder(_self, )
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def buildSample(self):
@@ -7340,7 +7343,9 @@ class IMultiLayerBuilder(IParameterized):
         """isPythonBuilder() -> bool"""
         return _libBornAgainCore.IMultiLayerBuilder_isPythonBuilder()
 
-    isPythonBuilder = staticmethod(isPythonBuilder)
+    if _newclass:
+        isPythonBuilder = staticmethod(isPythonBuilder)
+    __swig_getmethods__["isPythonBuilder"] = lambda x: isPythonBuilder
     __swig_destroy__ = _libBornAgainCore.delete_IMultiLayerBuilder
     __del__ = lambda self: None
     def __disown__(self):
@@ -7382,7 +7387,7 @@ class INodeVisitor(_object):
         this = _libBornAgainCore.new_INodeVisitor()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_INodeVisitor
     __del__ = lambda self: None
@@ -7653,7 +7658,7 @@ class Crystal(IClusteredParticles):
         this = _libBornAgainCore.new_Crystal(lattice_basis, lattice)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Crystal
     __del__ = lambda self: None
@@ -7908,7 +7913,7 @@ class DistributionGate(IDistribution1D):
         this = _libBornAgainCore.new_DistributionGate(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionGate
     __del__ = lambda self: None
@@ -8037,7 +8042,7 @@ class DistributionLorentz(IDistribution1D):
         this = _libBornAgainCore.new_DistributionLorentz(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionLorentz
     __del__ = lambda self: None
@@ -8156,7 +8161,7 @@ class DistributionGaussian(IDistribution1D):
         this = _libBornAgainCore.new_DistributionGaussian(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionGaussian
     __del__ = lambda self: None
@@ -8275,7 +8280,7 @@ class DistributionLogNormal(IDistribution1D):
         this = _libBornAgainCore.new_DistributionLogNormal(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionLogNormal
     __del__ = lambda self: None
@@ -8416,7 +8421,7 @@ class DistributionCosine(IDistribution1D):
         this = _libBornAgainCore.new_DistributionCosine(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionCosine
     __del__ = lambda self: None
@@ -8535,7 +8540,7 @@ class DistributionTrapezoid(IDistribution1D):
         this = _libBornAgainCore.new_DistributionTrapezoid(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionTrapezoid
     __del__ = lambda self: None
@@ -8670,7 +8675,7 @@ class DetectorMask(_object):
         this = _libBornAgainCore.new_DetectorMask(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def addMask(self, shape, mask_value):
@@ -8842,7 +8847,7 @@ class Ellipse(IShape2D):
         this = _libBornAgainCore.new_Ellipse(xcenter, ycenter, xradius, yradius, theta)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -9009,7 +9014,7 @@ class FTDecayFunction1DCauchy(IFTDecayFunction1D):
         this = _libBornAgainCore.new_FTDecayFunction1DCauchy(decay_length)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -9078,7 +9083,7 @@ class FTDecayFunction1DGauss(IFTDecayFunction1D):
         this = _libBornAgainCore.new_FTDecayFunction1DGauss(decay_length)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -9147,7 +9152,7 @@ class FTDecayFunction1DTriangle(IFTDecayFunction1D):
         this = _libBornAgainCore.new_FTDecayFunction1DTriangle(decay_length)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -9227,7 +9232,7 @@ class FTDecayFunction1DVoigt(IFTDecayFunction1D):
         this = _libBornAgainCore.new_FTDecayFunction1DVoigt(decay_length, eta)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -9428,7 +9433,7 @@ class FTDecayFunction2DCauchy(IFTDecayFunction2D):
         this = _libBornAgainCore.new_FTDecayFunction2DCauchy(decay_length_x, decay_length_y, gamma)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -9500,7 +9505,7 @@ class FTDecayFunction2DGauss(IFTDecayFunction2D):
         this = _libBornAgainCore.new_FTDecayFunction2DGauss(decay_length_x, decay_length_y, gamma)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -9589,7 +9594,7 @@ class FTDecayFunction2DVoigt(IFTDecayFunction2D):
         this = _libBornAgainCore.new_FTDecayFunction2DVoigt(decay_length_x, decay_length_y, eta, gamma)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -9739,7 +9744,7 @@ class FTDistribution1DCauchy(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DCauchy(omega)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -9810,7 +9815,7 @@ class FTDistribution1DGauss(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DGauss(omega)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -9881,7 +9886,7 @@ class FTDistribution1DGate(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DGate(omega)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -9952,7 +9957,7 @@ class FTDistribution1DTriangle(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DTriangle(omega)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -10023,7 +10028,7 @@ class FTDistribution1DCosine(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DCosine(omega)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -10105,7 +10110,7 @@ class FTDistribution1DVoigt(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DVoigt(omega, eta)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -10286,7 +10291,7 @@ class FTDistribution2DCauchy(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DCauchy(omega_x, omega_y, gamma)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -10358,7 +10363,7 @@ class FTDistribution2DGauss(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DGauss(omega_x, omega_y, gamma)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -10430,7 +10435,7 @@ class FTDistribution2DGate(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DGate(omega_x, omega_y, gamma)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -10502,7 +10507,7 @@ class FTDistribution2DCone(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DCone(omega_x, omega_y, gamma)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -10591,7 +10596,7 @@ class FTDistribution2DVoigt(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DVoigt(omega_x, omega_y, eta, gamma)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -10689,7 +10694,7 @@ class FixedBinAxis(IAxis):
         this = _libBornAgainCore.new_FixedBinAxis(name, nbins, start, end)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FixedBinAxis
     __del__ = lambda self: None
@@ -10853,7 +10858,7 @@ class IFormFactor(ISample):
         this = _libBornAgainCore.new_IFormFactor(_self, )
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IFormFactor
     __del__ = lambda self: None
@@ -11150,7 +11155,7 @@ class vector_IFormFactorPtr_t(_object):
         this = _libBornAgainCore.new_vector_IFormFactorPtr_t(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def push_back(self, x):
@@ -11239,7 +11244,7 @@ class IFormFactorBorn(IFormFactor):
         this = _libBornAgainCore.new_IFormFactorBorn(_self, )
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IFormFactorBorn
     __del__ = lambda self: None
@@ -11374,7 +11379,7 @@ class SlicingEffects(_object):
         this = _libBornAgainCore.new_SlicingEffects()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SlicingEffects
     __del__ = lambda self: None
@@ -11532,7 +11537,7 @@ class PolygonalTopology(_object):
         this = _libBornAgainCore.new_PolygonalTopology()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_PolygonalTopology
     __del__ = lambda self: None
@@ -11577,7 +11582,7 @@ class PolyhedralTopology(_object):
         this = _libBornAgainCore.new_PolyhedralTopology()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_PolyhedralTopology
     __del__ = lambda self: None
@@ -11610,7 +11615,7 @@ class PolyhedralEdge(_object):
         this = _libBornAgainCore.new_PolyhedralEdge(_Vlow, _Vhig)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def E(self):
@@ -11689,7 +11694,9 @@ class PolyhedralFace(_object):
         """diameter(vector_kvector_t V) -> double"""
         return _libBornAgainCore.PolyhedralFace_diameter(V)
 
-    diameter = staticmethod(diameter)
+    if _newclass:
+        diameter = staticmethod(diameter)
+    __swig_getmethods__["diameter"] = lambda x: diameter
 
     def __init__(self, *args):
         """
@@ -11714,7 +11721,7 @@ class PolyhedralFace(_object):
         this = _libBornAgainCore.new_PolyhedralFace(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def area(self):
@@ -12095,7 +12102,7 @@ class FormFactorAnisoPyramid(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorAnisoPyramid(length, width, height, alpha)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -12210,7 +12217,7 @@ class FormFactorBox(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorBox(length, width, height)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -12339,7 +12346,7 @@ class FormFactorCone(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorCone(radius, height, alpha)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -12468,7 +12475,7 @@ class FormFactorCone6(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorCone6(base_edge, height, alpha)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -12559,7 +12566,7 @@ class FormFactorCrystal(IFormFactor):
         this = _libBornAgainCore.new_FormFactorCrystal(lattice, basis_form_factor, meso_form_factor)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorCrystal
     __del__ = lambda self: None
@@ -12709,7 +12716,7 @@ class FormFactorCuboctahedron(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorCuboctahedron(length, height, height_ratio, alpha)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -12821,7 +12828,7 @@ class FormFactorCylinder(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorCylinder(radius, height)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -12929,7 +12936,7 @@ class FormFactorDecoratorDebyeWaller(IFormFactorDecorator):
         this = _libBornAgainCore.new_FormFactorDecoratorDebyeWaller(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -13018,7 +13025,7 @@ class FormFactorDodecahedron(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorDodecahedron(edge)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -13089,7 +13096,7 @@ class FormFactorDot(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorDot()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -13188,7 +13195,7 @@ class FormFactorEllipsoidalCylinder(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorEllipsoidalCylinder(radius_x, radius_y, height)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -13311,7 +13318,7 @@ class FormFactorFullSphere(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorFullSphere(radius)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -13441,7 +13448,7 @@ class FormFactorFullSpheroid(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorFullSpheroid(radius, height)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -13547,7 +13554,7 @@ class FormFactorGauss(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorGauss(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -13666,7 +13673,7 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorHemiEllipsoid(radius_x, radius_y, height)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorHemiEllipsoid
     __del__ = lambda self: None
@@ -13789,7 +13796,7 @@ class FormFactorIcosahedron(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorIcosahedron(edge)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -13874,7 +13881,7 @@ class FormFactorLongBoxGauss(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongBoxGauss(length, width, height)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -14003,7 +14010,7 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongBoxLorentz(length, width, height)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -14132,7 +14139,7 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongRipple1Gauss(length, width, height)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -14261,7 +14268,7 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongRipple1Lorentz(length, width, height)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -14393,7 +14400,7 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongRipple2Gauss(length, width, height, asymmetry)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -14533,7 +14540,7 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongRipple2Lorentz(length, width, height, asymmetry)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -14659,7 +14666,7 @@ class FormFactorLorentz(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLorentz(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -14775,7 +14782,7 @@ class FormFactorPrism3(FormFactorPolygonalPrism):
         this = _libBornAgainCore.new_FormFactorPrism3(base_edge, height)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -14857,7 +14864,7 @@ class FormFactorPrism6(FormFactorPolygonalPrism):
         this = _libBornAgainCore.new_FormFactorPrism6(base_edge, height)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -14942,7 +14949,7 @@ class FormFactorPyramid(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorPyramid(base_edge, height, alpha)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -15047,7 +15054,7 @@ class FormFactorRipple1(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorRipple1(length, width, height)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -15179,7 +15186,7 @@ class FormFactorRipple2(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorRipple2(length, width, height, asymmetry)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -15304,7 +15311,7 @@ class FormFactorSphereGaussianRadius(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorSphereGaussianRadius(mean, sigma)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -15389,7 +15396,7 @@ class FormFactorSphereLogNormalRadius(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorSphereLogNormalRadius(mean, scale_param, n_samples)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -15474,7 +15481,7 @@ class FormFactorSphereUniformRadius(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorSphereUniformRadius(mean, full_width)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -15573,7 +15580,7 @@ class FormFactorTetrahedron(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorTetrahedron(base_edge, height, alpha)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -15675,7 +15682,7 @@ class FormFactorTruncatedCube(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorTruncatedCube(length, removed_length)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -15771,7 +15778,7 @@ class FormFactorTruncatedSphere(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorTruncatedSphere(radius, height, dh)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -15904,7 +15911,7 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorTruncatedSpheroid(radius, height, height_flattening, dh)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -16031,7 +16038,7 @@ class FormFactorWeighted(IFormFactor):
         this = _libBornAgainCore.new_FormFactorWeighted()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorWeighted
     __del__ = lambda self: None
@@ -16447,7 +16454,7 @@ class SimulationOptions(_object):
         this = _libBornAgainCore.new_SimulationOptions()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def isIntegrate(self):
@@ -16645,7 +16652,7 @@ class GISASSimulation(Simulation):
         this = _libBornAgainCore.new_GISASSimulation(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_GISASSimulation
     __del__ = lambda self: None
@@ -17311,7 +17318,9 @@ class IHistogram(_object):
         """createHistogram(IntensityData source) -> IHistogram"""
         return _libBornAgainCore.IHistogram_createHistogram(source)
 
-    createHistogram = staticmethod(createHistogram)
+    if _newclass:
+        createHistogram = staticmethod(createHistogram)
+    __swig_getmethods__["createHistogram"] = lambda x: createHistogram
 
     def createFrom(*args):
         """
@@ -17320,7 +17329,9 @@ class IHistogram(_object):
         """
         return _libBornAgainCore.IHistogram_createFrom(*args)
 
-    createFrom = staticmethod(createFrom)
+    if _newclass:
+        createFrom = staticmethod(createFrom)
+    __swig_getmethods__["createFrom"] = lambda x: createFrom
 
     def createOutputData(self, *args):
         """
@@ -17472,7 +17483,7 @@ class Histogram1D(IHistogram):
         this = _libBornAgainCore.new_Histogram1D(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -17579,7 +17590,9 @@ class Histogram1D(IHistogram):
         """dynamicCast(IHistogram pHistogram) -> Histogram1D"""
         return _libBornAgainCore.Histogram1D_dynamicCast(pHistogram)
 
-    dynamicCast = staticmethod(dynamicCast)
+    if _newclass:
+        dynamicCast = staticmethod(dynamicCast)
+    __swig_getmethods__["dynamicCast"] = lambda x: dynamicCast
     __swig_destroy__ = _libBornAgainCore.delete_Histogram1D
     __del__ = lambda self: None
 Histogram1D_swigregister = _libBornAgainCore.Histogram1D_swigregister
@@ -17625,7 +17638,7 @@ class Histogram2D(IHistogram):
         this = _libBornAgainCore.new_Histogram2D(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -17751,7 +17764,9 @@ class Histogram2D(IHistogram):
         """dynamicCast(IHistogram pHistogram) -> Histogram2D"""
         return _libBornAgainCore.Histogram2D_dynamicCast(pHistogram)
 
-    dynamicCast = staticmethod(dynamicCast)
+    if _newclass:
+        dynamicCast = staticmethod(dynamicCast)
+    __swig_getmethods__["dynamicCast"] = lambda x: dynamicCast
     __swig_destroy__ = _libBornAgainCore.delete_Histogram2D
     __del__ = lambda self: None
 Histogram2D_swigregister = _libBornAgainCore.Histogram2D_swigregister
@@ -17797,7 +17812,7 @@ class HomogeneousMaterial(INamed):
         this = _libBornAgainCore.new_HomogeneousMaterial(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_HomogeneousMaterial
     __del__ = lambda self: None
@@ -18474,7 +18489,7 @@ class IInterferenceFunction(ISample):
         this = _libBornAgainCore.new_IInterferenceFunction(_self, )
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     def __disown__(self):
         self.this.disown()
@@ -18815,7 +18830,7 @@ class ParticleLimits(_object):
         this = _libBornAgainCore.new_ParticleLimits()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParticleLimits
     __del__ = lambda self: None
@@ -19116,13 +19131,17 @@ class IRotation(ISample):
         """createRotation(Transform3D const & transform) -> IRotation"""
         return _libBornAgainCore.IRotation_createRotation(transform)
 
-    createRotation = staticmethod(createRotation)
+    if _newclass:
+        createRotation = staticmethod(createRotation)
+    __swig_getmethods__["createRotation"] = lambda x: createRotation
 
     def createIdentity():
         """createIdentity() -> IRotation"""
         return _libBornAgainCore.IRotation_createIdentity()
 
-    createIdentity = staticmethod(createIdentity)
+    if _newclass:
+        createIdentity = staticmethod(createIdentity)
+    __swig_getmethods__["createIdentity"] = lambda x: createIdentity
     __swig_destroy__ = _libBornAgainCore.delete_IRotation
     __del__ = lambda self: None
 
@@ -19247,7 +19266,7 @@ class RotationX(IRotation):
         this = _libBornAgainCore.new_RotationX(angle)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -19343,7 +19362,7 @@ class RotationY(IRotation):
         this = _libBornAgainCore.new_RotationY(angle)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -19440,7 +19459,7 @@ class RotationZ(IRotation):
         this = _libBornAgainCore.new_RotationZ(angle)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -19542,7 +19561,7 @@ class RotationEuler(IRotation):
         this = _libBornAgainCore.new_RotationEuler(alpha, beta, gamma)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -19700,7 +19719,7 @@ class SimpleSelectionRule(ISelectionRule):
         this = _libBornAgainCore.new_SimpleSelectionRule(a, b, c, modulus)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SimpleSelectionRule
     __del__ = lambda self: None
@@ -19758,7 +19777,7 @@ class Instrument(INode):
         this = _libBornAgainCore.new_Instrument(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Instrument
     __del__ = lambda self: None
@@ -20123,25 +20142,33 @@ class IntensityDataIOFactory(_object):
         """readOutputData(std::string const & file_name) -> IntensityData"""
         return _libBornAgainCore.IntensityDataIOFactory_readOutputData(file_name)
 
-    readOutputData = staticmethod(readOutputData)
+    if _newclass:
+        readOutputData = staticmethod(readOutputData)
+    __swig_getmethods__["readOutputData"] = lambda x: readOutputData
 
     def readIntensityData(file_name):
         """readIntensityData(std::string const & file_name) -> IHistogram"""
         return _libBornAgainCore.IntensityDataIOFactory_readIntensityData(file_name)
 
-    readIntensityData = staticmethod(readIntensityData)
+    if _newclass:
+        readIntensityData = staticmethod(readIntensityData)
+    __swig_getmethods__["readIntensityData"] = lambda x: readIntensityData
 
     def writeOutputData(data, file_name):
         """writeOutputData(IntensityData data, std::string const & file_name)"""
         return _libBornAgainCore.IntensityDataIOFactory_writeOutputData(data, file_name)
 
-    writeOutputData = staticmethod(writeOutputData)
+    if _newclass:
+        writeOutputData = staticmethod(writeOutputData)
+    __swig_getmethods__["writeOutputData"] = lambda x: writeOutputData
 
     def writeIntensityData(histogram, file_name):
         """writeIntensityData(IHistogram histogram, std::string const & file_name)"""
         return _libBornAgainCore.IntensityDataIOFactory_writeIntensityData(histogram, file_name)
 
-    writeIntensityData = staticmethod(writeIntensityData)
+    if _newclass:
+        writeIntensityData = staticmethod(writeIntensityData)
+    __swig_getmethods__["writeIntensityData"] = lambda x: writeIntensityData
 
     def __init__(self):
         """
@@ -20157,7 +20184,7 @@ class IntensityDataIOFactory(_object):
         this = _libBornAgainCore.new_IntensityDataIOFactory()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IntensityDataIOFactory
     __del__ = lambda self: None
@@ -20221,7 +20248,7 @@ class InterferenceFunction1DLattice(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunction1DLattice(length, xi)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction1DLattice
     __del__ = lambda self: None
@@ -20346,7 +20373,7 @@ class InterferenceFunctionRadialParaCrystal(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunctionRadialParaCrystal(peak_distance, damping_length)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -20556,7 +20583,7 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunction2DLattice(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction2DLattice
     __del__ = lambda self: None
@@ -20592,7 +20619,9 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         """
         return _libBornAgainCore.InterferenceFunction2DLattice_createSquare(lattice_length, xi)
 
-    createSquare = staticmethod(createSquare)
+    if _newclass:
+        createSquare = staticmethod(createSquare)
+    __swig_getmethods__["createSquare"] = lambda x: createSquare
 
     def createHexagonal(lattice_length, xi=0.0):
         """
@@ -20601,7 +20630,9 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         """
         return _libBornAgainCore.InterferenceFunction2DLattice_createHexagonal(lattice_length, xi)
 
-    createHexagonal = staticmethod(createHexagonal)
+    if _newclass:
+        createHexagonal = staticmethod(createHexagonal)
+    __swig_getmethods__["createHexagonal"] = lambda x: createHexagonal
 
     def setDecayFunction(self, decay):
         """
@@ -20771,7 +20802,7 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunction2DParaCrystal(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction2DParaCrystal
     __del__ = lambda self: None
@@ -20809,7 +20840,9 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         """
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_createSquare(lattice_length, damping_length, domain_size_1, domain_size_2)
 
-    createSquare = staticmethod(createSquare)
+    if _newclass:
+        createSquare = staticmethod(createSquare)
+    __swig_getmethods__["createSquare"] = lambda x: createSquare
 
     def createHexagonal(lattice_length, damping_length=0.0, domain_size_1=0.0, domain_size_2=0.0):
         """
@@ -20820,7 +20853,9 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         """
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_createHexagonal(lattice_length, damping_length, domain_size_1, domain_size_2)
 
-    createHexagonal = staticmethod(createHexagonal)
+    if _newclass:
+        createHexagonal = staticmethod(createHexagonal)
+    __swig_getmethods__["createHexagonal"] = lambda x: createHexagonal
 
     def setDomainSizes(self, size_1, size_2):
         """
@@ -21026,7 +21061,7 @@ class InterferenceFunctionNone(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunctionNone()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -21174,7 +21209,7 @@ class SphericalDetector(IDetector2D):
         this = _libBornAgainCore.new_SphericalDetector(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -21250,7 +21285,7 @@ class SphericalPixel(IPixel):
         this = _libBornAgainCore.new_SphericalPixel(alpha_bin, phi_bin)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SphericalPixel
     __del__ = lambda self: None
@@ -21339,7 +21374,7 @@ class IsGISAXSDetector(SphericalDetector):
         this = _libBornAgainCore.new_IsGISAXSDetector(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -21399,7 +21434,7 @@ class Lattice(INode):
         this = _libBornAgainCore.new_Lattice(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Lattice
     __del__ = lambda self: None
@@ -21552,13 +21587,17 @@ class Lattice(INode):
         """createFCCLattice(double a) -> Lattice"""
         return _libBornAgainCore.Lattice_createFCCLattice(a)
 
-    createFCCLattice = staticmethod(createFCCLattice)
+    if _newclass:
+        createFCCLattice = staticmethod(createFCCLattice)
+    __swig_getmethods__["createFCCLattice"] = lambda x: createFCCLattice
 
     def createTrigonalLattice(a, c):
         """createTrigonalLattice(double a, double c) -> Lattice"""
         return _libBornAgainCore.Lattice_createTrigonalLattice(a, c)
 
-    createTrigonalLattice = staticmethod(createTrigonalLattice)
+    if _newclass:
+        createTrigonalLattice = staticmethod(createTrigonalLattice)
+    __swig_getmethods__["createTrigonalLattice"] = lambda x: createTrigonalLattice
 
     def onChange(self):
         """
@@ -21618,7 +21657,7 @@ class Lattice1DParameters(_object):
         this = _libBornAgainCore.new_Lattice1DParameters(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_setmethods__["m_length"] = _libBornAgainCore.Lattice1DParameters_m_length_set
     __swig_getmethods__["m_length"] = _libBornAgainCore.Lattice1DParameters_m_length_get
@@ -21757,7 +21796,7 @@ class BasicLattice(Lattice2D):
         this = _libBornAgainCore.new_BasicLattice(length1, length2, angle, rotation_angle)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -21850,7 +21889,7 @@ class SquareLattice(Lattice2D):
         this = _libBornAgainCore.new_SquareLattice(length, rotation_angle)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -21943,7 +21982,7 @@ class HexagonalLattice(Lattice2D):
         this = _libBornAgainCore.new_HexagonalLattice(length, rotation_angle)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -22058,7 +22097,7 @@ class Layer(ISample):
         this = _libBornAgainCore.new_Layer(material, thickness)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Layer
     __del__ = lambda self: None
@@ -22298,7 +22337,7 @@ class LayerRoughness(ISample):
         this = _libBornAgainCore.new_LayerRoughness(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -22459,7 +22498,7 @@ class Line(IShape2D):
         this = _libBornAgainCore.new_Line(x1, y1, x2, y2)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -22525,7 +22564,7 @@ class VerticalLine(IShape2D):
         this = _libBornAgainCore.new_VerticalLine(x)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -22601,7 +22640,7 @@ class HorizontalLine(IShape2D):
         this = _libBornAgainCore.new_HorizontalLine(y)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -22671,7 +22710,7 @@ class MesoCrystal(IParticle):
         this = _libBornAgainCore.new_MesoCrystal(particle_structure, form_factor)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_MesoCrystal
     __del__ = lambda self: None
@@ -22758,7 +22797,7 @@ class MultiLayer(ISample):
         this = _libBornAgainCore.new_MultiLayer()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_MultiLayer
     __del__ = lambda self: None
@@ -23167,7 +23206,7 @@ class OffSpecSimulation(Simulation):
         this = _libBornAgainCore.new_OffSpecSimulation(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_OffSpecSimulation
     __del__ = lambda self: None
@@ -23295,7 +23334,7 @@ class IntensityData(_object):
         this = _libBornAgainCore.new_IntensityData()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IntensityData
     __del__ = lambda self: None
@@ -23686,10 +23725,9 @@ class IntensityData(_object):
         return _libBornAgainCore.IntensityData___isub__(self, right)
 
 
-    def __itruediv__(self, *args):
-        return _libBornAgainCore.IntensityData___itruediv__(self, *args)
-    __idiv__ = __itruediv__
-
+    def __idiv__(self, right):
+        """__idiv__(IntensityData self, IntensityData right) -> IntensityData"""
+        return _libBornAgainCore.IntensityData___idiv__(self, right)
 
 
     def __imul__(self, right):
@@ -23779,7 +23817,7 @@ class ParameterDistribution(IParameterized):
         this = _libBornAgainCore.new_ParameterDistribution(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParameterDistribution
     __del__ = lambda self: None
@@ -23929,7 +23967,7 @@ class ParameterPool(ICloneable):
         this = _libBornAgainCore.new_ParameterPool()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParameterPool
     __del__ = lambda self: None
@@ -24142,7 +24180,7 @@ class ParameterSample(_object):
         this = _libBornAgainCore.new_ParameterSample(_value, _weight)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_setmethods__["value"] = _libBornAgainCore.ParameterSample_value_set
     __swig_getmethods__["value"] = _libBornAgainCore.ParameterSample_value_get
@@ -24316,7 +24354,7 @@ class ParameterSampleVector(_object):
         this = _libBornAgainCore.new_ParameterSampleVector(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def push_back(self, x):
@@ -24402,7 +24440,7 @@ class Particle(IParticle):
         this = _libBornAgainCore.new_Particle(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -24520,7 +24558,7 @@ class ParticleComposition(IParticle):
         this = _libBornAgainCore.new_ParticleComposition(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParticleComposition
     __del__ = lambda self: None
@@ -24663,7 +24701,7 @@ class ParticleCoreShell(IParticle):
         this = _libBornAgainCore.new_ParticleCoreShell(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParticleCoreShell
     __del__ = lambda self: None
@@ -24768,7 +24806,7 @@ class ParticleDistribution(IAbstractParticle):
         this = _libBornAgainCore.new_ParticleDistribution(prototype, par_distr)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -24893,7 +24931,7 @@ class ParticleLayout(ILayout):
         this = _libBornAgainCore.new_ParticleLayout(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParticleLayout
     __del__ = lambda self: None
@@ -25068,7 +25106,7 @@ class Polygon(IShape2D):
         this = _libBornAgainCore.new_Polygon(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Polygon
     __del__ = lambda self: None
@@ -25152,7 +25190,7 @@ class RealParameter(IParameterReal):
         this = _libBornAgainCore.new_RealParameter(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self, *args):
@@ -25309,7 +25347,7 @@ class Rectangle(IShape2D):
         this = _libBornAgainCore.new_Rectangle(xlow, ylow, xup, yup)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -25425,7 +25463,7 @@ class RectangularDetector(IDetector2D):
         this = _libBornAgainCore.new_RectangularDetector(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def clone(self):
@@ -25686,7 +25724,7 @@ class RectangularPixel(IPixel):
         this = _libBornAgainCore.new_RectangularPixel(corner_pos, width, height)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_RectangularPixel
     __del__ = lambda self: None
@@ -25773,7 +25811,7 @@ class ResolutionFunction2DGaussian(IResolutionFunction2D):
         this = _libBornAgainCore.new_ResolutionFunction2DGaussian(sigma_x, sigma_y)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def evaluateCDF(self, x, y):
@@ -25864,7 +25902,7 @@ class SpecularSimulation(ICloneable, IParameterized):
         this = _libBornAgainCore.new_SpecularSimulation(*args)
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SpecularSimulation
     __del__ = lambda self: None
@@ -26053,7 +26091,7 @@ class ThreadInfo(_object):
         this = _libBornAgainCore.new_ThreadInfo()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_setmethods__["n_threads"] = _libBornAgainCore.ThreadInfo_n_threads_set
     __swig_getmethods__["n_threads"] = _libBornAgainCore.ThreadInfo_n_threads_get
@@ -26102,7 +26140,7 @@ class SampleBuilderFactoryTemp(_object):
         this = _libBornAgainCore.new_SampleBuilderFactoryTemp()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def createItem(self, item_key):
@@ -26206,7 +26244,7 @@ class SampleBuilderFactory(SampleBuilderFactoryTemp):
         this = _libBornAgainCore.new_SampleBuilderFactory()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def createSample(self, name):
@@ -26251,7 +26289,7 @@ class SimulationFactoryTemp(_object):
         this = _libBornAgainCore.new_SimulationFactoryTemp()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
 
     def createItem(self, item_key):
@@ -26355,7 +26393,7 @@ class SimulationFactory(SimulationFactoryTemp):
         this = _libBornAgainCore.new_SimulationFactory()
         try:
             self.this.append(this)
-        except __builtin__.Exception:
+        except Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SimulationFactory
     __del__ = lambda self: None
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 41af3a0d54f..3dd5ad9b724 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -1,6 +1,6 @@
 /* ----------------------------------------------------------------------------
  * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 3.0.12
+ * Version 3.0.8
  *
  * This file is not intended to be easily readable and contains a number of
  * coding conventions designed to improve portability and efficiency. Do not make
@@ -107,11 +107,9 @@ template <typename T> T SwigValueInit() {
 #endif
 
 /* exporting methods */
-#if defined(__GNUC__)
-#  if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
-#    ifndef GCC_HASCLASSVISIBILITY
-#      define GCC_HASCLASSVISIBILITY
-#    endif
+#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#  ifndef GCC_HASCLASSVISIBILITY
+#    define GCC_HASCLASSVISIBILITY
 #  endif
 #endif
 
@@ -671,16 +669,16 @@ SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
     char d = *(c++);
     unsigned char uu;
     if ((d >= '0') && (d <= '9'))
-      uu = (unsigned char)((d - '0') << 4);
+      uu = ((d - '0') << 4);
     else if ((d >= 'a') && (d <= 'f'))
-      uu = (unsigned char)((d - ('a'-10)) << 4);
+      uu = ((d - ('a'-10)) << 4);
     else
       return (char *) 0;
     d = *(c++);
     if ((d >= '0') && (d <= '9'))
-      uu |= (unsigned char)(d - '0');
+      uu |= (d - '0');
     else if ((d >= 'a') && (d <= 'f'))
-      uu |= (unsigned char)(d - ('a'-10));
+      uu |= (d - ('a'-10));
     else
       return (char *) 0;
     *u = uu;
@@ -863,6 +861,10 @@ PyString_FromFormat(const char *fmt, ...) {
 }
 #endif
 
+/* Add PyObject_Del for old Pythons */
+#if PY_VERSION_HEX < 0x01060000
+# define PyObject_Del(op) PyMem_DEL((op))
+#endif
 #ifndef PyObject_DEL
 # define PyObject_DEL PyObject_Del
 #endif
@@ -977,7 +979,6 @@ typedef destructor freefunc;
 #if PY_VERSION_HEX < 0x03020000
 #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
 #define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
-#define Py_hash_t long
 #endif
 
 /* -----------------------------------------------------------------------------
@@ -1926,6 +1927,7 @@ SwigPyObject_TypeOnce(void) {
   static int type_init = 0;
   if (!type_init) {
     const PyTypeObject tmp = {
+      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX >= 0x03000000
       PyVarObject_HEAD_INIT(NULL, 0)
 #else
@@ -1936,7 +1938,7 @@ SwigPyObject_TypeOnce(void) {
       sizeof(SwigPyObject),                 /* tp_basicsize */
       0,                                    /* tp_itemsize */
       (destructor)SwigPyObject_dealloc,     /* tp_dealloc */
-      0,                                    /* tp_print */
+      0,				    /* tp_print */
 #if PY_VERSION_HEX < 0x02020000
       (getattrfunc)SwigPyObject_getattr,    /* tp_getattr */
 #else
@@ -1944,7 +1946,7 @@ SwigPyObject_TypeOnce(void) {
 #endif
       (setattrfunc)0,                       /* tp_setattr */
 #if PY_VERSION_HEX >= 0x03000000
-      0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
+    0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
 #else
       (cmpfunc)SwigPyObject_compare,        /* tp_compare */
 #endif
@@ -1954,7 +1956,7 @@ SwigPyObject_TypeOnce(void) {
       0,                                    /* tp_as_mapping */
       (hashfunc)0,                          /* tp_hash */
       (ternaryfunc)0,                       /* tp_call */
-      0,                                    /* tp_str */
+      0,				    /* tp_str */
       PyObject_GenericGetAttr,              /* tp_getattro */
       0,                                    /* tp_setattro */
       0,                                    /* tp_as_buffer */
@@ -2117,6 +2119,7 @@ SwigPyPacked_TypeOnce(void) {
   static int type_init = 0;
   if (!type_init) {
     const PyTypeObject tmp = {
+      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX>=0x03000000
       PyVarObject_HEAD_INIT(NULL, 0)
 #else
@@ -3784,7 +3787,7 @@ static swig_module_info swig_module = {swig_types, 308, 0, 0, 0, 0};
 #endif
 #define SWIG_name    "_libBornAgainCore"
 
-#define SWIGVERSION 0x030012 
+#define SWIGVERSION 0x030008 
 #define SWIG_VERSION SWIGVERSION
 
 
@@ -3883,7 +3886,6 @@ namespace swig {
 #endif
 
 
-#include <typeinfo>
 #include <stdexcept>
 
 
@@ -4033,7 +4035,7 @@ SWIG_AsVal_double (PyObject *obj, double *val)
     return SWIG_OK;
 #if PY_VERSION_HEX < 0x03000000
   } else if (PyInt_Check(obj)) {
-    if (val) *val = (double) PyInt_AsLong(obj);
+    if (val) *val = PyInt_AsLong(obj);
     return SWIG_OK;
 #endif
   } else if (PyLong_Check(obj)) {
@@ -4154,109 +4156,23 @@ SWIG_AsVal_unsigned_SS_long (PyObject *obj, unsigned long *val)
 }
 
 
-#include <limits.h>
-#if !defined(SWIG_NO_LLONG_MAX)
-# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
-#   define LLONG_MAX __LONG_LONG_MAX__
-#   define LLONG_MIN (-LLONG_MAX - 1LL)
-#   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
-# endif
-#endif
-
-
-#if defined(LLONG_MAX) && !defined(SWIG_LONG_LONG_AVAILABLE)
-#  define SWIG_LONG_LONG_AVAILABLE
-#endif
-
-
-#ifdef SWIG_LONG_LONG_AVAILABLE
-SWIGINTERN int
-SWIG_AsVal_unsigned_SS_long_SS_long (PyObject *obj, unsigned long long *val)
-{
-  int res = SWIG_TypeError;
-  if (PyLong_Check(obj)) {
-    unsigned long long v = PyLong_AsUnsignedLongLong(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = v;
-      return SWIG_OK;
-    } else {
-      PyErr_Clear();
-      res = SWIG_OverflowError;
-    }
-  } else {
-    unsigned long v;
-    res = SWIG_AsVal_unsigned_SS_long (obj,&v);
-    if (SWIG_IsOK(res)) {
-      if (val) *val = v;
-      return res;
-    }
-  }
-#ifdef SWIG_PYTHON_CAST_MODE
-  {
-    const double mant_max = 1LL << DBL_MANT_DIG;
-    double d;
-    res = SWIG_AsVal_double (obj,&d);
-    if (SWIG_IsOK(res) && !SWIG_CanCastAsInteger(&d, 0, mant_max))
-      return SWIG_OverflowError;
-    if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, mant_max)) {
-      if (val) *val = (unsigned long long)(d);
-      return SWIG_AddCast(res);
-    }
-    res = SWIG_TypeError;
-  }
-#endif
-  return res;
-}
-#endif
-
-
 SWIGINTERNINLINE int
 SWIG_AsVal_size_t (PyObject * obj, size_t *val)
 {
-  int res = SWIG_TypeError;
-#ifdef SWIG_LONG_LONG_AVAILABLE
-  if (sizeof(size_t) <= sizeof(unsigned long)) {
-#endif
-    unsigned long v;
-    res = SWIG_AsVal_unsigned_SS_long (obj, val ? &v : 0);
-    if (SWIG_IsOK(res) && val) *val = static_cast< size_t >(v);
-#ifdef SWIG_LONG_LONG_AVAILABLE
-  } else if (sizeof(size_t) <= sizeof(unsigned long long)) {
-    unsigned long long v;
-    res = SWIG_AsVal_unsigned_SS_long_SS_long (obj, val ? &v : 0);
-    if (SWIG_IsOK(res) && val) *val = static_cast< size_t >(v);
-  }
-#endif
+  unsigned long v;
+  int res = SWIG_AsVal_unsigned_SS_long (obj, val ? &v : 0);
+  if (SWIG_IsOK(res) && val) *val = static_cast< size_t >(v);
   return res;
 }
 
 
-  #define SWIG_From_long   PyInt_FromLong 
-
-
-#ifdef SWIG_LONG_LONG_AVAILABLE
-SWIGINTERNINLINE PyObject* 
-SWIG_From_long_SS_long  (long long value)
-{
-  return ((value < LONG_MIN) || (value > LONG_MAX)) ?
-    PyLong_FromLongLong(value) : PyInt_FromLong(static_cast< long >(value));
-}
-#endif
+  #define SWIG_From_long   PyLong_FromLong 
 
 
 SWIGINTERNINLINE PyObject *
 SWIG_From_ptrdiff_t  (ptrdiff_t value)
 {    
-#ifdef SWIG_LONG_LONG_AVAILABLE
-  if (sizeof(ptrdiff_t) <= sizeof(long)) {
-#endif
-    return SWIG_From_long  (static_cast< long >(value));
-#ifdef SWIG_LONG_LONG_AVAILABLE
-  } else {
-    /* assume sizeof(ptrdiff_t) <= sizeof(long long) */
-    return SWIG_From_long_SS_long  (static_cast< long long >(value));
-  }
-#endif
+  return SWIG_From_long  (static_cast< long >(value));
 }
 
 
@@ -4310,65 +4226,12 @@ SWIG_AsVal_long (PyObject *obj, long* val)
 }
 
 
-#ifdef SWIG_LONG_LONG_AVAILABLE
-SWIGINTERN int
-SWIG_AsVal_long_SS_long (PyObject *obj, long long *val)
-{
-  int res = SWIG_TypeError;
-  if (PyLong_Check(obj)) {
-    long long v = PyLong_AsLongLong(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = v;
-      return SWIG_OK;
-    } else {
-      PyErr_Clear();
-      res = SWIG_OverflowError;
-    }
-  } else {
-    long v;
-    res = SWIG_AsVal_long (obj,&v);
-    if (SWIG_IsOK(res)) {
-      if (val) *val = v;
-      return res;
-    }
-  }
-#ifdef SWIG_PYTHON_CAST_MODE
-  {
-    const double mant_max = 1LL << DBL_MANT_DIG;
-    const double mant_min = -mant_max;
-    double d;
-    res = SWIG_AsVal_double (obj,&d);
-    if (SWIG_IsOK(res) && !SWIG_CanCastAsInteger(&d, mant_min, mant_max))
-      return SWIG_OverflowError;
-    if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, mant_min, mant_max)) {
-      if (val) *val = (long long)(d);
-      return SWIG_AddCast(res);
-    }
-    res = SWIG_TypeError;
-  }
-#endif
-  return res;
-}
-#endif
-
-
 SWIGINTERNINLINE int
 SWIG_AsVal_ptrdiff_t (PyObject * obj, ptrdiff_t *val)
 {
-  int res = SWIG_TypeError;
-#ifdef SWIG_LONG_LONG_AVAILABLE
-  if (sizeof(ptrdiff_t) <= sizeof(long)) {
-#endif
-    long v;
-    res = SWIG_AsVal_long (obj, val ? &v : 0);
-    if (SWIG_IsOK(res) && val) *val = static_cast< ptrdiff_t >(v);
-#ifdef SWIG_LONG_LONG_AVAILABLE
-  } else if (sizeof(ptrdiff_t) <= sizeof(long long)) {
-    long long v;
-    res = SWIG_AsVal_long_SS_long (obj, val ? &v : 0);
-    if (SWIG_IsOK(res) && val) *val = static_cast< ptrdiff_t >(v);
-  }
-#endif
+  long v;
+  int res = SWIG_AsVal_long (obj, val ? &v : 0);
+  if (SWIG_IsOK(res) && val) *val = static_cast< ptrdiff_t >(v);
   return res;
 }
 
@@ -4413,21 +4276,8 @@ namespace swig {
     return traits<typename noconst_traits<Type >::noconst_type >::type_name();
   }
 
-  template <class Type> struct traits_info {
-    static swig_type_info *type_query(std::string name) {
-      name += " *";
-      return SWIG_TypeQuery(name.c_str());
-    }
-    static swig_type_info *type_info() {
-      static swig_type_info *info = type_query(type_name<Type>());
-      return info;
-    }
-  };
-
-  /*
-    Partial specialization for pointers (traits_info)
-  */
-  template <class Type> struct traits_info<Type *> {
+  template <class Type>
+  struct traits_info {
     static swig_type_info *type_query(std::string name) {
       name += " *";
       return SWIG_TypeQuery(name.c_str());
@@ -4444,7 +4294,7 @@ namespace swig {
   }
 
   /*
-    Partial specialization for pointers (traits)
+    Partial specialization for pointers
   */
   template <class Type> struct traits <Type *> {
     typedef pointer_category category;
@@ -4514,8 +4364,7 @@ namespace swig {
   struct traits_asptr {   
     static int asptr(PyObject *obj, Type **val) {
       Type *p;
-      swig_type_info *descriptor = type_info<Type>();
-      int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR;
+      int res = SWIG_ConvertPtr(obj, (void**)&p, type_info<Type>(), 0);
       if (SWIG_IsOK(res)) {
 	if (val) *val = p;
       }
@@ -4663,7 +4512,7 @@ namespace swig {
 
 namespace std {
   template <>
-  struct less <PyObject *>
+  struct less <PyObject *>: public binary_function<PyObject *, PyObject *, bool>
   {
     bool
     operator()(PyObject * v, PyObject *w) const
@@ -4688,7 +4537,7 @@ namespace std {
   };
 
   template <>
-  struct less <swig::SwigPtr_PyObject>
+  struct less <swig::SwigPtr_PyObject>: public binary_function<swig::SwigPtr_PyObject, swig::SwigPtr_PyObject, bool>
   {
     bool
     operator()(const swig::SwigPtr_PyObject& v, const swig::SwigPtr_PyObject& w) const
@@ -4698,7 +4547,7 @@ namespace std {
   };
 
   template <>
-  struct less <swig::SwigVar_PyObject>
+  struct less <swig::SwigVar_PyObject>: public binary_function<swig::SwigVar_PyObject, swig::SwigVar_PyObject, bool>
   {
     bool
     operator()(const swig::SwigVar_PyObject& v, const swig::SwigVar_PyObject& w) const
@@ -4761,7 +4610,7 @@ namespace swig {
     if (step == 0) {
       throw std::invalid_argument("slice step cannot be zero");
     } else if (step > 0) {
-      // Required range: 0 <= i < size, 0 <= j < size, i <= j
+      // Required range: 0 <= i < size, 0 <= j < size
       if (i < 0) {
         ii = 0;
       } else if (i < (Difference)size) {
@@ -4769,15 +4618,13 @@ namespace swig {
       } else if (insert && (i >= (Difference)size)) {
         ii = (Difference)size;
       }
-      if (j < 0) {
+      if ( j < 0 ) {
         jj = 0;
       } else {
         jj = (j < (Difference)size) ? j : (Difference)size;
       }
-      if (jj < ii)
-        jj = ii;
     } else {
-      // Required range: -1 <= i < size-1, -1 <= j < size-1, i >= j
+      // Required range: -1 <= i < size-1, -1 <= j < size-1
       if (i < -1) {
         ii = -1;
       } else if (i < (Difference) size) {
@@ -4790,8 +4637,6 @@ namespace swig {
       } else {
         jj = (j < (Difference)size ) ? j : (Difference)(size-1);
       }
-      if (ii < jj)
-        ii = jj;
     }
   }
 
@@ -4817,13 +4662,6 @@ namespace swig {
     seq->erase(position);
   }
 
-  template <class Sequence>
-  struct traits_reserve {
-    static void reserve(Sequence & /*seq*/, typename Sequence::size_type /*n*/) {
-      // This should be specialized for types that support reserve
-    }
-  };
-
   template <class Sequence, class Difference>
   inline Sequence*
   getslice(const Sequence* self, Difference i, Difference j, Py_ssize_t step) {
@@ -4841,7 +4679,6 @@ namespace swig {
         return new Sequence(sb, se);
       } else {
         Sequence *sequence = new Sequence();
-        swig::traits_reserve<Sequence>::reserve(*sequence, (jj - ii + step - 1) / step);
         typename Sequence::const_iterator it = sb;
         while (it!=se) {
           sequence->push_back(*it);
@@ -4852,16 +4689,17 @@ namespace swig {
       } 
     } else {
       Sequence *sequence = new Sequence();
-      swig::traits_reserve<Sequence>::reserve(*sequence, (ii - jj - step - 1) / -step);
-      typename Sequence::const_reverse_iterator sb = self->rbegin();
-      typename Sequence::const_reverse_iterator se = self->rbegin();
-      std::advance(sb,size-ii-1);
-      std::advance(se,size-jj-1);
-      typename Sequence::const_reverse_iterator it = sb;
-      while (it!=se) {
-        sequence->push_back(*it);
-        for (Py_ssize_t c=0; c<-step && it!=se; ++c)
-          it++;
+      if (ii > jj) {
+        typename Sequence::const_reverse_iterator sb = self->rbegin();
+        typename Sequence::const_reverse_iterator se = self->rbegin();
+        std::advance(sb,size-ii-1);
+        std::advance(se,size-jj-1);
+        typename Sequence::const_reverse_iterator it = sb;
+        while (it!=se) {
+          sequence->push_back(*it);
+          for (Py_ssize_t c=0; c<-step && it!=se; ++c)
+            it++;
+        }
       }
       return sequence;
     }
@@ -4875,11 +4713,12 @@ namespace swig {
     Difference jj = 0;
     swig::slice_adjust(i, j, step, size, ii, jj, true);
     if (step > 0) {
+      if (jj < ii)
+        jj = ii;
       if (step == 1) {
         size_t ssize = jj - ii;
         if (ssize <= is.size()) {
           // expanding/staying the same size
-          swig::traits_reserve<Sequence>::reserve(*self, self->size() - ssize + is.size());
           typename Sequence::iterator sb = self->begin();
           typename InputSeq::const_iterator isit = is.begin();
           std::advance(sb,ii);
@@ -4913,6 +4752,8 @@ namespace swig {
         }
       }
     } else {
+      if (jj > ii)
+        jj = ii;
       size_t replacecount = (ii - jj - step - 1) / -step;
       if (is.size() != replacecount) {
         char msg[1024];
@@ -4938,33 +4779,37 @@ namespace swig {
     Difference jj = 0;
     swig::slice_adjust(i, j, step, size, ii, jj, true);
     if (step > 0) {
-      typename Sequence::iterator sb = self->begin();
-      std::advance(sb,ii);
-      if (step == 1) {
-        typename Sequence::iterator se = self->begin();
-        std::advance(se,jj);
-        self->erase(sb,se);
-      } else {
-        typename Sequence::iterator it = sb;
-        size_t delcount = (jj - ii + step - 1) / step;
+      if (jj > ii) {
+        typename Sequence::iterator sb = self->begin();
+        std::advance(sb,ii);
+        if (step == 1) {
+          typename Sequence::iterator se = self->begin();
+          std::advance(se,jj);
+          self->erase(sb,se);
+        } else {
+          typename Sequence::iterator it = sb;
+          size_t delcount = (jj - ii + step - 1) / step;
+          while (delcount) {
+            it = self->erase(it);
+            for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c)
+              it++;
+            delcount--;
+          }
+        }
+      }
+    } else {
+      if (ii > jj) {
+        typename Sequence::reverse_iterator sb = self->rbegin();
+        std::advance(sb,size-ii-1);
+        typename Sequence::reverse_iterator it = sb;
+        size_t delcount = (ii - jj - step - 1) / -step;
         while (delcount) {
-          it = self->erase(it);
-          for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c)
+          it = typename Sequence::reverse_iterator(self->erase((++it).base()));
+          for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c)
             it++;
           delcount--;
         }
       }
-    } else {
-      typename Sequence::reverse_iterator sb = self->rbegin();
-      std::advance(sb,size-ii-1);
-      typename Sequence::reverse_iterator it = sb;
-      size_t delcount = (ii - jj - step - 1) / -step;
-      while (delcount) {
-        it = typename Sequence::reverse_iterator(self->erase((++it).base()));
-        for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c)
-          it++;
-        delcount--;
-      }
     }
   }
 }
@@ -5463,8 +5308,8 @@ namespace swig {
     static int asptr(PyObject *obj, sequence **seq) {
       if (obj == Py_None || SWIG_Python_GetSwigThis(obj)) {
 	sequence *p;
-	swig_type_info *descriptor = swig::type_info<sequence>();
-	if (descriptor && SWIG_IsOK(::SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0))) {
+	if (::SWIG_ConvertPtr(obj,(void**)&p,
+			      swig::type_info<sequence>(),0) == SWIG_OK) {
 	  if (seq) *seq = p;
 	  return SWIG_OLDOBJ;
 	}
@@ -5503,7 +5348,7 @@ namespace swig {
 #ifdef SWIG_PYTHON_EXTRA_NATIVE_CONTAINERS
       swig_type_info *desc = swig::type_info<sequence>();
       if (desc && desc->clientdata) {
-	return SWIG_InternalNewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN);
+	return SWIG_NewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN);
       }
 #endif
       size_type size = seq.size();
@@ -5524,13 +5369,6 @@ namespace swig {
 
 
   namespace swig {
-    template <class T>
-    struct traits_reserve<std::vector<T> > {
-      static void reserve(std::vector<T> &seq, typename std::vector<T>::size_type n) {
-        seq.reserve(n);
-      }
-    };
-
     template <class T>
     struct traits_asptr<std::vector<T> >  {
       static int asptr(PyObject *obj, std::vector<T> **vec) {
@@ -5573,33 +5411,14 @@ SWIGINTERNINLINE PyObject*
 SWIG_From_unsigned_SS_long  (unsigned long value)
 {
   return (value > LONG_MAX) ?
-    PyLong_FromUnsignedLong(value) : PyInt_FromLong(static_cast< long >(value));
-}
-
-
-#ifdef SWIG_LONG_LONG_AVAILABLE
-SWIGINTERNINLINE PyObject* 
-SWIG_From_unsigned_SS_long_SS_long  (unsigned long long value)
-{
-  return (value > LONG_MAX) ?
-    PyLong_FromUnsignedLongLong(value) : PyInt_FromLong(static_cast< long >(value));
+    PyLong_FromUnsignedLong(value) : PyLong_FromLong(static_cast< long >(value)); 
 }
-#endif
 
 
 SWIGINTERNINLINE PyObject *
 SWIG_From_size_t  (size_t value)
 {    
-#ifdef SWIG_LONG_LONG_AVAILABLE
-  if (sizeof(size_t) <= sizeof(unsigned long)) {
-#endif
-    return SWIG_From_unsigned_SS_long  (static_cast< unsigned long >(value));
-#ifdef SWIG_LONG_LONG_AVAILABLE
-  } else {
-    /* assume sizeof(size_t) <= sizeof(unsigned long long) */
-    return SWIG_From_unsigned_SS_long_SS_long  (static_cast< unsigned long long >(value));
-  }
-#endif
+  return SWIG_From_unsigned_SS_long  (static_cast< unsigned long >(value));
 }
 
 SWIGINTERN std::vector< double,std::allocator< double > > *std_vector_Sl_double_Sg____getslice__(std::vector< double > *self,std::vector< double >::difference_type i,std::vector< double >::difference_type j){
@@ -5783,6 +5602,16 @@ SWIGINTERN std::vector< std::vector< double > >::iterator std_vector_Sl_std_vect
 SWIGINTERN std::vector< std::vector< double > >::iterator std_vector_Sl_std_vector_Sl_double_Sg__Sg__insert__SWIG_0(std::vector< std::vector< double > > *self,std::vector< std::vector< double > >::iterator pos,std::vector< std::vector< double > >::value_type const &x){ return self->insert(pos, x); }
 SWIGINTERN void std_vector_Sl_std_vector_Sl_double_Sg__Sg__insert__SWIG_1(std::vector< std::vector< double > > *self,std::vector< std::vector< double > >::iterator pos,std::vector< std::vector< double > >::size_type n,std::vector< std::vector< double > >::value_type const &x){ self->insert(pos, n, x); }
 
+#include <limits.h>
+#if !defined(SWIG_NO_LLONG_MAX)
+# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
+#   define LLONG_MAX __LONG_LONG_MAX__
+#   define LLONG_MIN (-LLONG_MAX - 1LL)
+#   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
+# endif
+#endif
+
+
 SWIGINTERN int
 SWIG_AsVal_int (PyObject * obj, int *val)
 {
@@ -6161,7 +5990,7 @@ SWIG_AsVal_std_complex_Sl_double_Sg_  (PyObject *o, std::complex<double>* val)
 
 
 SWIGINTERNINLINE PyObject*
-SWIG_From_std_complex_Sl_double_Sg_  (/*@SWIG:/usr/local/share/swig/3.0.12/typemaps/swigmacros.swg,104,%ifcplusplus@*/
+SWIG_From_std_complex_Sl_double_Sg_  (/*@SWIG:/usr/share/swig3.0/typemaps/swigmacros.swg,104,%ifcplusplus@*/
 
 const std::complex<double>&
 
@@ -6311,18 +6140,13 @@ SWIGINTERN int
 SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
 {
 #if PY_VERSION_HEX>=0x03000000
-#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
-  if (PyBytes_Check(obj))
-#else
   if (PyUnicode_Check(obj))
-#endif
 #else  
   if (PyString_Check(obj))
 #endif
   {
     char *cstr; Py_ssize_t len;
 #if PY_VERSION_HEX>=0x03000000
-#if !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
     if (!alloc && cptr) {
         /* We can't allow converting without allocation, since the internal
            representation of string in Python 3 is UCS-2/UCS-4 but we require
@@ -6331,9 +6155,8 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
         return SWIG_RuntimeError;
     }
     obj = PyUnicode_AsUTF8String(obj);
-    if(alloc) *alloc = SWIG_NEWOBJ;
-#endif
     PyBytes_AsStringAndSize(obj, &cstr, &len);
+    if(alloc) *alloc = SWIG_NEWOBJ;
 #else
     PyString_AsStringAndSize(obj, &cstr, &len);
 #endif
@@ -6354,34 +6177,26 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
 	if (*alloc == SWIG_NEWOBJ) 
 #endif
 	{
-	  *cptr = reinterpret_cast< char* >(memcpy(new char[len + 1], cstr, sizeof(char)*(len + 1)));
+	  *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
 	  *alloc = SWIG_NEWOBJ;
 	} else {
 	  *cptr = cstr;
 	  *alloc = SWIG_OLDOBJ;
 	}
       } else {
-#if PY_VERSION_HEX>=0x03000000
-#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
-	*cptr = PyBytes_AsString(obj);
-#else
-	assert(0); /* Should never reach here with Unicode strings in Python 3 */
-#endif
-#else
+	#if PY_VERSION_HEX>=0x03000000
+	assert(0); /* Should never reach here in Python 3 */
+	#endif
 	*cptr = SWIG_Python_str_AsChar(obj);
-#endif
       }
     }
     if (psize) *psize = len + 1;
-#if PY_VERSION_HEX>=0x03000000 && !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+#if PY_VERSION_HEX>=0x03000000
     Py_XDECREF(obj);
 #endif
     return SWIG_OK;
   } else {
 #if defined(SWIG_PYTHON_2_UNICODE)
-#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
-#error "Cannot use both SWIG_PYTHON_2_UNICODE and SWIG_PYTHON_STRICT_BYTE_CHAR at once"
-#endif
 #if PY_VERSION_HEX<0x03000000
     if (PyUnicode_Check(obj)) {
       char *cstr; Py_ssize_t len;
@@ -6392,7 +6207,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
       if (PyString_AsStringAndSize(obj, &cstr, &len) != -1) {
         if (cptr) {
           if (alloc) *alloc = SWIG_NEWOBJ;
-          *cptr = reinterpret_cast< char* >(memcpy(new char[len + 1], cstr, sizeof(char)*(len + 1)));
+          *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
         }
         if (psize) *psize = len + 1;
 
@@ -6479,15 +6294,11 @@ SWIG_FromCharPtrAndSize(const char* carray, size_t size)
 	SWIG_InternalNewPointerObj(const_cast< char * >(carray), pchar_descriptor, 0) : SWIG_Py_Void();
     } else {
 #if PY_VERSION_HEX >= 0x03000000
-#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
-      return PyBytes_FromStringAndSize(carray, static_cast< Py_ssize_t >(size));
-#else
 #if PY_VERSION_HEX >= 0x03010000
       return PyUnicode_DecodeUTF8(carray, static_cast< Py_ssize_t >(size), "surrogateescape");
 #else
       return PyUnicode_FromStringAndSize(carray, static_cast< Py_ssize_t >(size));
 #endif
-#endif
 #else
       return PyString_FromStringAndSize(carray, static_cast< Py_ssize_t >(size));
 #endif
@@ -7256,6 +7067,44 @@ struct SWIG_null_deleter {
 
 #define SWIG_NO_NULL_DELETER_SWIG_BUILTIN_INIT
 
+
+SWIGINTERN int
+SWIG_AsVal_long_SS_long (PyObject *obj, long long *val)
+{
+  int res = SWIG_TypeError;
+  if (PyLong_Check(obj)) {
+    long long v = PyLong_AsLongLong(obj);
+    if (!PyErr_Occurred()) {
+      if (val) *val = v;
+      return SWIG_OK;
+    } else {
+      PyErr_Clear();
+      res = SWIG_OverflowError;
+    }
+  } else {
+    long v;
+    res = SWIG_AsVal_long (obj,&v);
+    if (SWIG_IsOK(res)) {
+      if (val) *val = v;
+      return res;
+    }
+  }
+#ifdef SWIG_PYTHON_CAST_MODE
+  {
+    const double mant_max = 1LL << DBL_MANT_DIG;
+    const double mant_min = -mant_max;
+    double d;
+    res = SWIG_AsVal_double (obj,&d);
+    if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, mant_min, mant_max)) {
+      if (val) *val = (long long)(d);
+      return SWIG_AddCast(res);
+    }
+    res = SWIG_TypeError;
+  }
+#endif
+  return res;
+}
+
 SWIGINTERN RealParameter *IMultiLayerBuilder_registerParameter(IMultiLayerBuilder *self,std::string const &name,int64_t parpointer){
         return &((*(self)).registerParameter(name, (double*)parpointer)); }
 SWIGINTERN void IMultiLayerBuilder_setParameterValue(IMultiLayerBuilder *self,std::string const &name,double value){
@@ -7567,8 +7416,8 @@ ParameterPool *SwigDirector_IParameterized::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char *const swig_method_name = "createParameterTree";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "createParameterTree";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -7595,8 +7444,8 @@ void SwigDirector_IParameterized::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char *const swig_method_name = "onChange";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "onChange";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -7631,8 +7480,8 @@ ParameterPool *SwigDirector_INode::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char *const swig_method_name = "createParameterTree";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "createParameterTree";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -7659,8 +7508,8 @@ void SwigDirector_INode::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char *const swig_method_name = "onChange";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "onChange";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -7682,8 +7531,8 @@ void SwigDirector_INode::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char *const swig_method_name = "accept";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "accept";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -7704,8 +7553,8 @@ std::string SwigDirector_INode::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char *const swig_method_name = "treeToString";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "treeToString";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -7737,8 +7586,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_INode:
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char *const swig_method_name = "getChildren";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "getChildren";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -7767,8 +7616,8 @@ void SwigDirector_INode::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char *const swig_method_name = "setParent";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "setParent";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -7803,8 +7652,8 @@ ISample *SwigDirector_ISample::clone() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char *const swig_method_name = "clone";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "clone";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
@@ -7831,8 +7680,8 @@ void SwigDirector_ISample::transferToCPP() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char *const swig_method_name = "transferToCPP";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "transferToCPP";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
@@ -7857,8 +7706,8 @@ ParameterPool *SwigDirector_ISample::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char *const swig_method_name = "createParameterTree";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "createParameterTree";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -7885,8 +7734,8 @@ void SwigDirector_ISample::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char *const swig_method_name = "onChange";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "onChange";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -7908,8 +7757,8 @@ void SwigDirector_ISample::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char *const swig_method_name = "accept";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "accept";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -7930,8 +7779,8 @@ std::string SwigDirector_ISample::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char *const swig_method_name = "treeToString";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "treeToString";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -7960,8 +7809,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_ISampl
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 6;
-  const char *const swig_method_name = "getChildren";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "getChildren";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -7991,8 +7840,8 @@ void SwigDirector_ISample::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 7;
-  const char *const swig_method_name = "setParent";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "setParent";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -8017,8 +7866,8 @@ HomogeneousMaterial const *SwigDirector_ISample::material() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 8;
-  const char *const swig_method_name = "material";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "material";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "material", NULL);
@@ -8051,14 +7900,14 @@ SwigDirector_IObservable::~SwigDirector_IObservable() {
 
 void SwigDirector_IObservable::attachObserver(IObservable::observer_t obj) {
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new IObservable::observer_t((const IObservable::observer_t &)obj)), SWIGTYPE_p_std__shared_ptrT_IObserver_t, SWIG_POINTER_OWN |  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&obj), SWIGTYPE_p_std__shared_ptrT_IObserver_t,  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IObservable.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char *const swig_method_name = "attachObserver";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "attachObserver";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"attachObserver", (char *)"(O)" ,(PyObject *)obj0);
@@ -8078,8 +7927,8 @@ void SwigDirector_IObservable::notifyObservers() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char *const swig_method_name = "notifyObservers";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "notifyObservers";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "notifyObservers", NULL);
@@ -8111,8 +7960,8 @@ void SwigDirector_IFitObserver::notify(IObservable *subject) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char *const swig_method_name = "notify";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "notify";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"notify", (char *)"(O)" ,(PyObject *)obj0);
@@ -8134,8 +7983,8 @@ void SwigDirector_IFitObserver::update(FitSuite *fit_suite) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char *const swig_method_name = "update";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "update";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"update", (char *)"(O)" ,(PyObject *)obj0);
@@ -8170,8 +8019,8 @@ ParameterPool *SwigDirector_IMultiLayerBuilder::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char *const swig_method_name = "createParameterTree";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "createParameterTree";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -8198,8 +8047,8 @@ void SwigDirector_IMultiLayerBuilder::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char *const swig_method_name = "onChange";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "onChange";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -8224,8 +8073,8 @@ MultiLayer *SwigDirector_IMultiLayerBuilder::buildSample() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char *const swig_method_name = "buildSample";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "buildSample";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "buildSample", NULL);
@@ -8259,8 +8108,8 @@ MultiLayer *SwigDirector_IMultiLayerBuilder::createSample(size_t index) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char *const swig_method_name = "createSample";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "createSample";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"createSample", (char *)"(O)" ,(PyObject *)obj0);
@@ -8288,8 +8137,8 @@ size_t SwigDirector_IMultiLayerBuilder::size() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char *const swig_method_name = "size";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "size";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "size", NULL);
@@ -8331,8 +8180,8 @@ IFormFactor *SwigDirector_IFormFactor::clone() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char *const swig_method_name = "clone";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "clone";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
@@ -8359,8 +8208,8 @@ void SwigDirector_IFormFactor::transferToCPP() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char *const swig_method_name = "transferToCPP";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "transferToCPP";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
@@ -8385,8 +8234,8 @@ ParameterPool *SwigDirector_IFormFactor::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char *const swig_method_name = "createParameterTree";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "createParameterTree";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -8413,8 +8262,8 @@ void SwigDirector_IFormFactor::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char *const swig_method_name = "onChange";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "onChange";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -8436,8 +8285,8 @@ void SwigDirector_IFormFactor::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char *const swig_method_name = "accept";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "accept";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -8458,8 +8307,8 @@ std::string SwigDirector_IFormFactor::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char *const swig_method_name = "treeToString";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "treeToString";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -8488,8 +8337,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_IFormF
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 6;
-  const char *const swig_method_name = "getChildren";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "getChildren";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -8519,8 +8368,8 @@ void SwigDirector_IFormFactor::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 7;
-  const char *const swig_method_name = "setParent";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "setParent";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -8545,8 +8394,8 @@ HomogeneousMaterial const *SwigDirector_IFormFactor::material() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 8;
-  const char *const swig_method_name = "material";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "material";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "material", NULL);
@@ -8569,14 +8418,14 @@ HomogeneousMaterial const *SwigDirector_IFormFactor::material() const {
 
 void SwigDirector_IFormFactor::setAmbientMaterial(HomogeneousMaterial arg0) {
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new HomogeneousMaterial((const HomogeneousMaterial &)arg0)), SWIGTYPE_p_HomogeneousMaterial, SWIG_POINTER_OWN |  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&arg0), SWIGTYPE_p_HomogeneousMaterial,  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactor.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 9;
-  const char *const swig_method_name = "setAmbientMaterial";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "setAmbientMaterial";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setAmbientMaterial", (char *)"(O)" ,(PyObject *)obj0);
@@ -8599,8 +8448,8 @@ complex_t SwigDirector_IFormFactor::evaluate(WavevectorInfo const &wavevectors)
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 10;
-  const char *const swig_method_name = "evaluate";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "evaluate";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate", (char *)"(O)" ,(PyObject *)obj0);
@@ -8628,8 +8477,8 @@ double SwigDirector_IFormFactor::volume() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 11;
-  const char *const swig_method_name = "volume";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "volume";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "volume", NULL);
@@ -8657,8 +8506,8 @@ double SwigDirector_IFormFactor::radialExtension() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 12;
-  const char *const swig_method_name = "radialExtension";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "radialExtension";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "radialExtension", NULL);
@@ -8688,8 +8537,8 @@ double SwigDirector_IFormFactor::bottomZ(IRotation const &rotation) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 13;
-  const char *const swig_method_name = "bottomZ";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "bottomZ";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"bottomZ", (char *)"(O)" ,(PyObject *)obj0);
@@ -8719,8 +8568,8 @@ double SwigDirector_IFormFactor::topZ(IRotation const &rotation) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 14;
-  const char *const swig_method_name = "topZ";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "topZ";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"topZ", (char *)"(O)" ,(PyObject *)obj0);
@@ -8751,8 +8600,8 @@ void SwigDirector_IFormFactor::setSpecularInfo(ILayerRTCoefficients const *arg0,
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 15;
-  const char *const swig_method_name = "setSpecularInfo";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "setSpecularInfo";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setSpecularInfo", (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
@@ -8776,8 +8625,8 @@ bool SwigDirector_IFormFactor::canSliceAnalytically(IRotation const &rot) const
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 16;
-  const char *const swig_method_name = "canSliceAnalytically";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "canSliceAnalytically";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"canSliceAnalytically", (char *)"(O)" ,(PyObject *)obj0);
@@ -8806,19 +8655,19 @@ IFormFactor *SwigDirector_IFormFactor::sliceFormFactor(ZLimits limits, IRotation
   
   IFormFactor *c_result;
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new ZLimits((const ZLimits &)limits)), SWIGTYPE_p_ZLimits, SWIG_POINTER_OWN |  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&limits), SWIGTYPE_p_ZLimits,  0 );
   swig::SwigVar_PyObject obj1;
   obj1 = SWIG_NewPointerObj(SWIG_as_voidptr(&rot), SWIGTYPE_p_IRotation,  0 );
   swig::SwigVar_PyObject obj2;
-  obj2 = SWIG_NewPointerObj(SWIG_as_voidptr(new kvector_t((const kvector_t &)translation)), SWIGTYPE_p_BasicVector3DT_double_t, SWIG_POINTER_OWN |  0 );
+  obj2 = SWIG_NewPointerObj(SWIG_as_voidptr(&translation), SWIGTYPE_p_BasicVector3DT_double_t,  0 );
   swig_set_inner("sliceFormFactor", true);
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactor.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 17;
-  const char *const swig_method_name = "sliceFormFactor";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "sliceFormFactor";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"sliceFormFactor", (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
@@ -8861,8 +8710,8 @@ IFormFactorBorn *SwigDirector_IFormFactorBorn::clone() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char *const swig_method_name = "clone";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "clone";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
@@ -8889,8 +8738,8 @@ void SwigDirector_IFormFactorBorn::transferToCPP() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char *const swig_method_name = "transferToCPP";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "transferToCPP";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
@@ -8915,8 +8764,8 @@ ParameterPool *SwigDirector_IFormFactorBorn::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char *const swig_method_name = "createParameterTree";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "createParameterTree";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -8943,8 +8792,8 @@ void SwigDirector_IFormFactorBorn::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char *const swig_method_name = "onChange";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "onChange";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -8966,8 +8815,8 @@ void SwigDirector_IFormFactorBorn::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char *const swig_method_name = "accept";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "accept";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -8988,8 +8837,8 @@ std::string SwigDirector_IFormFactorBorn::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char *const swig_method_name = "treeToString";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "treeToString";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -9018,8 +8867,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_IFormF
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 6;
-  const char *const swig_method_name = "getChildren";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "getChildren";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -9049,8 +8898,8 @@ void SwigDirector_IFormFactorBorn::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 7;
-  const char *const swig_method_name = "setParent";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "setParent";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -9075,8 +8924,8 @@ HomogeneousMaterial const *SwigDirector_IFormFactorBorn::material() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 8;
-  const char *const swig_method_name = "material";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "material";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "material", NULL);
@@ -9099,14 +8948,14 @@ HomogeneousMaterial const *SwigDirector_IFormFactorBorn::material() const {
 
 void SwigDirector_IFormFactorBorn::setAmbientMaterial(HomogeneousMaterial arg0) {
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new HomogeneousMaterial((const HomogeneousMaterial &)arg0)), SWIGTYPE_p_HomogeneousMaterial, SWIG_POINTER_OWN |  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&arg0), SWIGTYPE_p_HomogeneousMaterial,  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactorBorn.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 9;
-  const char *const swig_method_name = "setAmbientMaterial";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "setAmbientMaterial";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setAmbientMaterial", (char *)"(O)" ,(PyObject *)obj0);
@@ -9129,8 +8978,8 @@ complex_t SwigDirector_IFormFactorBorn::evaluate(WavevectorInfo const &wavevecto
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 10;
-  const char *const swig_method_name = "evaluate";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "evaluate";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate", (char *)"(O)" ,(PyObject *)obj0);
@@ -9158,8 +9007,8 @@ double SwigDirector_IFormFactorBorn::volume() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 11;
-  const char *const swig_method_name = "volume";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "volume";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "volume", NULL);
@@ -9187,8 +9036,8 @@ double SwigDirector_IFormFactorBorn::radialExtension() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 12;
-  const char *const swig_method_name = "radialExtension";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "radialExtension";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "radialExtension", NULL);
@@ -9218,8 +9067,8 @@ double SwigDirector_IFormFactorBorn::bottomZ(IRotation const &rotation) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 13;
-  const char *const swig_method_name = "bottomZ";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "bottomZ";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"bottomZ", (char *)"(O)" ,(PyObject *)obj0);
@@ -9249,8 +9098,8 @@ double SwigDirector_IFormFactorBorn::topZ(IRotation const &rotation) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 14;
-  const char *const swig_method_name = "topZ";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "topZ";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"topZ", (char *)"(O)" ,(PyObject *)obj0);
@@ -9281,8 +9130,8 @@ void SwigDirector_IFormFactorBorn::setSpecularInfo(ILayerRTCoefficients const *a
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 15;
-  const char *const swig_method_name = "setSpecularInfo";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "setSpecularInfo";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setSpecularInfo", (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
@@ -9306,8 +9155,8 @@ bool SwigDirector_IFormFactorBorn::canSliceAnalytically(IRotation const &rot) co
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 16;
-  const char *const swig_method_name = "canSliceAnalytically";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "canSliceAnalytically";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"canSliceAnalytically", (char *)"(O)" ,(PyObject *)obj0);
@@ -9336,19 +9185,19 @@ IFormFactor *SwigDirector_IFormFactorBorn::sliceFormFactor(ZLimits limits, IRota
   
   IFormFactor *c_result;
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new ZLimits((const ZLimits &)limits)), SWIGTYPE_p_ZLimits, SWIG_POINTER_OWN |  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&limits), SWIGTYPE_p_ZLimits,  0 );
   swig::SwigVar_PyObject obj1;
   obj1 = SWIG_NewPointerObj(SWIG_as_voidptr(&rot), SWIGTYPE_p_IRotation,  0 );
   swig::SwigVar_PyObject obj2;
-  obj2 = SWIG_NewPointerObj(SWIG_as_voidptr(new kvector_t((const kvector_t &)translation)), SWIGTYPE_p_BasicVector3DT_double_t, SWIG_POINTER_OWN |  0 );
+  obj2 = SWIG_NewPointerObj(SWIG_as_voidptr(&translation), SWIGTYPE_p_BasicVector3DT_double_t,  0 );
   swig_set_inner("sliceFormFactor", true);
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactorBorn.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 17;
-  const char *const swig_method_name = "sliceFormFactor";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "sliceFormFactor";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"sliceFormFactor", (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
@@ -9373,14 +9222,14 @@ IFormFactor *SwigDirector_IFormFactorBorn::sliceFormFactor(ZLimits limits, IRota
 complex_t SwigDirector_IFormFactorBorn::evaluate_for_q(cvector_t q) const {
   complex_t c_result;
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new cvector_t((const cvector_t &)q)), SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t, SWIG_POINTER_OWN |  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&q), SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t,  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactorBorn.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 18;
-  const char *const swig_method_name = "evaluate_for_q";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "evaluate_for_q";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate_for_q", (char *)"(O)" ,(PyObject *)obj0);
@@ -9422,8 +9271,8 @@ IInterferenceFunction *SwigDirector_IInterferenceFunction::clone() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char *const swig_method_name = "clone";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "clone";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
@@ -9450,8 +9299,8 @@ void SwigDirector_IInterferenceFunction::transferToCPP() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char *const swig_method_name = "transferToCPP";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "transferToCPP";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
@@ -9476,8 +9325,8 @@ ParameterPool *SwigDirector_IInterferenceFunction::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char *const swig_method_name = "createParameterTree";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "createParameterTree";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -9504,8 +9353,8 @@ void SwigDirector_IInterferenceFunction::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char *const swig_method_name = "onChange";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "onChange";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -9527,8 +9376,8 @@ void SwigDirector_IInterferenceFunction::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char *const swig_method_name = "accept";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "accept";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -9549,8 +9398,8 @@ std::string SwigDirector_IInterferenceFunction::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char *const swig_method_name = "treeToString";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "treeToString";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -9579,8 +9428,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_IInter
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 6;
-  const char *const swig_method_name = "getChildren";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "getChildren";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -9610,8 +9459,8 @@ void SwigDirector_IInterferenceFunction::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 7;
-  const char *const swig_method_name = "setParent";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "setParent";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -9636,8 +9485,8 @@ HomogeneousMaterial const *SwigDirector_IInterferenceFunction::material() const
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 8;
-  const char *const swig_method_name = "material";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "material";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "material", NULL);
@@ -9661,14 +9510,14 @@ HomogeneousMaterial const *SwigDirector_IInterferenceFunction::material() const
 double SwigDirector_IInterferenceFunction::evaluate(kvector_t const q) const {
   double c_result;
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new kvector_t((const kvector_t &)q)), SWIGTYPE_p_BasicVector3DT_double_t, SWIG_POINTER_OWN |  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&q), SWIGTYPE_p_BasicVector3DT_double_t,  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IInterferenceFunction.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 9;
-  const char *const swig_method_name = "evaluate";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "evaluate";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate", (char *)"(O)" ,(PyObject *)obj0);
@@ -9696,8 +9545,8 @@ double SwigDirector_IInterferenceFunction::kappa() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 10;
-  const char *const swig_method_name = "kappa";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "kappa";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "kappa", NULL);
@@ -9725,8 +9574,8 @@ double SwigDirector_IInterferenceFunction::getParticleDensity() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 11;
-  const char *const swig_method_name = "getParticleDensity";
-  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
+  const char * const swig_method_name = "getParticleDensity";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getParticleDensity", NULL);
@@ -10595,11 +10444,22 @@ fail:
 
 SWIGINTERN PyObject *SwigPyIterator_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_swig__SwigPyIterator, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
+SWIGINTERN PyObject *SHARED_PTR_DISOWN_swigconstant(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *module;
+  PyObject *d;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigconstant", &module)) return NULL;
+  d = PyModule_GetDict(module);
+  if (!d) return NULL;
+  SWIG_Python_SetConstant(d, "SHARED_PTR_DISOWN",SWIG_From_int(static_cast< int >(0)));
+  return SWIG_Py_Void();
+}
+
+
 SWIGINTERN PyObject *_wrap_vdouble1d_t_iterator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   std::vector< double > *arg1 = (std::vector< double > *) 0 ;
@@ -12513,7 +12373,7 @@ fail:
 
 SWIGINTERN PyObject *vdouble1d_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -14461,7 +14321,7 @@ fail:
 
 SWIGINTERN PyObject *vdouble2d_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -16379,7 +16239,7 @@ fail:
 
 SWIGINTERN PyObject *vector_integer_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -18327,7 +18187,7 @@ fail:
 
 SWIGINTERN PyObject *vinteger2d_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -20245,7 +20105,7 @@ fail:
 
 SWIGINTERN PyObject *vector_longinteger_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -22163,7 +22023,7 @@ fail:
 
 SWIGINTERN PyObject *vector_complex_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -24111,7 +23971,7 @@ fail:
 
 SWIGINTERN PyObject *vector_string_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -24299,7 +24159,7 @@ fail:
 
 SWIGINTERN PyObject *INoncopyable_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_INoncopyable, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -24370,7 +24230,7 @@ fail:
 
 SWIGINTERN PyObject *ICloneable_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ICloneable, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -24545,7 +24405,7 @@ fail:
 
 SWIGINTERN PyObject *INamed_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_INamed, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -25026,7 +24886,7 @@ fail:
 
 SWIGINTERN PyObject *IParameterized_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IParameterized, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -25472,7 +25332,7 @@ fail:
 
 SWIGINTERN PyObject *INode_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_INode, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -27369,7 +27229,7 @@ fail:
 
 SWIGINTERN PyObject *swig_dummy_type_inode_vector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -29266,7 +29126,7 @@ fail:
 
 SWIGINTERN PyObject *swig_dummy_type_const_inode_vector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -30074,7 +29934,7 @@ fail:
 
 SWIGINTERN PyObject *kvector_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_BasicVector3DT_double_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -31990,7 +31850,7 @@ fail:
 
 SWIGINTERN PyObject *vector_kvector_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -32536,7 +32396,7 @@ fail:
 
 SWIGINTERN PyObject *cvector_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -34452,7 +34312,7 @@ fail:
 
 SWIGINTERN PyObject *vector_cvector_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -35097,7 +34957,7 @@ fail:
 
 SWIGINTERN PyObject *WavevectorInfo_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_WavevectorInfo, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -35474,7 +35334,7 @@ fail:
 
 SWIGINTERN PyObject *Beam_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Beam, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -35735,7 +35595,7 @@ fail:
 
 SWIGINTERN PyObject *Bin1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Bin1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -36107,7 +35967,7 @@ fail:
 
 SWIGINTERN PyObject *Bin1DKVector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Bin1DKVector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -36445,7 +36305,7 @@ fail:
 
 SWIGINTERN PyObject *Bin1DCVector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Bin1DCVector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -36944,7 +36804,7 @@ fail:
 
 SWIGINTERN PyObject *IAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -37359,7 +37219,7 @@ fail:
 
 SWIGINTERN PyObject *VariableBinAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_VariableBinAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -37505,7 +37365,7 @@ fail:
 
 SWIGINTERN PyObject *ConstKBinAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ConstKBinAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -37704,7 +37564,7 @@ fail:
 
 SWIGINTERN PyObject *CustomBinAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_CustomBinAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -37900,7 +37760,7 @@ fail:
 
 SWIGINTERN PyObject *IShape2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IShape2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -38078,7 +37938,7 @@ fail:
 
 SWIGINTERN PyObject *ISample_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ISample, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -38489,7 +38349,7 @@ fail:
 
 SWIGINTERN PyObject *IChiSquaredModule_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IChiSquaredModule, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -38571,7 +38431,7 @@ fail:
 
 SWIGINTERN PyObject *IObserver_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__shared_ptrT_IObserver_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -38725,7 +38585,7 @@ fail:
 
 SWIGINTERN PyObject *IObservable_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IObservable, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -38944,7 +38804,7 @@ fail:
 
 SWIGINTERN PyObject *IFitObserver_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__shared_ptrT_IFitObserver_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39045,7 +38905,7 @@ fail:
 
 SWIGINTERN PyObject *IFitStrategy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFitStrategy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39129,7 +38989,7 @@ fail:
 
 SWIGINTERN PyObject *FitStrategyDefault_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitStrategyDefault, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39210,7 +39070,7 @@ fail:
 
 SWIGINTERN PyObject *IIntensityFunction_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IIntensityFunction, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39304,7 +39164,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityFunctionLog_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityFunctionLog, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39398,7 +39258,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityFunctionSqrt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityFunctionSqrt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39545,7 +39405,7 @@ fail:
 
 SWIGINTERN PyObject *IIntensityNormalizer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IIntensityNormalizer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39840,7 +39700,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityNormalizer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityNormalizer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40068,7 +39928,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityScaleAndShiftNormalizer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityScaleAndShiftNormalizer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40287,7 +40147,7 @@ fail:
 
 SWIGINTERN PyObject *ISquaredFunction_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ISquaredFunction, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40519,7 +40379,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionDefault_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionDefault, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40649,7 +40509,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionSimError_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionSimError, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40779,7 +40639,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionMeanSquaredError_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionMeanSquaredError, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40909,7 +40769,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionSystematicError_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionSystematicError, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41039,7 +40899,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionGaussianError_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionGaussianError, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41215,7 +41075,7 @@ fail:
 
 SWIGINTERN PyObject *ChiSquaredModule_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ChiSquaredModule, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41799,7 +41659,7 @@ fail:
 
 SWIGINTERN PyObject *FitObject_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitObject, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41944,7 +41804,7 @@ fail:
 
 SWIGINTERN PyObject *FitOptions_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitOptions, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -42629,7 +42489,7 @@ fail:
 
 SWIGINTERN PyObject *FitParameter_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitParameter, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -44797,7 +44657,7 @@ fail:
 
 SWIGINTERN PyObject *FitSuite_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitSuite, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -45695,7 +45555,7 @@ fail:
 
 SWIGINTERN PyObject *FitSuiteObjects_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitSuiteObjects, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -46243,6 +46103,28 @@ fail:
 }
 
 
+SWIGINTERN PyObject *FORWARD_FFT_swigconstant(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *module;
+  PyObject *d;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigconstant", &module)) return NULL;
+  d = PyModule_GetDict(module);
+  if (!d) return NULL;
+  SWIG_Python_SetConstant(d, "FORWARD_FFT",SWIG_From_int(static_cast< int >(MathFunctions::FORWARD_FFT)));
+  return SWIG_Py_Void();
+}
+
+
+SWIGINTERN PyObject *BACKWARD_FFT_swigconstant(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *module;
+  PyObject *d;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigconstant", &module)) return NULL;
+  d = PyModule_GetDict(module);
+  if (!d) return NULL;
+  SWIG_Python_SetConstant(d, "BACKWARD_FFT",SWIG_From_int(static_cast< int >(MathFunctions::BACKWARD_FFT)));
+  return SWIG_Py_Void();
+}
+
+
 SWIGINTERN PyObject *_wrap_FastFourierTransform__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   std::vector< complex_t,std::allocator< complex_t > > *arg1 = 0 ;
@@ -46981,7 +46863,7 @@ fail:
 
 SWIGINTERN PyObject *AdjustMinimizerStrategy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_AdjustMinimizerStrategy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -47505,7 +47387,7 @@ fail:
 
 SWIGINTERN PyObject *IMultiLayerBuilder_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -52478,7 +52360,7 @@ fail:
 
 SWIGINTERN PyObject *INodeVisitor_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_INodeVisitor, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -52707,7 +52589,7 @@ fail:
 
 SWIGINTERN PyObject *IClusteredParticles_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IClusteredParticles, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -53051,7 +52933,7 @@ fail:
 
 SWIGINTERN PyObject *Crystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Crystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -53678,7 +53560,7 @@ fail:
 
 SWIGINTERN PyObject *IDistribution1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IDistribution1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -54122,7 +54004,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionGate_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionGate, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -54544,7 +54426,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionLorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionLorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -54966,7 +54848,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionGaussian_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionGaussian, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -55463,7 +55345,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionLogNormal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionLogNormal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -55885,7 +55767,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionCosine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionCosine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -56381,7 +56263,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionTrapezoid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionTrapezoid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -56841,7 +56723,7 @@ fail:
 
 SWIGINTERN PyObject *DetectorMask_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DetectorMask, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -57338,7 +57220,7 @@ fail:
 
 SWIGINTERN PyObject *Ellipse_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Ellipse, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -57441,7 +57323,7 @@ fail:
 
 SWIGINTERN PyObject *IFTDecayFunction1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFTDecayFunction1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -57574,7 +57456,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction1DCauchy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction1DCauchy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -57707,7 +57589,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction1DGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction1DGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -57840,7 +57722,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction1DTriangle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction1DTriangle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -58004,7 +57886,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction1DVoigt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction1DVoigt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -58302,7 +58184,7 @@ fail:
 
 SWIGINTERN PyObject *IFTDecayFunction2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFTDecayFunction2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -58553,7 +58435,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction2DCauchy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction2DCauchy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -58804,7 +58686,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction2DGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction2DGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -59107,7 +58989,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction2DVoigt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction2DVoigt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -59240,7 +59122,7 @@ fail:
 
 SWIGINTERN PyObject *IFTDistribution1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFTDistribution1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -59373,7 +59255,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DCauchy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DCauchy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -59506,7 +59388,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -59639,7 +59521,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DGate_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DGate, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -59772,7 +59654,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DTriangle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DTriangle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -59905,7 +59787,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DCosine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DCosine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60069,7 +59951,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DVoigt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DVoigt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60277,7 +60159,7 @@ fail:
 
 SWIGINTERN PyObject *IFTDistribution2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFTDistribution2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60528,7 +60410,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DCauchy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DCauchy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60779,7 +60661,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -61030,7 +60912,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DGate_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DGate, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -61281,7 +61163,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DCone_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DCone, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -61584,7 +61466,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DVoigt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DVoigt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -61964,7 +61846,7 @@ fail:
 
 SWIGINTERN PyObject *FixedBinAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FixedBinAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -62612,7 +62494,7 @@ fail:
 
 SWIGINTERN PyObject *IFormFactor_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFormFactor, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -64563,7 +64445,7 @@ fail:
 
 SWIGINTERN PyObject *vector_IFormFactorPtr_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -65068,7 +64950,7 @@ fail:
 
 SWIGINTERN PyObject *IFormFactorBorn_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFormFactorBorn, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -65265,7 +65147,7 @@ fail:
 
 SWIGINTERN PyObject *SlicingEffects_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SlicingEffects, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -65495,7 +65377,7 @@ fail:
 
 SWIGINTERN PyObject *IFormFactorDecorator_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFormFactorDecorator, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -65640,7 +65522,7 @@ fail:
 
 SWIGINTERN PyObject *PolygonalTopology_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PolygonalTopology, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -65785,7 +65667,7 @@ fail:
 
 SWIGINTERN PyObject *PolyhedralTopology_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PolyhedralTopology, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -66039,7 +65921,7 @@ fail:
 
 SWIGINTERN PyObject *PolyhedralEdge_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PolyhedralEdge, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -66519,7 +66401,7 @@ fail:
 
 SWIGINTERN PyObject *PolyhedralFace_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PolyhedralFace, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -66690,7 +66572,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPolyhedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPolyhedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -66823,7 +66705,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPolygonalPrism_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPolygonalPrism, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -66934,7 +66816,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPolygonalSurface_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPolygonalSurface, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -67151,7 +67033,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorAnisoPyramid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorAnisoPyramid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -67398,7 +67280,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorBox_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorBox, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -67645,7 +67527,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCone_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCone, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -67831,7 +67713,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCone6_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCone6, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68144,7 +68026,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCrystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCrystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68361,7 +68243,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCuboctahedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCuboctahedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68577,7 +68459,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCylinder_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCylinder, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68824,7 +68706,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorDecoratorDebyeWaller_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorDecoratorDebyeWaller, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68948,7 +68830,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorDodecahedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorDodecahedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -69102,7 +68984,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorDot_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorDot, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -69349,7 +69231,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorEllipsoidalCylinder_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorEllipsoidalCylinder, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -69602,7 +69484,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorFullSphere_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorFullSphere, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -69818,7 +69700,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorFullSpheroid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorFullSpheroid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70104,7 +69986,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70351,7 +70233,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorHemiEllipsoid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorHemiEllipsoid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70475,7 +70357,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorIcosahedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorIcosahedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70722,7 +70604,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongBoxGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongBoxGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70969,7 +70851,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongBoxLorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongBoxLorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -71216,7 +71098,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongRipple1Gauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple1Gauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -71463,7 +71345,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongRipple1Lorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple1Lorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -71741,7 +71623,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongRipple2Gauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple2Gauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -72019,7 +71901,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongRipple2Lorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple2Lorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -72305,7 +72187,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -72438,7 +72320,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPrism3_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPrism3, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -72571,7 +72453,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPrism6_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPrism6, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -72757,7 +72639,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPyramid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPyramid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73004,7 +72886,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorRipple1_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple1, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73282,7 +73164,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorRipple2_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple2, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73454,7 +73336,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorSphereGaussianRadius_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorSphereGaussianRadius, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73635,7 +73517,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorSphereLogNormalRadius_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorSphereLogNormalRadius, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73807,7 +73689,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorSphereUniformRadius_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorSphereUniformRadius, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73993,7 +73875,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorTetrahedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorTetrahedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -74148,7 +74030,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorTruncatedCube_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorTruncatedCube, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -74486,7 +74368,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorTruncatedSphere_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorTruncatedSphere, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -74876,7 +74758,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorTruncatedSpheroid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorTruncatedSpheroid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -75260,7 +75142,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorWeighted_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorWeighted, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -76458,7 +76340,7 @@ fail:
 
 SWIGINTERN PyObject *Simulation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Simulation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -76986,7 +76868,7 @@ fail:
 
 SWIGINTERN PyObject *SimulationOptions_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SimulationOptions, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -77818,7 +77700,7 @@ fail:
 
 SWIGINTERN PyObject *GISASSimulation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_GISASSimulation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -79808,7 +79690,7 @@ fail:
 
 SWIGINTERN PyObject *IHistogram_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IHistogram, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -80407,7 +80289,7 @@ fail:
 
 SWIGINTERN PyObject *Histogram1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Histogram1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -81447,7 +81329,7 @@ fail:
 
 SWIGINTERN PyObject *Histogram2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Histogram2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -82036,7 +81918,7 @@ fail:
 
 SWIGINTERN PyObject *HomogeneousMaterial_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_HomogeneousMaterial, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -83364,7 +83246,7 @@ fail:
 
 SWIGINTERN PyObject *IDetector2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IDetector2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -83444,7 +83326,7 @@ fail:
 
 SWIGINTERN PyObject *IDetectorResolution_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IDetectorResolution, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -83724,7 +83606,7 @@ fail:
 
 SWIGINTERN PyObject *IInterferenceFunction_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IInterferenceFunction, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -83983,7 +83865,7 @@ fail:
 
 SWIGINTERN PyObject *ILayout_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ILayout, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -84153,7 +84035,7 @@ fail:
 
 SWIGINTERN PyObject *IAbstractParticle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IAbstractParticle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -84396,7 +84278,7 @@ fail:
 
 SWIGINTERN PyObject *IParameterReal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IParameterT_double_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -84541,7 +84423,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleLimits_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleLimits, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -85247,7 +85129,7 @@ fail:
 
 SWIGINTERN PyObject *IParticle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IParticle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -85337,7 +85219,7 @@ fail:
 
 SWIGINTERN PyObject *IResolutionFunction2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IResolutionFunction2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -85521,7 +85403,7 @@ fail:
 
 SWIGINTERN PyObject *IRotation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IRotation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -85751,7 +85633,7 @@ fail:
 
 SWIGINTERN PyObject *RotationX_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RotationX, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -85919,7 +85801,7 @@ fail:
 
 SWIGINTERN PyObject *RotationY_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RotationY, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -86135,7 +86017,7 @@ fail:
 
 SWIGINTERN PyObject *RotationZ_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RotationZ, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -86365,7 +86247,7 @@ fail:
 
 SWIGINTERN PyObject *RotationEuler_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RotationEuler, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -86449,7 +86331,7 @@ fail:
 
 SWIGINTERN PyObject *ISelectionRule_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ISelectionRule, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -86582,7 +86464,7 @@ fail:
 
 SWIGINTERN PyObject *SimpleSelectionRule_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SimpleSelectionRule, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -87822,7 +87704,7 @@ fail:
 
 SWIGINTERN PyObject *Instrument_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Instrument, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -88528,7 +88410,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityDataIOFactory_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityDataIOFactory, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -88755,7 +88637,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunction1DLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunction1DLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -89209,7 +89091,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunctionRadialParaCrystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunctionRadialParaCrystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -89897,7 +89779,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunction2DLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunction2DLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -91256,7 +91138,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunction2DParaCrystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunction2DParaCrystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -91388,7 +91270,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunctionNone_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunctionNone, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -91589,7 +91471,7 @@ fail:
 
 SWIGINTERN PyObject *IPixel_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IPixel, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -91892,7 +91774,7 @@ fail:
 
 SWIGINTERN PyObject *SphericalDetector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SphericalDetector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -92140,7 +92022,7 @@ fail:
 
 SWIGINTERN PyObject *SphericalPixel_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SphericalPixel, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -92399,7 +92281,7 @@ fail:
 
 SWIGINTERN PyObject *IsGISAXSDetector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IsGISAXSDetector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -93040,7 +92922,7 @@ fail:
 
 SWIGINTERN PyObject *Lattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Lattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -93257,7 +93139,7 @@ fail:
 
 SWIGINTERN PyObject *Lattice1DParameters_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Lattice1DParameters, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -93469,7 +93351,7 @@ fail:
 
 SWIGINTERN PyObject *Lattice2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Lattice2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -93798,7 +93680,7 @@ fail:
 
 SWIGINTERN PyObject *BasicLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_BasicLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -94067,7 +93949,7 @@ fail:
 
 SWIGINTERN PyObject *SquareLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquareLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -94336,7 +94218,7 @@ fail:
 
 SWIGINTERN PyObject *HexagonalLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_HexagonalLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -95054,7 +94936,7 @@ fail:
 
 SWIGINTERN PyObject *Layer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Layer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -95468,7 +95350,7 @@ fail:
 
 SWIGINTERN PyObject *LayerRoughness_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_LayerRoughness, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -95713,7 +95595,7 @@ fail:
 
 SWIGINTERN PyObject *Line_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Line, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -95953,7 +95835,7 @@ fail:
 
 SWIGINTERN PyObject *VerticalLine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_VerticalLine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -96193,7 +96075,7 @@ fail:
 
 SWIGINTERN PyObject *HorizontalLine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_HorizontalLine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -96373,7 +96255,7 @@ fail:
 
 SWIGINTERN PyObject *MesoCrystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_MesoCrystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -97329,7 +97211,7 @@ fail:
 
 SWIGINTERN PyObject *MultiLayer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_MultiLayer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -97805,7 +97687,7 @@ fail:
 
 SWIGINTERN PyObject *OffSpecSimulation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_OffSpecSimulation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -99351,7 +99233,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_IntensityData___itruediv__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_IntensityData___idiv__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   OutputData< double > *arg1 = (OutputData< double > *) 0 ;
   OutputData< double > *arg2 = 0 ;
@@ -99363,18 +99245,18 @@ SWIGINTERN PyObject *_wrap_IntensityData___itruediv__(PyObject *SWIGUNUSEDPARM(s
   PyObject * obj1 = 0 ;
   OutputData< double > *result = 0 ;
   
-  if (!PyArg_ParseTuple(args,(char *)"OO:IntensityData___itruediv__",&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTuple(args,(char *)"OO:IntensityData___idiv__",&obj0,&obj1)) SWIG_fail;
   res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_OutputDataT_double_t, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntensityData___itruediv__" "', argument " "1"" of type '" "OutputData< double > *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntensityData___idiv__" "', argument " "1"" of type '" "OutputData< double > *""'"); 
   }
   arg1 = reinterpret_cast< OutputData< double > * >(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_OutputDataT_double_t,  0  | 0);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IntensityData___itruediv__" "', argument " "2"" of type '" "OutputData< double > const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IntensityData___idiv__" "', argument " "2"" of type '" "OutputData< double > const &""'"); 
   }
   if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IntensityData___itruediv__" "', argument " "2"" of type '" "OutputData< double > const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IntensityData___idiv__" "', argument " "2"" of type '" "OutputData< double > const &""'"); 
   }
   arg2 = reinterpret_cast< OutputData< double > * >(argp2);
   result = (OutputData< double > *) &(arg1)->operator /=((OutputData< double > const &)*arg2);
@@ -99588,7 +99470,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityData_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_OutputDataT_double_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -100315,7 +100197,7 @@ fail:
 
 SWIGINTERN PyObject *ParameterDistribution_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParameterDistribution, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -100949,7 +100831,7 @@ fail:
 
 SWIGINTERN PyObject *ParameterPool_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParameterPool, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -101199,7 +101081,7 @@ fail:
 
 SWIGINTERN PyObject *ParameterSample_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParameterSample, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -103115,7 +102997,7 @@ fail:
 
 SWIGINTERN PyObject *ParameterSampleVector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -103553,7 +103435,7 @@ fail:
 
 SWIGINTERN PyObject *Particle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Particle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -104015,7 +103897,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleComposition_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleComposition, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -104343,7 +104225,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleCoreShell_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleCoreShell, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -104586,7 +104468,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleDistribution_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleDistribution, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -105279,7 +105161,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleLayout_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleLayout, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -105675,7 +105557,7 @@ fail:
 
 SWIGINTERN PyObject *Polygon_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Polygon, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -106515,7 +106397,7 @@ fail:
 
 SWIGINTERN PyObject *RealParameter_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RealParameter, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -106870,7 +106752,7 @@ fail:
 
 SWIGINTERN PyObject *Rectangle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Rectangle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -107966,7 +107848,7 @@ fail:
 
 SWIGINTERN PyObject *RectangularDetector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RectangularDetector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -108231,7 +108113,7 @@ fail:
 
 SWIGINTERN PyObject *RectangularPixel_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RectangularPixel, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -108426,7 +108308,7 @@ fail:
 
 SWIGINTERN PyObject *ResolutionFunction2DGaussian_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ResolutionFunction2DGaussian, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -109073,7 +108955,7 @@ fail:
 
 SWIGINTERN PyObject *SpecularSimulation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SpecularSimulation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -109322,7 +109204,7 @@ fail:
 
 SWIGINTERN PyObject *ThreadInfo_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ThreadInfo, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -109701,7 +109583,7 @@ fail:
 
 SWIGINTERN PyObject *SampleBuilderFactoryTemp_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFactoryT_std__string_IMultiLayerBuilder_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -109780,7 +109662,7 @@ fail:
 
 SWIGINTERN PyObject *SampleBuilderFactory_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SampleBuilderFactory, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -110149,7 +110031,7 @@ fail:
 
 SWIGINTERN PyObject *SimulationFactoryTemp_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFactoryT_std__string_GISASSimulation_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -110190,7 +110072,7 @@ fail:
 
 SWIGINTERN PyObject *SimulationFactory_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SimulationFactory, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -110224,6 +110106,7 @@ static PyMethodDef SwigMethods[] = {
 		"SwigPyIterator___sub__(SwigPyIterator self, SwigPyIterator x) -> ptrdiff_t\n"
 		""},
 	 { (char *)"SwigPyIterator_swigregister", SwigPyIterator_swigregister, METH_VARARGS, NULL},
+	 { (char *)"SHARED_PTR_DISOWN_swigconstant", SHARED_PTR_DISOWN_swigconstant, METH_VARARGS, NULL},
 	 { (char *)"vdouble1d_t_iterator", _wrap_vdouble1d_t_iterator, METH_VARARGS, (char *)"vdouble1d_t_iterator(vdouble1d_t self) -> SwigPyIterator"},
 	 { (char *)"vdouble1d_t___nonzero__", _wrap_vdouble1d_t___nonzero__, METH_VARARGS, (char *)"vdouble1d_t___nonzero__(vdouble1d_t self) -> bool"},
 	 { (char *)"vdouble1d_t___bool__", _wrap_vdouble1d_t___bool__, METH_VARARGS, (char *)"vdouble1d_t___bool__(vdouble1d_t self) -> bool"},
@@ -113433,6 +113316,8 @@ static PyMethodDef SwigMethods[] = {
 		"Complex Bessel function Bessel_J1(x)/x. \n"
 		"\n"
 		""},
+	 { (char *)"FORWARD_FFT_swigconstant", FORWARD_FFT_swigconstant, METH_VARARGS, NULL},
+	 { (char *)"BACKWARD_FFT_swigconstant", BACKWARD_FFT_swigconstant, METH_VARARGS, NULL},
 	 { (char *)"FastFourierTransform", _wrap_FastFourierTransform, METH_VARARGS, (char *)"\n"
 		"FastFourierTransform(vector_complex_t data, MathFunctions::EFFTDirection tcase) -> vector_complex_t\n"
 		"FastFourierTransform(vdouble1d_t data, MathFunctions::EFFTDirection tcase) -> vector_complex_t\n"
@@ -122483,7 +122368,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { (char *)"IntensityData___iadd__", _wrap_IntensityData___iadd__, METH_VARARGS, (char *)"IntensityData___iadd__(IntensityData self, IntensityData right) -> IntensityData"},
 	 { (char *)"IntensityData___isub__", _wrap_IntensityData___isub__, METH_VARARGS, (char *)"IntensityData___isub__(IntensityData self, IntensityData right) -> IntensityData"},
-	 { (char *)"IntensityData___itruediv__", _wrap_IntensityData___itruediv__, METH_VARARGS, (char *)"IntensityData___itruediv__(IntensityData self, IntensityData right) -> IntensityData"},
+	 { (char *)"IntensityData___idiv__", _wrap_IntensityData___idiv__, METH_VARARGS, (char *)"IntensityData___idiv__(IntensityData self, IntensityData right) -> IntensityData"},
 	 { (char *)"IntensityData___imul__", _wrap_IntensityData___imul__, METH_VARARGS, (char *)"IntensityData___imul__(IntensityData self, IntensityData right) -> IntensityData"},
 	 { (char *)"IntensityData_getValue", _wrap_IntensityData_getValue, METH_VARARGS, (char *)"\n"
 		"IntensityData_getValue(IntensityData self, size_t index) -> double\n"
@@ -128155,6 +128040,7 @@ extern "C" {
     static int type_init = 0;
     if (!type_init) {
       const PyTypeObject tmp = {
+        /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX >= 0x03000000
         PyVarObject_HEAD_INIT(NULL, 0)
 #else
@@ -128386,13 +128272,13 @@ SWIG_init(void) {
   static PyGetSetDef thisown_getset_def = {
     (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure
   };
+  PyObject *metatype_args;
   PyTypeObject *builtin_pytype;
   int builtin_base_count;
   swig_type_info *builtin_basetype;
   PyObject *tuple;
   PyGetSetDescrObject *static_getset;
   PyTypeObject *metatype;
-  PyTypeObject *swigpyobject;
   SwigPyClientData *cd;
   PyObject *public_interface, *public_symbol;
   PyObject *this_descr;
@@ -128407,9 +128293,14 @@ SWIG_init(void) {
   (void)static_getset;
   (void)self;
   
-  /* Metaclass is used to implement static member variables */
-  metatype = SwigPyObjectType();
+  /* metatype is used to implement static member variables. */
+  metatype_args = Py_BuildValue("(s(O){})", "SwigPyObjectType", &PyType_Type);
+  assert(metatype_args);
+  metatype = (PyTypeObject *) PyType_Type.tp_call((PyObject *) &PyType_Type, metatype_args, NULL);
   assert(metatype);
+  Py_DECREF(metatype_args);
+  metatype->tp_setattro = (setattrofunc) &SwigPyObjectType_setattro;
+  assert(PyType_Ready(metatype) >= 0);
 #endif
   
   /* Fix SwigMethods to carry the callback ptrs when needed */
@@ -128427,15 +128318,13 @@ SWIG_init(void) {
   SWIG_InitializeModule(0);
   
 #ifdef SWIGPYTHON_BUILTIN
-  swigpyobject = SwigPyObject_TypeOnce();
-  
   SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject");
   assert(SwigPyObject_stype);
   cd = (SwigPyClientData*) SwigPyObject_stype->clientdata;
   if (!cd) {
     SwigPyObject_stype->clientdata = &SwigPyObject_clientdata;
-    SwigPyObject_clientdata.pytype = swigpyobject;
-  } else if (swigpyobject->tp_basicsize != cd->pytype->tp_basicsize) {
+    SwigPyObject_clientdata.pytype = SwigPyObject_TypeOnce();
+  } else if (SwigPyObject_TypeOnce()->tp_basicsize != cd->pytype->tp_basicsize) {
     PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules.");
 # if PY_VERSION_HEX >= 0x03000000
     return NULL;
@@ -128466,32 +128355,29 @@ SWIG_init(void) {
   
   SWIG_InstallConstants(d,swig_const_table);
   
-  SWIG_Python_SetConstant(d, "SHARED_PTR_DISOWN",SWIG_From_int(static_cast< int >(0)));
   
   import_array();
   
-  PyDict_SetItemString(md,(char *)"cvar", SWIG_globals());
-  SWIG_addvarlink(SWIG_globals(),(char *)"major_version_number",Swig_var_major_version_number_get, Swig_var_major_version_number_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"minor_version_number",Swig_var_minor_version_number_get, Swig_var_minor_version_number_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"patch_version_number",Swig_var_patch_version_number_get, Swig_var_patch_version_number_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"nanometer",Swig_var_nanometer_get, Swig_var_nanometer_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"angstrom",Swig_var_angstrom_get, Swig_var_angstrom_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"micrometer",Swig_var_micrometer_get, Swig_var_micrometer_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"millimeter",Swig_var_millimeter_get, Swig_var_millimeter_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"meter",Swig_var_meter_get, Swig_var_meter_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"nm",Swig_var_nm_get, Swig_var_nm_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"radian",Swig_var_radian_get, Swig_var_radian_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"milliradian",Swig_var_milliradian_get, Swig_var_milliradian_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"degree",Swig_var_degree_get, Swig_var_degree_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"steradian",Swig_var_steradian_get, Swig_var_steradian_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"rad",Swig_var_rad_get, Swig_var_rad_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"mrad",Swig_var_mrad_get, Swig_var_mrad_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"sr",Swig_var_sr_get, Swig_var_sr_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"deg",Swig_var_deg_get, Swig_var_deg_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"tesla",Swig_var_tesla_get, Swig_var_tesla_set);
-  SWIG_addvarlink(SWIG_globals(),(char *)"gauss",Swig_var_gauss_get, Swig_var_gauss_set);
-  SWIG_Python_SetConstant(d, "FORWARD_FFT",SWIG_From_int(static_cast< int >(MathFunctions::FORWARD_FFT)));
-  SWIG_Python_SetConstant(d, "BACKWARD_FFT",SWIG_From_int(static_cast< int >(MathFunctions::BACKWARD_FFT)));
+  PyDict_SetItemString(md,(char*)"cvar", SWIG_globals());
+  SWIG_addvarlink(SWIG_globals(),(char*)"major_version_number",Swig_var_major_version_number_get, Swig_var_major_version_number_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"minor_version_number",Swig_var_minor_version_number_get, Swig_var_minor_version_number_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"patch_version_number",Swig_var_patch_version_number_get, Swig_var_patch_version_number_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"nanometer",Swig_var_nanometer_get, Swig_var_nanometer_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"angstrom",Swig_var_angstrom_get, Swig_var_angstrom_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"micrometer",Swig_var_micrometer_get, Swig_var_micrometer_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"millimeter",Swig_var_millimeter_get, Swig_var_millimeter_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"meter",Swig_var_meter_get, Swig_var_meter_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"nm",Swig_var_nm_get, Swig_var_nm_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"radian",Swig_var_radian_get, Swig_var_radian_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"milliradian",Swig_var_milliradian_get, Swig_var_milliradian_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"degree",Swig_var_degree_get, Swig_var_degree_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"steradian",Swig_var_steradian_get, Swig_var_steradian_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"rad",Swig_var_rad_get, Swig_var_rad_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"mrad",Swig_var_mrad_get, Swig_var_mrad_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"sr",Swig_var_sr_get, Swig_var_sr_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"deg",Swig_var_deg_get, Swig_var_deg_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"tesla",Swig_var_tesla_get, Swig_var_tesla_set);
+  SWIG_addvarlink(SWIG_globals(),(char*)"gauss",Swig_var_gauss_get, Swig_var_gauss_set);
   SWIG_Python_SetConstant(d, "IHistogram_INTEGRAL",SWIG_From_int(static_cast< int >(IHistogram::INTEGRAL)));
   SWIG_Python_SetConstant(d, "IHistogram_AVERAGE",SWIG_From_int(static_cast< int >(IHistogram::AVERAGE)));
   SWIG_Python_SetConstant(d, "IHistogram_STANDARD_ERROR",SWIG_From_int(static_cast< int >(IHistogram::STANDARD_ERROR)));
diff --git a/auto/Wrap/libBornAgainCore_wrap.h b/auto/Wrap/libBornAgainCore_wrap.h
index 39090c917c2..2074809c721 100644
--- a/auto/Wrap/libBornAgainCore_wrap.h
+++ b/auto/Wrap/libBornAgainCore_wrap.h
@@ -1,6 +1,6 @@
 /* ----------------------------------------------------------------------------
  * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 3.0.12
+ * Version 3.0.8
  *
  * This file is not intended to be easily readable and contains a number of
  * coding conventions designed to improve portability and efficiency. Do not make
diff --git a/auto/Wrap/swig_runtime.h b/auto/Wrap/swig_runtime.h
index de3fda43582..96d50bdb9a2 100644
--- a/auto/Wrap/swig_runtime.h
+++ b/auto/Wrap/swig_runtime.h
@@ -1,6 +1,6 @@
 /* ----------------------------------------------------------------------------
  * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 3.0.12
+ * Version 3.0.8
  *
  * This file is not intended to be easily readable and contains a number of
  * coding conventions designed to improve portability and efficiency. Do not make
@@ -75,11 +75,9 @@
 #endif
 
 /* exporting methods */
-#if defined(__GNUC__)
-#  if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
-#    ifndef GCC_HASCLASSVISIBILITY
-#      define GCC_HASCLASSVISIBILITY
-#    endif
+#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#  ifndef GCC_HASCLASSVISIBILITY
+#    define GCC_HASCLASSVISIBILITY
 #  endif
 #endif
 
@@ -644,16 +642,16 @@ SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
     char d = *(c++);
     unsigned char uu;
     if ((d >= '0') && (d <= '9'))
-      uu = (unsigned char)((d - '0') << 4);
+      uu = ((d - '0') << 4);
     else if ((d >= 'a') && (d <= 'f'))
-      uu = (unsigned char)((d - ('a'-10)) << 4);
+      uu = ((d - ('a'-10)) << 4);
     else
       return (char *) 0;
     d = *(c++);
     if ((d >= '0') && (d <= '9'))
-      uu |= (unsigned char)(d - '0');
+      uu |= (d - '0');
     else if ((d >= 'a') && (d <= 'f'))
-      uu |= (unsigned char)(d - ('a'-10));
+      uu |= (d - ('a'-10));
     else
       return (char *) 0;
     *u = uu;
@@ -818,6 +816,10 @@ PyString_FromFormat(const char *fmt, ...) {
 }
 #endif
 
+/* Add PyObject_Del for old Pythons */
+#if PY_VERSION_HEX < 0x01060000
+# define PyObject_Del(op) PyMem_DEL((op))
+#endif
 #ifndef PyObject_DEL
 # define PyObject_DEL PyObject_Del
 #endif
@@ -932,7 +934,6 @@ typedef destructor freefunc;
 #if PY_VERSION_HEX < 0x03020000
 #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
 #define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
-#define Py_hash_t long
 #endif
 /* -----------------------------------------------------------------------------
  * error manipulation
@@ -1877,6 +1878,7 @@ SwigPyObject_TypeOnce(void) {
   static int type_init = 0;
   if (!type_init) {
     const PyTypeObject tmp = {
+      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX >= 0x03000000
       PyVarObject_HEAD_INIT(NULL, 0)
 #else
@@ -1887,7 +1889,7 @@ SwigPyObject_TypeOnce(void) {
       sizeof(SwigPyObject),                 /* tp_basicsize */
       0,                                    /* tp_itemsize */
       (destructor)SwigPyObject_dealloc,     /* tp_dealloc */
-      0,                                    /* tp_print */
+      0,				    /* tp_print */
 #if PY_VERSION_HEX < 0x02020000
       (getattrfunc)SwigPyObject_getattr,    /* tp_getattr */
 #else
@@ -1895,7 +1897,7 @@ SwigPyObject_TypeOnce(void) {
 #endif
       (setattrfunc)0,                       /* tp_setattr */
 #if PY_VERSION_HEX >= 0x03000000
-      0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
+    0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
 #else
       (cmpfunc)SwigPyObject_compare,        /* tp_compare */
 #endif
@@ -1905,7 +1907,7 @@ SwigPyObject_TypeOnce(void) {
       0,                                    /* tp_as_mapping */
       (hashfunc)0,                          /* tp_hash */
       (ternaryfunc)0,                       /* tp_call */
-      0,                                    /* tp_str */
+      0,				    /* tp_str */
       PyObject_GenericGetAttr,              /* tp_getattro */
       0,                                    /* tp_setattro */
       0,                                    /* tp_as_buffer */
@@ -2068,6 +2070,7 @@ SwigPyPacked_TypeOnce(void) {
   static int type_init = 0;
   if (!type_init) {
     const PyTypeObject tmp = {
+      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX>=0x03000000
       PyVarObject_HEAD_INIT(NULL, 0)
 #else
-- 
GitLab