diff --git a/Base/Axis/Frame.cpp b/Base/Axis/Frame.cpp index 9ef9683cbd68c4fc92e6af99a16d02dd238c6047..ae8265e10f16ea181551d87ac3bc29509496bccb 100644 --- a/Base/Axis/Frame.cpp +++ b/Base/Axis/Frame.cpp @@ -176,8 +176,9 @@ std::vector<std::string> Frame::availableTrafos() const return result; } -Frame* Frame::transformedFrame(const FrameTrafo& trafo) const +Frame* Frame::transformedFrame(const std::string& key) const { + const FrameTrafo& trafo = findTrafo(key); ASSERT(trafo.coords.size() == rank()); std::vector<const Scale*> outaxes; for (size_t k = 0; k < rank(); ++k) { diff --git a/Base/Axis/Frame.h b/Base/Axis/Frame.h index 00097aa80f63b9412cd00ce698d1d9469513d312..59ff5be4658b561fc0247663ee95e236417be222 100644 --- a/Base/Axis/Frame.h +++ b/Base/Axis/Frame.h @@ -89,7 +89,7 @@ public: #endif // SWIG Frame* plottableFrame(std::vector<std::string> labels = {}) const; - Frame* transformedFrame(const FrameTrafo& trafo) const; + Frame* transformedFrame(const std::string& key) const; Frame* flat() const; std::vector<std::string> availableTrafos() const; diff --git a/Device/Data/Datafield.cpp b/Device/Data/Datafield.cpp index 1ae24939216f765928cc691b9eb2d72024ee7c23..f45fb21826be77026f22abc64f5a236cbc6d46b7 100644 --- a/Device/Data/Datafield.cpp +++ b/Device/Data/Datafield.cpp @@ -377,10 +377,9 @@ Datafield Datafield::plottableField(std::vector<std::string> labels) const return {title(), frame().plottableFrame(labels), m_values, m_errSigmas}; } -Datafield Datafield::transformedField(std::string label) const +Datafield Datafield::transformedField(const std::string& key) const { - const FrameTrafo& trafo = frame().findTrafo(label); - return {title(), frame().transformedFrame(trafo), m_values, m_errSigmas}; + return {title(), frame().transformedFrame(key), m_values, m_errSigmas}; } Datafield Datafield::flat() const diff --git a/Device/Data/Datafield.h b/Device/Data/Datafield.h index 2bd979b59cf4dc39db7df6efde4d39962f476a5e..f48316dee424f02a9044beba5d11da413a4b666e 100644 --- a/Device/Data/Datafield.h +++ b/Device/Data/Datafield.h @@ -90,7 +90,7 @@ public: //... modifiers Datafield plottableField(std::vector<std::string> labels = {}) const; - Datafield transformedField(std::string label) const; + Datafield transformedField(const std::string& label) const; Datafield flat() const; Datafield noisy(double prefactor, double minimum) const; diff --git a/auto/Wrap/libBornAgainBase.py b/auto/Wrap/libBornAgainBase.py index 1b2002a8d72e6abd898302673f25e5da92be248d..a34e9ea7b3ce05efc48f5be6effd35fc723164a1 100644 --- a/auto/Wrap/libBornAgainBase.py +++ b/auto/Wrap/libBornAgainBase.py @@ -2063,9 +2063,9 @@ class Frame(object): r"""plottableFrame(Frame self, vector_string_t labels={}) -> Frame""" return _libBornAgainBase.Frame_plottableFrame(self, *args) - def transformedFrame(self, trafo): - r"""transformedFrame(Frame self, FrameTrafo const & trafo) -> Frame""" - return _libBornAgainBase.Frame_transformedFrame(self, trafo) + def transformedFrame(self, key): + r"""transformedFrame(Frame self, std::string const & key) -> Frame""" + return _libBornAgainBase.Frame_transformedFrame(self, key) def flat(self): r"""flat(Frame self) -> Frame""" diff --git a/auto/Wrap/libBornAgainBase_wrap.cpp b/auto/Wrap/libBornAgainBase_wrap.cpp index 66ebcebaef87cab42df95e99c83ce2163ff143a9..5e64eaa6c4f41c3ffbcfd97613ad64d027c8aa76 100644 --- a/auto/Wrap/libBornAgainBase_wrap.cpp +++ b/auto/Wrap/libBornAgainBase_wrap.cpp @@ -28309,11 +28309,10 @@ fail: SWIGINTERN PyObject *_wrap_Frame_transformedFrame(PyObject *self, PyObject *args) { PyObject *resultobj = 0; Frame *arg1 = (Frame *) 0 ; - FrameTrafo *arg2 = 0 ; + std::string *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; - void *argp2 = 0 ; - int res2 = 0 ; + int res2 = SWIG_OLDOBJ ; PyObject *swig_obj[2] ; Frame *result = 0 ; @@ -28323,17 +28322,20 @@ SWIGINTERN PyObject *_wrap_Frame_transformedFrame(PyObject *self, PyObject *args SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Frame_transformedFrame" "', argument " "1"" of type '" "Frame const *""'"); } arg1 = reinterpret_cast< Frame * >(argp1); - res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_FrameTrafo, 0 | 0); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Frame_transformedFrame" "', argument " "2"" of type '" "FrameTrafo const &""'"); - } - if (!argp2) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Frame_transformedFrame" "', argument " "2"" of type '" "FrameTrafo const &""'"); + { + std::string *ptr = (std::string *)0; + res2 = SWIG_AsPtr_std_string(swig_obj[1], &ptr); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Frame_transformedFrame" "', argument " "2"" of type '" "std::string const &""'"); + } + if (!ptr) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Frame_transformedFrame" "', argument " "2"" of type '" "std::string const &""'"); + } + arg2 = ptr; } - arg2 = reinterpret_cast< FrameTrafo * >(argp2); { try { - result = (Frame *)((Frame const *)arg1)->transformedFrame((FrameTrafo const &)*arg2); + result = (Frame *)((Frame const *)arg1)->transformedFrame((std::string const &)*arg2); } catch (const std::exception& ex) { // message shown in the Python interpreter const std::string msg { @@ -28343,8 +28345,10 @@ SWIGINTERN PyObject *_wrap_Frame_transformedFrame(PyObject *self, PyObject *args } } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Frame, 0 | 0 ); + if (SWIG_IsNewObj(res2)) delete arg2; return resultobj; fail: + if (SWIG_IsNewObj(res2)) delete arg2; return NULL; } @@ -30978,7 +30982,7 @@ static PyMethodDef SwigMethods[] = { { "Frame_hasSameSizes", _wrap_Frame_hasSameSizes, METH_VARARGS, "Frame_hasSameSizes(Frame self, Frame arg2) -> bool"}, { "Frame___eq__", _wrap_Frame___eq__, METH_VARARGS, "Frame___eq__(Frame self, Frame arg2) -> bool"}, { "Frame_plottableFrame", _wrap_Frame_plottableFrame, METH_VARARGS, "Frame_plottableFrame(Frame self, vector_string_t labels={}) -> Frame"}, - { "Frame_transformedFrame", _wrap_Frame_transformedFrame, METH_VARARGS, "Frame_transformedFrame(Frame self, FrameTrafo const & trafo) -> Frame"}, + { "Frame_transformedFrame", _wrap_Frame_transformedFrame, METH_VARARGS, "Frame_transformedFrame(Frame self, std::string const & key) -> Frame"}, { "Frame_flat", _wrap_Frame_flat, METH_O, "Frame_flat(Frame self) -> Frame"}, { "Frame_availableTrafos", _wrap_Frame_availableTrafos, METH_O, "Frame_availableTrafos(Frame self) -> vector_string_t"}, { "Frame_swigregister", Frame_swigregister, METH_O, NULL}, diff --git a/auto/Wrap/libBornAgainDevice.py b/auto/Wrap/libBornAgainDevice.py index db817c2a261d1716bde1652dfd545fcc7b0a4ecb..4f8d3f0bff7e812991137f92102d0e58c07d0a43 100644 --- a/auto/Wrap/libBornAgainDevice.py +++ b/auto/Wrap/libBornAgainDevice.py @@ -2179,7 +2179,7 @@ class Datafield(object): return _libBornAgainDevice.Datafield_plottableField(self, *args) def transformedField(self, label): - r"""transformedField(Datafield self, std::string label) -> Datafield""" + r"""transformedField(Datafield self, std::string const & label) -> Datafield""" return _libBornAgainDevice.Datafield_transformedField(self, label) def flat(self): diff --git a/auto/Wrap/libBornAgainDevice_wrap.cpp b/auto/Wrap/libBornAgainDevice_wrap.cpp index cbdfd7dd17f1fa922abfca9d30ba2e7c16b464f8..816d800183c84d9fecac2ae7855ec100432affc1 100644 --- a/auto/Wrap/libBornAgainDevice_wrap.cpp +++ b/auto/Wrap/libBornAgainDevice_wrap.cpp @@ -30584,9 +30584,10 @@ fail: SWIGINTERN PyObject *_wrap_Datafield_transformedField(PyObject *self, PyObject *args) { PyObject *resultobj = 0; Datafield *arg1 = (Datafield *) 0 ; - std::string arg2 ; + std::string *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; + int res2 = SWIG_OLDOBJ ; PyObject *swig_obj[2] ; SwigValueWrapper< Datafield > result; @@ -30598,16 +30599,18 @@ SWIGINTERN PyObject *_wrap_Datafield_transformedField(PyObject *self, PyObject * arg1 = reinterpret_cast< Datafield * >(argp1); { std::string *ptr = (std::string *)0; - int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr); - if (!SWIG_IsOK(res) || !ptr) { - SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Datafield_transformedField" "', argument " "2"" of type '" "std::string""'"); + res2 = SWIG_AsPtr_std_string(swig_obj[1], &ptr); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Datafield_transformedField" "', argument " "2"" of type '" "std::string const &""'"); } - arg2 = *ptr; - if (SWIG_IsNewObj(res)) delete ptr; + if (!ptr) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Datafield_transformedField" "', argument " "2"" of type '" "std::string const &""'"); + } + arg2 = ptr; } { try { - result = ((Datafield const *)arg1)->transformedField(arg2); + result = ((Datafield const *)arg1)->transformedField((std::string const &)*arg2); } catch (const std::exception& ex) { // message shown in the Python interpreter const std::string msg { @@ -30617,8 +30620,10 @@ SWIGINTERN PyObject *_wrap_Datafield_transformedField(PyObject *self, PyObject * } } resultobj = SWIG_NewPointerObj((new Datafield(result)), SWIGTYPE_p_Datafield, SWIG_POINTER_OWN | 0 ); + if (SWIG_IsNewObj(res2)) delete arg2; return resultobj; fail: + if (SWIG_IsNewObj(res2)) delete arg2; return NULL; } @@ -44136,7 +44141,7 @@ static PyMethodDef SwigMethods[] = { { "Datafield_maxVal", _wrap_Datafield_maxVal, METH_O, "Datafield_maxVal(Datafield self) -> double"}, { "Datafield_minVal", _wrap_Datafield_minVal, METH_O, "Datafield_minVal(Datafield self) -> double"}, { "Datafield_plottableField", _wrap_Datafield_plottableField, METH_VARARGS, "Datafield_plottableField(Datafield self, vector_string_t labels={}) -> Datafield"}, - { "Datafield_transformedField", _wrap_Datafield_transformedField, METH_VARARGS, "Datafield_transformedField(Datafield self, std::string label) -> Datafield"}, + { "Datafield_transformedField", _wrap_Datafield_transformedField, METH_VARARGS, "Datafield_transformedField(Datafield self, std::string const & label) -> Datafield"}, { "Datafield_flat", _wrap_Datafield_flat, METH_O, "Datafield_flat(Datafield self) -> Datafield"}, { "Datafield_noisy", _wrap_Datafield_noisy, METH_VARARGS, "Datafield_noisy(Datafield self, double prefactor, double minimum) -> Datafield"}, { "Datafield_scale", _wrap_Datafield_scale, METH_VARARGS, "Datafield_scale(Datafield self, double factor)"},