sw/inc/docary.hxx | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-)
New commits: commit 02e6c1c95993740e0dbea724b3014348c4b6559d Author: Takeshi Abe <t...@fixedpoint.jp> Date: Fri Oct 21 18:42:26 2016 +0900 sw: Avoid inheritance from std::vector Change-Id: I09ae81fa3fbd89060dd1a993952d9bb67ddb101e Reviewed-on: https://gerrit.libreoffice.org/30125 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Takeshi Abe <t...@fixedpoint.jp> diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx index 58ee21f..91ec0e7 100644 --- a/sw/inc/docary.hxx +++ b/sw/inc/docary.hxx @@ -66,10 +66,13 @@ public: }; template<typename Value> -class SwVectorModifyBase : public std::vector<Value> +class SwVectorModifyBase { public: + typedef typename std::vector<Value>::iterator iterator; typedef typename std::vector<Value>::const_iterator const_iterator; + typedef typename std::vector<Value>::size_type size_type; + typedef typename std::vector<Value>::value_type value_type; protected: enum class DestructorPolicy { @@ -78,6 +81,7 @@ protected: }; private: + typename std::vector<Value> mvVals; const DestructorPolicy mPolicy; protected: @@ -86,8 +90,27 @@ protected: : mPolicy(policy) {} public: - using std::vector<Value>::begin; - using std::vector<Value>::end; + bool empty() const { return mvVals.empty(); } + Value const& front() const { return mvVals.front(); } + size_t size() const { return mvVals.size(); } + iterator begin() { return mvVals.begin(); } + const_iterator begin() const { return mvVals.begin(); } + iterator end() { return mvVals.end(); } + const_iterator end() const { return mvVals.end(); } + void clear() { mvVals.clear(); } + iterator erase(iterator aIt) { return mvVals.erase(aIt); } + iterator erase(iterator aFirst, iterator aLast) { return mvVals.erase(aFirst, aLast); } + iterator insert(iterator aIt, Value const& rVal) { return mvVals.insert(aIt, rVal); } + template<typename TInputIterator> + void insert(iterator aIt, TInputIterator aFirst, TInputIterator aLast) + { + mvVals.insert(aIt, aFirst, aLast); + } + void push_back(Value const& rVal) { mvVals.push_back(rVal); } + void reserve(size_type nSize) { mvVals.reserve(nSize); } + Value const& at(size_type nPos) const { return mvVals.at(nPos); } + Value const& operator[](size_type nPos) const { return mvVals[nPos]; } + Value& operator[](size_type nPos) { return mvVals[nPos]; } // free any remaining child objects based on mPolicy virtual ~SwVectorModifyBase() @@ -129,10 +152,10 @@ protected: public: virtual size_t GetFormatCount() const override - { return std::vector<Value>::size(); } + { return SwVectorModifyBase<Value>::size(); } virtual Value GetFormat(size_t idx) const override - { return std::vector<Value>::operator[](idx); } + { return SwVectorModifyBase<Value>::operator[](idx); } inline size_t GetPos(const SwFormat *p) const { return SwVectorModifyBase<Value>::GetPos( static_cast<Value>( const_cast<SwFormat*>( p ) ) ); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits