DLListBase / SLListBase get transfer() method

This commit is contained in:
Mark Olesen
2008-12-17 11:51:56 +01:00
parent d5ac9d4c36
commit 9681a66a80
4 changed files with 74 additions and 26 deletions

View File

@ -167,6 +167,9 @@ public:
//- Clear the list //- Clear the list
inline void clear(); inline void clear();
//- Transfer the contents of the argument into this List
// and annull the argument list.
inline void transfer(DLListBase&);
// STL iterator // STL iterator

View File

@ -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_) 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_) 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_) 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_) if (!nElmts_)
{ {
@ -131,13 +135,24 @@ inline const Foam::DLListBase::link* Foam::DLListBase::last() const
inline void Foam::DLListBase::clear() inline void Foam::DLListBase::clear()
{ {
nElmts_ = 0;
first_ = 0; first_ = 0;
last_ = 0; last_ = 0;
nElmts_ = 0;
} }
inline Foam::DLListBase::link* Foam::DLListBase::remove 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
( (
DLListBase::iterator& it 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::iterator& oldIter,
DLListBase::link* newLink 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_; 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) // 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 // 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; iterator tmp = *this;
++*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()) 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_; 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()) 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; return endConstIter;
} }

View File

@ -152,6 +152,9 @@ public:
//- Clear the list //- Clear the list
inline void clear(); inline void clear();
//- Transfer the contents of the argument into this List
// and annull the argument list.
inline void transfer(SLListBase&);
// STL iterator // STL iterator

View File

@ -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_) 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_) 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_) 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_) if (!nElmts_)
{ {
@ -121,8 +125,17 @@ inline const Foam::SLListBase::link* Foam::SLListBase::last() const
inline void Foam::SLListBase::clear() inline void Foam::SLListBase::clear()
{ {
nElmts_ = 0;
last_ = 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; iterator tmp = *this;
++*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()) 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; 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_; 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()) 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; return endConstIter;
} }