From 1df60791d8694843217ad23845fcc6749d3fb86a Mon Sep 17 00:00:00 2001 From: Henry Weller 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 893804bb32..f62ba3a41a 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&); @@ -224,6 +227,12 @@ public: inline void operator=(const UIndirectList&); + // STL member functions + + //- Erase an element, move the remaining elements to fill the gap + // and resize the List + typename UList::iterator erase(typename UList::iterator); + // IOstream operators diff --git a/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H b/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H index d62f00006c..fdd4ec571a 100644 --- a/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H +++ b/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H @@ -49,6 +49,18 @@ inline Foam::DynamicList::DynamicList } +template +inline Foam::DynamicList::DynamicList +( + const label nElem, + const T& a +) +: + List(nElem, a), + capacity_(nElem) +{} + + template inline Foam::DynamicList::DynamicList ( @@ -483,4 +495,32 @@ inline void Foam::DynamicList::operator= } +// * * * * * * * * * * * * * * STL Member Functions * * * * * * * * * * * * // + +template +typename Foam::UList::iterator +Foam::DynamicList::erase +( + typename UList::iterator curIter +) +{ + typename Foam::UList::iterator iter = curIter; + typename Foam::UList::iterator nextIter = curIter; + + if (iter != this->end()) + { + ++iter; + + while (iter != this->end()) + { + *nextIter++ = *iter++; + } + + this->setSize(this->size() - 1); + } + + return curIter; +} + + // ************************************************************************* //