From 11497f33f4c51038732e9ecf6cefe05451301151 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de> Date: Sun, 15 May 2022 14:31:52 +0200 Subject: [PATCH] OwningVector working with private inheritance https://stackoverflow.com/questions/72247817 --- Base/Types/OwningVector.h | 9 +++++---- auto/Wrap/doxygenBase.i | 11 +++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Base/Types/OwningVector.h b/Base/Types/OwningVector.h index 29bd5881720..4acf5c09868 100644 --- a/Base/Types/OwningVector.h +++ b/Base/Types/OwningVector.h @@ -20,7 +20,6 @@ #ifndef BORNAGAIN_BASE_TYPES_OWNINGVECTOR_H #define BORNAGAIN_BASE_TYPES_OWNINGVECTOR_H -#include <memory> #include <vector> //! A vector of unique pointers to objects that are cloneable. @@ -61,14 +60,16 @@ public: void emplace_back(T* e) { super::emplace_back(e); } size_t size() const { return super::size(); } + bool empty() const { return super::empty(); } T* const& operator[](int i) const { return super::operator[](i); } T* const& at(int i) const { return super::at(i); } const T* back() const { return super::back(); } - class Iterator : public std::vector<T*>::iterator {}; + using Iterator = typename super::iterator; // "typename" can be dropped under C++20 + using ConstIterator = typename super::const_iterator; - Iterator begin() const { return super::begin(); } - Iterator end() const { return super::end(); } + ConstIterator begin() const { return super::begin(); } + ConstIterator end() const { return super::end(); } Iterator begin() { return super::begin(); } Iterator end() { return super::end(); } }; diff --git a/auto/Wrap/doxygenBase.i b/auto/Wrap/doxygenBase.i index fffc234879e..4d1efcedef8 100644 --- a/auto/Wrap/doxygenBase.i +++ b/auto/Wrap/doxygenBase.i @@ -580,10 +580,6 @@ C++ includes: IPixel.h "; -// File: classOwningVector_1_1Iterator.xml -%feature("docstring") OwningVector::Iterator ""; - - // File: classOwningVector.xml %feature("docstring") OwningVector " @@ -611,16 +607,19 @@ C++ includes: OwningVector.h %feature("docstring") OwningVector::size "size_t OwningVector< T >::size() const "; +%feature("docstring") OwningVector::empty "bool OwningVector< T >::empty() const +"; + %feature("docstring") OwningVector::at "T* const& OwningVector< T >::at(int i) const "; %feature("docstring") OwningVector::back "const T* OwningVector< T >::back() const "; -%feature("docstring") OwningVector::begin "Iterator OwningVector< T >::begin() const +%feature("docstring") OwningVector::begin "ConstIterator OwningVector< T >::begin() const "; -%feature("docstring") OwningVector::end "Iterator OwningVector< T >::end() const +%feature("docstring") OwningVector::end "ConstIterator OwningVector< T >::end() const "; %feature("docstring") OwningVector::begin "Iterator OwningVector< T >::begin() -- GitLab