From 33939ee86d4678787d4047575b115e9b518b2ae3 Mon Sep 17 00:00:00 2001 From: Bhuvan Bezawada <bhuvan_777@outlook.com> Date: Wed, 15 Aug 2018 15:36:52 +0100 Subject: [PATCH] Made copy/move constructors private re #23145 --- .../MantidGeometry/Instrument/DetectorInfoItem.h | 12 ++++++------ .../Instrument/DetectorInfoPythonIterator.h | 13 ++++++++----- .../geometry/src/Exports/DetectorInfoItem.cpp | 2 +- .../src/Exports/DetectorInfoPythonIterator.cpp | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/Framework/Geometry/inc/MantidGeometry/Instrument/DetectorInfoItem.h b/Framework/Geometry/inc/MantidGeometry/Instrument/DetectorInfoItem.h index 1d20c6140ca..d094dfba2ce 100644 --- a/Framework/Geometry/inc/MantidGeometry/Instrument/DetectorInfoItem.h +++ b/Framework/Geometry/inc/MantidGeometry/Instrument/DetectorInfoItem.h @@ -51,12 +51,6 @@ Code Documentation is available at: <http://doxygen.mantidproject.org> class MANTID_GEOMETRY_DLL DetectorInfoItem { public: - // Provide copy and move constructors - DetectorInfoItem(const DetectorInfoItem &other) = default; - DetectorInfoItem &operator=(const DetectorInfoItem &rhs) = default; - DetectorInfoItem(DetectorInfoItem &&other) = default; - DetectorInfoItem &operator=(DetectorInfoItem &&rhs) = default; - // Methods that can be accessed via the iterator bool isMonitor() const { return m_detectorInfo->isMonitor(m_index); } @@ -83,6 +77,12 @@ private: DetectorInfoItem(const DetectorInfo &detectorInfo, const size_t index) : m_detectorInfo(&detectorInfo), m_index(index) {} + // Provide copy and move constructors + DetectorInfoItem(const DetectorInfoItem &other) = default; + DetectorInfoItem &operator=(const DetectorInfoItem &rhs) = default; + DetectorInfoItem(DetectorInfoItem &&other) = default; + DetectorInfoItem &operator=(DetectorInfoItem &&rhs) = default; + // Non-owning pointer. A reference makes the class unable to define an // assignment operator that we need. const DetectorInfo *m_detectorInfo; diff --git a/Framework/Geometry/inc/MantidGeometry/Instrument/DetectorInfoPythonIterator.h b/Framework/Geometry/inc/MantidGeometry/Instrument/DetectorInfoPythonIterator.h index 4d7e884c9d5..136a8374692 100644 --- a/Framework/Geometry/inc/MantidGeometry/Instrument/DetectorInfoPythonIterator.h +++ b/Framework/Geometry/inc/MantidGeometry/Instrument/DetectorInfoPythonIterator.h @@ -55,20 +55,23 @@ class DetectorInfoPythonIterator { public: explicit DetectorInfoPythonIterator(const DetectorInfo &detectorInfo) : m_begin(detectorInfo.begin()), m_end(detectorInfo.end()), - m_current(*m_begin) {} + m_firstOrDone(true) {} const DetectorInfoItem &next() { - if (m_begin == m_end) { + if (!m_firstOrDone) { + ++m_begin; + } else { + m_firstOrDone = false; objects::stop_iteration_error(); } - m_current = *m_begin++; - return m_current; + + return *m_begin; } private: DetectorInfoIterator m_begin; DetectorInfoIterator m_end; - DetectorInfoItem m_current; + bool m_firstOrDone; }; } // namespace Geometry diff --git a/Framework/PythonInterface/mantid/geometry/src/Exports/DetectorInfoItem.cpp b/Framework/PythonInterface/mantid/geometry/src/Exports/DetectorInfoItem.cpp index 567fab39109..7ec273568bd 100644 --- a/Framework/PythonInterface/mantid/geometry/src/Exports/DetectorInfoItem.cpp +++ b/Framework/PythonInterface/mantid/geometry/src/Exports/DetectorInfoItem.cpp @@ -12,7 +12,7 @@ using namespace boost::python; void export_DetectorInfoItem() { // Export to Python - class_<DetectorInfoItem>("DetectorInfoItem", no_init) + class_<DetectorInfoItem, boost::noncopyable>("DetectorInfoItem", no_init) .add_property("isMonitor", &DetectorInfoItem::isMonitor) .add_property("isMasked", &DetectorInfoItem::isMasked) .add_property("twoTheta", &DetectorInfoItem::twoTheta) diff --git a/Framework/PythonInterface/mantid/geometry/src/Exports/DetectorInfoPythonIterator.cpp b/Framework/PythonInterface/mantid/geometry/src/Exports/DetectorInfoPythonIterator.cpp index 6968fba9c54..41240c58a84 100644 --- a/Framework/PythonInterface/mantid/geometry/src/Exports/DetectorInfoPythonIterator.cpp +++ b/Framework/PythonInterface/mantid/geometry/src/Exports/DetectorInfoPythonIterator.cpp @@ -22,5 +22,5 @@ void export_DetectorInfoPythonIterator() { #endif , &DetectorInfoPythonIterator::next, - return_value_policy<copy_const_reference>()); + return_value_policy<reference_existing_object>()); } -- GitLab