From 2380d160a8de20f1532a0791c08e0d8606981766 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de> Date: Thu, 13 Apr 2023 12:52:47 +0200 Subject: [PATCH] + Frame::clone --- Base/Axis/Frame.cpp | 5 +++++ Base/Axis/Frame.h | 2 ++ auto/Wrap/libBornAgainBase.py | 4 ++++ auto/Wrap/libBornAgainBase_wrap.cpp | 24 ++++++++++++++++++++++++ 4 files changed, 35 insertions(+) diff --git a/Base/Axis/Frame.cpp b/Base/Axis/Frame.cpp index 326e42ec9bb..07c71f8d2cc 100644 --- a/Base/Axis/Frame.cpp +++ b/Base/Axis/Frame.cpp @@ -27,6 +27,11 @@ Frame::Frame(const std::vector<const IAxis*>& axes) } } +Frame* Frame::clone() const +{ + return new Frame(m_axes.cloned_vector()); +} + Frame::~Frame() = default; size_t Frame::rank() const diff --git a/Base/Axis/Frame.h b/Base/Axis/Frame.h index db32044c652..9f17d6704e2 100644 --- a/Base/Axis/Frame.h +++ b/Base/Axis/Frame.h @@ -30,6 +30,8 @@ public: Frame(const std::vector<const IAxis*>& axes); virtual ~Frame(); + Frame* clone() const; + //! Returns number of dimensions. size_t rank() const; diff --git a/auto/Wrap/libBornAgainBase.py b/auto/Wrap/libBornAgainBase.py index 8a65b23e0c7..eaca1cf9373 100644 --- a/auto/Wrap/libBornAgainBase.py +++ b/auto/Wrap/libBornAgainBase.py @@ -2084,6 +2084,10 @@ class Frame(object): _libBornAgainBase.Frame_swiginit(self, _libBornAgainBase.new_Frame(axes)) __swig_destroy__ = _libBornAgainBase.delete_Frame + def clone(self): + r"""clone(Frame self) -> Frame""" + return _libBornAgainBase.Frame_clone(self) + def rank(self): r"""rank(Frame self) -> size_t""" return _libBornAgainBase.Frame_rank(self) diff --git a/auto/Wrap/libBornAgainBase_wrap.cpp b/auto/Wrap/libBornAgainBase_wrap.cpp index a913686cbb1..91f18e84660 100644 --- a/auto/Wrap/libBornAgainBase_wrap.cpp +++ b/auto/Wrap/libBornAgainBase_wrap.cpp @@ -27105,6 +27105,29 @@ fail: } +SWIGINTERN PyObject *_wrap_Frame_clone(PyObject *self, PyObject *args) { + PyObject *resultobj = 0; + Frame *arg1 = (Frame *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + Frame *result = 0 ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Frame, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Frame_clone" "', argument " "1"" of type '" "Frame const *""'"); + } + arg1 = reinterpret_cast< Frame * >(argp1); + result = (Frame *)((Frame const *)arg1)->clone(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Frame, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + SWIGINTERN PyObject *_wrap_Frame_rank(PyObject *self, PyObject *args) { PyObject *resultobj = 0; Frame *arg1 = (Frame *) 0 ; @@ -29577,6 +29600,7 @@ static PyMethodDef SwigMethods[] = { { "DiscreteAxis_swiginit", DiscreteAxis_swiginit, METH_VARARGS, NULL}, { "new_Frame", _wrap_new_Frame, METH_O, "new_Frame(std::vector< IAxis const *,std::allocator< IAxis const * > > const & axes) -> Frame"}, { "delete_Frame", _wrap_delete_Frame, METH_O, "delete_Frame(Frame self)"}, + { "Frame_clone", _wrap_Frame_clone, METH_O, "Frame_clone(Frame self) -> Frame"}, { "Frame_rank", _wrap_Frame_rank, METH_O, "Frame_rank(Frame self) -> size_t"}, { "Frame_size", _wrap_Frame_size, METH_O, "Frame_size(Frame self) -> size_t"}, { "Frame_projectedSize", _wrap_Frame_projectedSize, METH_VARARGS, "Frame_projectedSize(Frame self, size_t k_axis) -> size_t"}, -- GitLab