From d6396ec5d2ceacd9214ca7bbb65ab8a1955189e8 Mon Sep 17 00:00:00 2001 From: Henry Weller <http://cfd.direct> Date: Fri, 4 Mar 2016 11:28:35 +0000 Subject: [PATCH] DynamicList: Added initialized constructor and STL erase function --- .../Lists/DynamicList/DynamicList.H | 9 +++++ .../Lists/DynamicList/DynamicListI.H | 40 +++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H b/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H index 893804bb322..f62ba3a41a9 100644 --- a/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H +++ b/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H @@ -104,6 +104,9 @@ public: //- Construct given size. explicit inline DynamicList(const label); + //- Construct with given size and value for all elements. + inline DynamicList(const label, const T&); + //- Construct copy. inline DynamicList(const DynamicList<T, SizeInc, SizeMult, SizeDiv>&); @@ -224,6 +227,12 @@ public: inline void operator=(const UIndirectList<T>&); + // STL member functions + + //- Erase an element, move the remaining elements to fill the gap + // and resize the List + typename UList<T>::iterator erase(typename UList<T>::iterator); + // IOstream operators diff --git a/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H b/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H index d62f00006c1..fdd4ec571a8 100644 --- a/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H +++ b/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H @@ -49,6 +49,18 @@ inline Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::DynamicList } +template<class T, unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv> +inline Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::DynamicList +( + const label nElem, + const T& a +) +: + List<T>(nElem, a), + capacity_(nElem) +{} + + template<class T, unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv> inline Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::DynamicList ( @@ -483,4 +495,32 @@ inline void Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::operator= } +// * * * * * * * * * * * * * * STL Member Functions * * * * * * * * * * * * // + +template<class T, unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv> +typename Foam::UList<T>::iterator +Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::erase +( + typename UList<T>::iterator curIter +) +{ + typename Foam::UList<T>::iterator iter = curIter; + typename Foam::UList<T>::iterator nextIter = curIter; + + if (iter != this->end()) + { + ++iter; + + while (iter != this->end()) + { + *nextIter++ = *iter++; + } + + this->setSize(this->size() - 1); + } + + return curIter; +} + + // ************************************************************************* // -- GitLab