diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H index 8fd2c55bc19592d8f3caf2876efccc29b5aa5e16..33df2b87c711a76b3e6517a7e106947490f735ef 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H @@ -167,6 +167,9 @@ public: //- Clear the list inline void clear(); + //- Transfer the contents of the argument into this List + // and annull the argument list. + inline void transfer(DLListBase&); // STL iterator diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBaseI.H b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBaseI.H index a29bb1c38a5c1b5b1afee626504ff9624fe13e29..a9414fa3876c6adaacabaf664043694bac9f357d 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBaseI.H +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBaseI.H @@ -81,7 +81,8 @@ inline Foam::label Foam::DLListBase::size() const } -inline Foam::DLListBase::link* Foam::DLListBase::first() +inline Foam::DLListBase::link* +Foam::DLListBase::first() { if (!nElmts_) { @@ -93,7 +94,8 @@ inline Foam::DLListBase::link* Foam::DLListBase::first() } -inline const Foam::DLListBase::link* Foam::DLListBase::first() const +inline const Foam::DLListBase::link* +Foam::DLListBase::first() const { if (!nElmts_) { @@ -105,7 +107,8 @@ inline const Foam::DLListBase::link* Foam::DLListBase::first() const } -inline Foam::DLListBase::link* Foam::DLListBase::last() +inline Foam::DLListBase::link* +Foam::DLListBase::last() { if (!nElmts_) { @@ -117,7 +120,8 @@ inline Foam::DLListBase::link* Foam::DLListBase::last() } -inline const Foam::DLListBase::link* Foam::DLListBase::last() const +inline const Foam::DLListBase::link* +Foam::DLListBase::last() const { if (!nElmts_) { @@ -131,13 +135,24 @@ inline const Foam::DLListBase::link* Foam::DLListBase::last() const inline void Foam::DLListBase::clear() { - nElmts_ = 0; first_ = 0; - last_ = 0; + last_ = 0; + nElmts_ = 0; +} + + +inline void Foam::DLListBase::transfer(DLListBase& lst) +{ + first_ = lst.first_; + last_ = lst.last_; + nElmts_ = lst.nElmts_; + + lst.clear(); } -inline Foam::DLListBase::link* Foam::DLListBase::remove +inline Foam::DLListBase::link* +Foam::DLListBase::remove ( DLListBase::iterator& it ) @@ -146,7 +161,8 @@ inline Foam::DLListBase::link* Foam::DLListBase::remove } -inline Foam::DLListBase::link* Foam::DLListBase::replace +inline Foam::DLListBase::link* +Foam::DLListBase::replace ( DLListBase::iterator& oldIter, DLListBase::link* newLink @@ -193,13 +209,15 @@ inline bool Foam::DLListBase::iterator::operator!=(const iterator& iter) const } -inline Foam::DLListBase::link& Foam::DLListBase::iterator::operator*() +inline Foam::DLListBase::link& +Foam::DLListBase::iterator::operator*() { return *curElmt_; } -inline Foam::DLListBase::iterator& Foam::DLListBase::iterator::operator++() +inline Foam::DLListBase::iterator& +Foam::DLListBase::iterator::operator++() { // Check if the curElmt_ is the last element (if it points to itself) // or if the list is empty because the last element may have been removed @@ -217,7 +235,8 @@ inline Foam::DLListBase::iterator& Foam::DLListBase::iterator::operator++() } -inline Foam::DLListBase::iterator Foam::DLListBase::iterator::operator++(int) +inline Foam::DLListBase::iterator +Foam::DLListBase::iterator::operator++(int) { iterator tmp = *this; ++*this; @@ -225,7 +244,8 @@ inline Foam::DLListBase::iterator Foam::DLListBase::iterator::operator++(int) } -inline Foam::DLListBase::iterator Foam::DLListBase::begin() +inline Foam::DLListBase::iterator +Foam::DLListBase::begin() { if (size()) { @@ -291,7 +311,8 @@ inline bool Foam::DLListBase::const_iterator::operator!= } -inline const Foam::DLListBase::link& DLListBase::const_iterator::operator*() +inline const Foam::DLListBase::link& +Foam::DLListBase::const_iterator::operator*() { return *curElmt_; } @@ -322,7 +343,8 @@ Foam::DLListBase::const_iterator::operator++(int) } -inline Foam::DLListBase::const_iterator Foam::DLListBase::begin() const +inline Foam::DLListBase::const_iterator +Foam::DLListBase::begin() const { if (size()) { @@ -335,7 +357,8 @@ inline Foam::DLListBase::const_iterator Foam::DLListBase::begin() const } -inline const Foam::DLListBase::const_iterator& Foam::DLListBase::end() const +inline const Foam::DLListBase::const_iterator& +Foam::DLListBase::end() const { return endConstIter; } diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.H b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.H index cfd8afe4a902a72b65fb72ac96bcd1c958982423..f802e6914297e6110498d54c04a64682fc2ba261 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.H +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.H @@ -152,6 +152,9 @@ public: //- Clear the list inline void clear(); + //- Transfer the contents of the argument into this List + // and annull the argument list. + inline void transfer(SLListBase&); // STL iterator diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBaseI.H b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBaseI.H index bfe0d8aa74583afa025d808894fdff6955c9206c..594fc6f098f151e8fde2397ae65cbc613e9cdc49 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBaseI.H +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBaseI.H @@ -71,7 +71,8 @@ inline Foam::label Foam::SLListBase::size() const } -inline Foam::SLListBase::link* Foam::SLListBase::first() +inline Foam::SLListBase::link* +Foam::SLListBase::first() { if (!nElmts_) { @@ -83,7 +84,8 @@ inline Foam::SLListBase::link* Foam::SLListBase::first() } -inline const Foam::SLListBase::link* Foam::SLListBase::first() const +inline const Foam::SLListBase::link* +Foam::SLListBase::first() const { if (!nElmts_) { @@ -95,7 +97,8 @@ inline const Foam::SLListBase::link* Foam::SLListBase::first() const } -inline Foam::SLListBase::link* Foam::SLListBase::last() +inline Foam::SLListBase::link* +Foam::SLListBase::last() { if (!nElmts_) { @@ -107,7 +110,8 @@ inline Foam::SLListBase::link* Foam::SLListBase::last() } -inline const Foam::SLListBase::link* Foam::SLListBase::last() const +inline const Foam::SLListBase::link* +Foam::SLListBase::last() const { if (!nElmts_) { @@ -121,8 +125,17 @@ inline const Foam::SLListBase::link* Foam::SLListBase::last() const inline void Foam::SLListBase::clear() { - nElmts_ = 0; last_ = 0; + nElmts_ = 0; +} + + +inline void Foam::SLListBase::transfer(SLListBase& lst) +{ + last_ = lst.last_; + nElmts_ = lst.nElmts_; + + lst.clear(); } @@ -194,7 +207,8 @@ inline Foam::SLListBase::iterator& Foam::SLListBase::iterator::operator++() } -inline Foam::SLListBase::iterator Foam::SLListBase::iterator::operator++(int) +inline Foam::SLListBase::iterator +Foam::SLListBase::iterator::operator++(int) { iterator tmp = *this; ++*this; @@ -202,7 +216,8 @@ inline Foam::SLListBase::iterator Foam::SLListBase::iterator::operator++(int) } -inline Foam::SLListBase::iterator Foam::SLListBase::begin() +inline Foam::SLListBase::iterator +Foam::SLListBase::begin() { if (size()) { @@ -215,7 +230,8 @@ inline Foam::SLListBase::iterator Foam::SLListBase::begin() } -inline const Foam::SLListBase::iterator& Foam::SLListBase::end() +inline const Foam::SLListBase::iterator& +Foam::SLListBase::end() { return endIter; } @@ -268,7 +284,8 @@ inline bool Foam::SLListBase::const_iterator::operator!= } -inline const Foam::SLListBase::link& SLListBase::const_iterator::operator*() +inline const Foam::SLListBase::link& +Foam::SLListBase::const_iterator::operator*() { return *curElmt_; } @@ -299,7 +316,8 @@ Foam::SLListBase::const_iterator::operator++(int) } -inline Foam::SLListBase::const_iterator Foam::SLListBase::begin() const +inline Foam::SLListBase::const_iterator +Foam::SLListBase::begin() const { if (size()) { @@ -312,7 +330,8 @@ inline Foam::SLListBase::const_iterator Foam::SLListBase::begin() const } -inline const Foam::SLListBase::const_iterator& Foam::SLListBase::end() const +inline const Foam::SLListBase::const_iterator& +Foam::SLListBase::end() const { return endConstIter; }