From df364c16fa065983c8df8f73985fa2d63b9efc61 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de> Date: Fri, 16 Feb 2024 11:00:24 +0100 Subject: [PATCH] Frame members const; rm Frame::setScale --- Base/Axis/Frame.cpp | 22 ++++++++++++++-------- Base/Axis/Frame.h | 5 ++--- Base/Axis/FrameUtil.cpp | 10 ---------- Base/Axis/FrameUtil.h | 3 --- Device/Data/Datafield.cpp | 3 +-- 5 files changed, 17 insertions(+), 26 deletions(-) diff --git a/Base/Axis/Frame.cpp b/Base/Axis/Frame.cpp index f025deee99b..7cc24dcfd1d 100644 --- a/Base/Axis/Frame.cpp +++ b/Base/Axis/Frame.cpp @@ -13,14 +13,26 @@ // ************************************************************************************************ #include "Base/Axis/Frame.h" -#include "Base/Axis/FrameUtil.h" #include "Base/Axis/Scale.h" #include "Base/Util/Assert.h" #include "Base/Util/StringUtil.h" +namespace { + +size_t product_size(const std::vector<const Scale*>& axes) +{ + size_t result = 1; + for (const Scale* ax : axes) + result *= ax->size(); + return result; +} + +} // namespace + + Frame::Frame(const std::vector<const Scale*>& axes) : m_axes(axes) - , m_size(FrameUtil::product_size(m_axes.shared())) + , m_size(::product_size(axes)) { } @@ -139,9 +151,3 @@ Frame* Frame::flat() const outaxes.emplace_back(s->clone()); return new Frame(std::move(outaxes)); } - -void Frame::setScale(size_t k_axis, Scale* scale) -{ - m_axes.replace_at(k_axis, scale); - m_size = FrameUtil::product_size(m_axes.shared()); -} diff --git a/Base/Axis/Frame.h b/Base/Axis/Frame.h index d9c60bdfddb..cc041753a5a 100644 --- a/Base/Axis/Frame.h +++ b/Base/Axis/Frame.h @@ -76,12 +76,11 @@ public: Frame* flat() const; #ifndef SWIG - void setScale(size_t k_axis, Scale* scale); std::vector<const Scale*> clonedAxes() const; private: - CloneableVector<const Scale> m_axes; - size_t m_size; // cached product of axis sizes + const CloneableVector<const Scale> m_axes; + const size_t m_size; // cached product of axis sizes #endif // SWIG }; diff --git a/Base/Axis/FrameUtil.cpp b/Base/Axis/FrameUtil.cpp index ecb35ab6835..6f3a9e50bb1 100644 --- a/Base/Axis/FrameUtil.cpp +++ b/Base/Axis/FrameUtil.cpp @@ -16,16 +16,6 @@ #include "Base/Axis/Frame.h" #include "Base/Axis/Scale.h" -size_t FrameUtil::product_size(const std::vector<const Scale*>& axes) -{ - if (axes.empty()) - return 1; - size_t result = 1; - for (const Scale* ax : axes) - result *= ax->size(); - return result; -} - // For axis EquiDivision("axis", 8, -5.0, 3.0) the coordinate x=-4.5 (center of bin #0) will // be converted into 0.5 (which is a bin center expressed in bin fraction coordinates). // The coordinate -5.0 (outside of axis definition) will be converted to -0.5 diff --git a/Base/Axis/FrameUtil.h b/Base/Axis/FrameUtil.h index 76a35ba424a..3f2b27e9f11 100644 --- a/Base/Axis/FrameUtil.h +++ b/Base/Axis/FrameUtil.h @@ -23,9 +23,6 @@ class Scale; namespace FrameUtil { -//! Product of axis sizes. -size_t product_size(const std::vector<const Scale*>& axes); - //! Transforms coordinate on axis into the bin-fraction-coordinate. double coordinateToBinf(double coordinate, const Scale& axis); diff --git a/Device/Data/Datafield.cpp b/Device/Data/Datafield.cpp index 806d84df6e0..404883c17e8 100644 --- a/Device/Data/Datafield.cpp +++ b/Device/Data/Datafield.cpp @@ -310,8 +310,7 @@ Datafield* Datafield::crop(double xmin, double xmax) const errout.push_back(m_err_sigmas[i]); } } - Frame* outframe = frame().clone(); - outframe->setScale(0, xclipped); + Frame* outframe = new Frame(xclipped); ASSERT(outframe->xAxis().size() == out.size()); return new Datafield(outframe, out, errout); } -- GitLab