diff --git a/applications/test/DLList/Test-DLList.C b/applications/test/DLList/Test-DLList.C index 8e653c4b20cbee9eb78060e720003139bdee5269..268c8b3ed1e0c89c1291a7862b2ecec511f4e826 100644 --- a/applications/test/DLList/Test-DLList.C +++ b/applications/test/DLList/Test-DLList.C @@ -56,7 +56,6 @@ int main(int argc, char *argv[]) Info<< "element:" << *iter << endl; } - Info<< nl << "And again using the same STL iterator: " << nl << endl; forAllIters(myList, iter) diff --git a/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LList.H b/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LList.H index cac481545ebe5cf58d9176fcf80e33b74f4b3d60..eefabca3290bb76b3eece74e20a0b6b984bc709c 100644 --- a/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LList.H +++ b/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LList.H @@ -254,14 +254,14 @@ public: // Member operators - T& operator*() + T& operator*() const { return static_cast<link&> (LListBase_iterator::operator*()).obj_; } - T& operator()() + T& operator()() const { return operator*(); } @@ -312,14 +312,14 @@ public: // Member operators - const T& operator*() + const T& operator*() const { return static_cast<const link&> (LListBase_const_iterator::operator*()).obj_; } - const T& operator()() + const T& operator()() const { return operator*(); } diff --git a/src/OpenFOAM/containers/LinkedLists/accessTypes/LPtrList/LPtrList.H b/src/OpenFOAM/containers/LinkedLists/accessTypes/LPtrList/LPtrList.H index e2b7e49a5aad4103a7470d553918eebe977378d8..a0e22917f9c7fc1b29a17e653c9ab838cb871497 100644 --- a/src/OpenFOAM/containers/LinkedLists/accessTypes/LPtrList/LPtrList.H +++ b/src/OpenFOAM/containers/LinkedLists/accessTypes/LPtrList/LPtrList.H @@ -196,12 +196,12 @@ public: // Member operators - T& operator*() + T& operator*() const { return *(LList<LListBase, T*>::iterator::operator*()); } - T& operator()() + T& operator()() const { return operator*(); } @@ -235,12 +235,12 @@ public: // Member operators - const T& operator*() + const T& operator*() const { return *(LList<LListBase, T*>::const_iterator::operator*()); } - const T& operator()() + const T& operator()() const { return operator*(); } diff --git a/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILList.H b/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILList.H index 28d1231762f0e0713a2f5c834a9180eaa91a07fe..1f5b01b326424bf317df0a87e20bacc1cb8125c4 100644 --- a/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILList.H +++ b/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILList.H @@ -192,12 +192,12 @@ public: // Member operators - T& operator*() + T& operator*() const { return static_cast<T&>(LListBase_iterator::operator*()); } - T& operator()() + T& operator()() const { return operator*(); } @@ -247,14 +247,14 @@ public: // Member operators - const T& operator*() + const T& operator*() const { return static_cast<const T&> (LListBase_const_iterator::operator*()); } - const T& operator()() + const T& operator()() const { return operator*(); } @@ -309,14 +309,14 @@ public: // Member operators - const T& operator*() + const T& operator*() const { return static_cast<const T&> (LListBase::const_reverse_iterator::operator*()); } - const T& operator()() + const T& operator()() const { return operator*(); } diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.C b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.C index e8e6b721c3f7f76c3449fa5bdf26de37093c5c96..f428836f43bab04790383273b1d2f8d127124852 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.C +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.C @@ -188,7 +188,7 @@ Foam::DLListBase::link* Foam::DLListBase::removeHead() if (!first_) { - last_ = 0; + last_ = nullptr; } f->deregister(); @@ -204,8 +204,8 @@ Foam::DLListBase::link* Foam::DLListBase::remove(DLListBase::link* l) if (l == first_ && first_ == last_) { - first_ = 0; - last_ = 0; + first_ = nullptr; + last_ = nullptr; } else if (l == first_) { diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H index 3208c250a964832ba77fbd535328533c98bc7f6b..d65363113eafaa3991bbc35040fda8dc8099e71c 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H @@ -25,9 +25,10 @@ Class Foam::DLListBase Description - Base doubly-linked list. + Base for doubly-linked lists. SourceFiles + DLListBaseI.H DLListBase.C \*---------------------------------------------------------------------------*/ @@ -84,10 +85,10 @@ private: // Private Member Functions //- Disallow default bitwise copy construct - DLListBase(const DLListBase&); + DLListBase(const DLListBase&) = delete; //- Disallow default bitwise assignment - void operator=(const DLListBase&); + void operator=(const DLListBase&) = delete; public: @@ -184,18 +185,14 @@ public: friend class DLListBase; friend class const_iterator; - // Private data + //- Reference to the list this is an iterator for + DLListBase& curList_; - //- Reference to the list this is an iterator for - DLListBase& curList_; + //- Current element + link* curElmt_; - //- Current element - link* curElmt_; - - //- Copy of the link - link curLink_; - - // Private Member Functions + //- Copy of the link + link curLink_; //- Construct for a given SLListBase with nullptr element and link. // Only used to create endIter @@ -206,17 +203,18 @@ public: //- Construct for a given DLListBase and link inline iterator(DLListBase&, link*); - // Member operators + //- Currently pointing at a valid entry + inline bool found() const; - inline void operator=(const iterator&); + inline void operator=(const iterator& iter); - inline bool operator==(const iterator&) const; - inline bool operator!=(const iterator&) const; + inline bool operator==(const iterator& iter) const; + inline bool operator!=(const iterator& iter) const; - inline link& operator*(); + inline link& operator*() const; - inline iterator& operator++(); - inline iterator operator++(int); + inline iterator& operator++(); + inline iterator operator++(int); }; inline iterator begin(); @@ -228,13 +226,11 @@ public: //- An STL-conforming const_iterator class const_iterator { - // Private data + //- Reference to the list this is an iterator for + const DLListBase& curList_; - //- Reference to the list this is an iterator for - const DLListBase& curList_; - - //- Current element - const link* curElmt_; + //- Current element + const link* curElmt_; public: @@ -242,19 +238,20 @@ public: inline const_iterator(const DLListBase&, const link*); //- Construct from a non-const iterator - inline const_iterator(const iterator&); + inline const_iterator(const DLListBase::iterator& iter); - // Member operators + //- Currently pointing at a valid entry + inline bool found() const; - inline void operator=(const const_iterator&); + inline void operator=(const const_iterator& iter); - inline bool operator==(const const_iterator&) const; - inline bool operator!=(const const_iterator&) const; + inline bool operator==(const const_iterator& iter) const; + inline bool operator!=(const const_iterator& iter) const; - inline const link& operator*(); + inline const link& operator*() const; - inline const_iterator& operator++(); - inline const_iterator operator++(int); + inline const_iterator& operator++(); + inline const_iterator operator++(int); }; inline const_iterator cbegin() const; @@ -269,30 +266,29 @@ public: //- An STL-conforming const_reverse_iterator class const_reverse_iterator { - // Private data - - //- Reference to the list this is an reverse_iterator for - const DLListBase& curList_; + //- Reference to the list this is an reverse_iterator for + const DLListBase& curList_; - //- Current element - const link* curElmt_; + //- Current element + const link* curElmt_; public: //- Construct for a given DLListBase and link - inline const_reverse_iterator(const DLListBase&, const link*); + inline const_reverse_iterator(const DLListBase& lst, const link*); - // Member operators + //- Currently pointing at a valid entry + inline bool found() const; - inline void operator=(const const_reverse_iterator&); + inline void operator=(const const_reverse_iterator& iter); - inline bool operator==(const const_reverse_iterator&) const; - inline bool operator!=(const const_reverse_iterator&) const; + inline bool operator==(const const_reverse_iterator& iter) const; + inline bool operator!=(const const_reverse_iterator& iter) const; - inline const link& operator*(); + inline const link& operator*() const; - inline const_reverse_iterator& operator++(); - inline const_reverse_iterator operator++(int); + inline const_reverse_iterator& operator++(); + inline const_reverse_iterator operator++(int); }; inline const_reverse_iterator crbegin() const; diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBaseI.H b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBaseI.H index 91c0bc9ddbd2c713c8a54b651b64740c0ff3095a..6dc080777a9b39d4c9a0a9a973023b3d5b9e9de0 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBaseI.H +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBaseI.H @@ -29,15 +29,15 @@ License inline Foam::DLListBase::link::link() : - prev_(0), - next_(0) + prev_(nullptr), + next_(nullptr) {} inline Foam::DLListBase::DLListBase() : - first_(0), - last_(0), + first_(nullptr), + last_(nullptr), nElmts_(0) {} @@ -63,14 +63,14 @@ inline Foam::DLListBase::~DLListBase() inline bool Foam::DLListBase::link::registered() const { - return prev_ != 0 && next_ != 0; + return prev_ != nullptr && next_ != nullptr; } inline void Foam::DLListBase::link::deregister() { - prev_ = 0; - next_ = 0; + prev_ = nullptr; + next_ = nullptr; } @@ -140,8 +140,8 @@ Foam::DLListBase::last() const inline void Foam::DLListBase::clear() { - first_ = 0; - last_ = 0; + first_ = nullptr; + last_ = nullptr; nElmts_ = 0; } @@ -195,6 +195,12 @@ inline Foam::DLListBase::iterator::iterator(DLListBase& s) {} +inline bool Foam::DLListBase::iterator::found() const +{ + return (curElmt_ != nullptr); +} + + inline void Foam::DLListBase::iterator::operator=(const iterator& iter) { curElmt_ = iter.curElmt_; @@ -215,7 +221,7 @@ inline bool Foam::DLListBase::iterator::operator!=(const iterator& iter) const inline Foam::DLListBase::link& -Foam::DLListBase::iterator::operator*() +Foam::DLListBase::iterator::operator*() const { return *curElmt_; } @@ -226,9 +232,9 @@ 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 - if (curLink_.next_ == curElmt_ || curList_.last_ == 0) + if (curLink_.next_ == curElmt_ || curList_.last_ == nullptr) { - curElmt_ = 0; + curElmt_ = nullptr; } else { @@ -282,13 +288,22 @@ inline Foam::DLListBase::const_iterator::const_iterator {} -inline Foam::DLListBase::const_iterator::const_iterator(const iterator& iter) +inline Foam::DLListBase::const_iterator::const_iterator +( + const DLListBase::iterator& iter +) : curList_(iter.curList_), curElmt_(iter.curElmt_) {} +inline bool Foam::DLListBase::const_iterator::found() const +{ + return (curElmt_ != nullptr); +} + + inline void Foam::DLListBase::const_iterator::operator= ( const const_iterator& iter @@ -317,7 +332,7 @@ inline bool Foam::DLListBase::const_iterator::operator!= inline const Foam::DLListBase::link& -Foam::DLListBase::const_iterator::operator*() +Foam::DLListBase::const_iterator::operator*() const { return *curElmt_; } @@ -328,7 +343,7 @@ Foam::DLListBase::const_iterator::operator++() { if (curElmt_ == curList_.last_) { - curElmt_ = 0; + curElmt_ = nullptr; } else { @@ -387,15 +402,21 @@ Foam::DLListBase::end() const inline Foam::DLListBase::const_reverse_iterator::const_reverse_iterator ( - const DLListBase& s, + const DLListBase& lst, const link* elmt ) : - curList_(s), + curList_(lst), curElmt_(elmt) {} +inline bool Foam::DLListBase::const_reverse_iterator::found() const +{ + return (curElmt_ != nullptr); +} + + inline void Foam::DLListBase::const_reverse_iterator::operator= ( const const_reverse_iterator& iter @@ -424,7 +445,7 @@ inline bool Foam::DLListBase::const_reverse_iterator::operator!= inline const Foam::DLListBase::link& -Foam::DLListBase::const_reverse_iterator::operator*() +Foam::DLListBase::const_reverse_iterator::operator*() const { return *curElmt_; } @@ -435,7 +456,7 @@ Foam::DLListBase::const_reverse_iterator::operator++() { if (curElmt_ == curList_.first_) { - curElmt_ = 0; + curElmt_ = nullptr; } else { @@ -460,7 +481,7 @@ Foam::DLListBase::crbegin() const { if (size()) { - return const_reverse_iterator(*this, last()); + return const_reverse_iterator(*this, this->last()); } else { diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.C b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.C index c314cdc7528374d4f28607d01c5736f711cab6ca..693530d595a026350b94b87cb71c2f7b066f3ef8 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.C +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.C @@ -79,7 +79,7 @@ Foam::SLListBase::link* Foam::SLListBase::removeHead() { nElmts_--; - if (last_ == 0) + if (last_ == nullptr) { FatalErrorInFunction << "remove from empty list" @@ -90,7 +90,7 @@ Foam::SLListBase::link* Foam::SLListBase::removeHead() if (f == last_) { - last_ = 0; + last_ = nullptr; } else { @@ -132,7 +132,7 @@ Foam::SLListBase::link* Foam::SLListBase::remove(SLListBase::link* it) prev = p; } - return 0; + return nullptr; } diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.H b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.H index add64244557da03a460dcc4e2614a6151ea11809..421922d3b867ff33eb3cd5b8b04bdc2d3bb8f70c 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.H +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.H @@ -25,9 +25,10 @@ Class Foam::SLListBase Description - Base singly-linked list. + Base for singly-linked lists. SourceFiles + SLListBaseI.H SLListBase.C \*---------------------------------------------------------------------------*/ @@ -81,10 +82,10 @@ private: // Private Member Functions //- Disallow default bitwise copy construct - SLListBase(const SLListBase&); + SLListBase(const SLListBase&) = delete; //- Disallow default bitwise assignment - void operator=(const SLListBase&); + void operator=(const SLListBase&) = delete; public: @@ -166,18 +167,14 @@ public: friend class SLListBase; friend class const_iterator; - // Private data + //- Reference to the list this is an iterator for + SLListBase& curList_; - //- Reference to the list this is an iterator for - SLListBase& curList_; + //- Current element + link* curElmt_; - //- Current element - link* curElmt_; - - //- Copy of the link - link curLink_; - - // Private Member Functions + //- Copy of the link + link curLink_; //- Construct for a given SLListBase with nullptr element and link. // Only used to create endIter @@ -188,17 +185,18 @@ public: //- Construct for a given SLListBase and link inline iterator(SLListBase&, link*); - // Member operators + //- Currently pointing at a valid entry + inline bool found() const; - inline void operator=(const iterator&); + inline void operator=(const iterator& iter); - inline bool operator==(const iterator&) const; - inline bool operator!=(const iterator&) const; + inline bool operator==(const iterator& iter) const; + inline bool operator!=(const iterator& iter) const; - inline link& operator*(); + inline link& operator*() const; - inline iterator& operator++(); - inline iterator operator++(int); + inline iterator& operator++(); + inline iterator operator++(int); }; inline iterator begin(); @@ -210,13 +208,11 @@ public: //- An STL-conforming const_iterator class const_iterator { - // Private data + //- Reference to the list this is an iterator for + const SLListBase& curList_; - //- Reference to the list this is an iterator for - const SLListBase& curList_; - - //- Current element - const link* curElmt_; + //- Current element + const link* curElmt_; public: @@ -224,20 +220,20 @@ public: inline const_iterator(const SLListBase&, const link*); //- Construct from a non-const iterator - inline const_iterator(const iterator&); - + inline const_iterator(const SLListBase::iterator& iter); - // Member operators + //- Currently pointing at a valid entry + inline bool found() const; - inline void operator=(const const_iterator&); + inline void operator=(const const_iterator& iter); - inline bool operator==(const const_iterator&) const; - inline bool operator!=(const const_iterator&) const; + inline bool operator==(const const_iterator& iter) const; + inline bool operator!=(const const_iterator& iter) const; - inline const link& operator*(); + inline const link& operator*() const; - inline const_iterator& operator++(); - inline const_iterator operator++(int); + inline const_iterator& operator++(); + inline const_iterator operator++(int); }; inline const_iterator cbegin() const; diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBaseI.H b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBaseI.H index fc9b9f007c05336e157a6b2b8388a85414b69a6d..8c4ebdb7c372a2f1b38972123126918c32be2360 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBaseI.H +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBaseI.H @@ -21,9 +21,6 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. -Description - Base singly-linked list. - \*---------------------------------------------------------------------------*/ #include "error.H" @@ -32,7 +29,7 @@ Description inline Foam::SLListBase::link::link() : - next_(0) + next_(nullptr) {} @@ -44,16 +41,22 @@ inline Foam::SLListBase::link::link(link* p) inline Foam::SLListBase::SLListBase() : - last_(0), + last_(nullptr), nElmts_(0) {} inline Foam::SLListBase::SLListBase(link* a) : - last_(a->next_ = a), - nElmts_(1) -{} + last_(a), + nElmts_(0) +{ + if (a) // protect against nullptr + { + a->next_ = a; + nElmts_ = 1; + } +} // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // @@ -130,7 +133,7 @@ Foam::SLListBase::last() const inline void Foam::SLListBase::clear() { - last_ = 0; + last_ = nullptr; nElmts_ = 0; } @@ -171,6 +174,12 @@ inline Foam::SLListBase::iterator::iterator(SLListBase& s) {} +inline bool Foam::SLListBase::iterator::found() const +{ + return (curElmt_ != nullptr); +} + + inline void Foam::SLListBase::iterator::operator=(const iterator& iter) { curElmt_ = iter.curElmt_; @@ -190,7 +199,7 @@ inline bool Foam::SLListBase::iterator::operator!=(const iterator& iter) const } -inline Foam::SLListBase::link& Foam::SLListBase::iterator::operator*() +inline Foam::SLListBase::link& Foam::SLListBase::iterator::operator*() const { return *curElmt_; } @@ -198,9 +207,9 @@ inline Foam::SLListBase::link& Foam::SLListBase::iterator::operator*() inline Foam::SLListBase::iterator& Foam::SLListBase::iterator::operator++() { - if (curElmt_ == curList_.last_ || curList_.last_ == 0) + if (curElmt_ == curList_.last_ || curList_.last_ == nullptr) { - curElmt_ = 0; + curElmt_ = nullptr; } else { @@ -255,13 +264,22 @@ inline Foam::SLListBase::const_iterator::const_iterator {} -inline Foam::SLListBase::const_iterator::const_iterator(const iterator& iter) +inline Foam::SLListBase::const_iterator::const_iterator +( + const SLListBase::iterator& iter +) : curList_(iter.curList_), curElmt_(iter.curElmt_) {} +inline bool Foam::SLListBase::const_iterator::found() const +{ + return (curElmt_ != nullptr); +} + + inline void Foam::SLListBase::const_iterator::operator= ( const const_iterator& iter @@ -290,7 +308,7 @@ inline bool Foam::SLListBase::const_iterator::operator!= inline const Foam::SLListBase::link& -Foam::SLListBase::const_iterator::operator*() +Foam::SLListBase::const_iterator::operator*() const { return *curElmt_; } @@ -301,7 +319,7 @@ Foam::SLListBase::const_iterator::operator++() { if (curElmt_ == curList_.last_) { - curElmt_ = 0; + curElmt_ = nullptr; } else {