From 7b769b50357a8ddce3d3afb5c970e415b7dcc3e2 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 20 Jan 2009 10:55:39 +0100 Subject: [PATCH] added C++0x-style cbegin(), cend() iterator methods - added STL-compatible resize() method. Should this be the primary entry point? - made [DS]LListBase end iterators private --- .../HashTables/HashTable/HashTable.H | 6 +++ .../HashTables/HashTable/HashTableI.H | 18 +++++++- .../StaticHashTable/StaticHashTable.H | 11 +++-- .../StaticHashTable/StaticHashTableI.H | 18 +++++++- .../linkTypes/DLListBase/DLListBase.C | 6 +-- .../linkTypes/DLListBase/DLListBase.H | 31 ++++++++------ .../linkTypes/DLListBase/DLListBaseI.H | 24 ++++++++--- .../linkTypes/SLListBase/SLListBase.C | 4 +- .../linkTypes/SLListBase/SLListBase.H | 28 +++++++------ .../linkTypes/SLListBase/SLListBaseI.H | 24 ++++++++--- .../Lists/CompactListList/CompactListList.C | 36 +++++++++------- .../Lists/CompactListList/CompactListList.H | 19 +++++++-- .../Lists/CompactListList/CompactListListI.H | 37 +++++++++++++++++ .../Lists/DynamicList/DynamicList.H | 9 ++++ .../Lists/DynamicList/DynamicListI.H | 21 ++++++++++ .../containers/Lists/FixedList/FixedList.H | 34 +++++++++------ .../containers/Lists/FixedList/FixedListI.H | 41 +++++++++++++++++++ src/OpenFOAM/containers/Lists/List/List.H | 6 +++ src/OpenFOAM/containers/Lists/List/ListI.H | 14 +++++++ .../containers/Lists/PackedList/PackedList.H | 3 ++ .../containers/Lists/PackedList/PackedListI.H | 7 ++++ .../containers/Lists/PtrList/PtrList.H | 6 +++ .../containers/Lists/PtrList/PtrListI.H | 7 ++++ src/OpenFOAM/containers/Lists/UList/UList.H | 30 ++++++++------ src/OpenFOAM/containers/Lists/UList/UListI.H | 28 +++++++++++++ .../containers/Lists/UPtrList/UPtrList.H | 8 ++++ .../containers/Lists/UPtrList/UPtrListI.H | 15 ++++++- src/lagrangian/basic/Cloud/Cloud.H | 10 +++++ .../edgeFaceCirculator/edgeFaceCirculator.H | 2 + .../edgeFaceCirculator/edgeFaceCirculatorI.H | 24 +++++++++++ src/meshTools/octree/octree.C | 16 ++++++++ src/meshTools/octree/octree.H | 6 +-- .../UnsortedMeshedSurface.H | 3 ++ 33 files changed, 461 insertions(+), 91 deletions(-) diff --git a/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H b/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H index 2fbb548d0e..457e2f1b7e 100644 --- a/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H +++ b/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H @@ -384,6 +384,12 @@ public: }; + //- const_iterator set to the beginning of the HashTable + inline const_iterator cbegin() const; + + //- const_iterator set to beyond the end of the HashTable + inline const const_iterator& cend() const; + //- const_iterator set to the beginning of the HashTable inline const_iterator begin() const; diff --git a/src/OpenFOAM/containers/HashTables/HashTable/HashTableI.H b/src/OpenFOAM/containers/HashTables/HashTable/HashTableI.H index 03359b2fd1..79ff374145 100644 --- a/src/OpenFOAM/containers/HashTables/HashTable/HashTableI.H +++ b/src/OpenFOAM/containers/HashTables/HashTable/HashTableI.H @@ -452,7 +452,7 @@ const Key& Foam::HashTable::const_iterator::key() template inline typename Foam::HashTable::const_iterator -Foam::HashTable::begin() const +Foam::HashTable::cbegin() const { label i = 0; @@ -477,6 +477,22 @@ Foam::HashTable::begin() const } +template +inline const typename Foam::HashTable::const_iterator& +Foam::HashTable::cend() const +{ + return HashTable::endConstIter_; +} + + +template +inline typename Foam::HashTable::const_iterator +Foam::HashTable::begin() const +{ + return this->cbegin(); +} + + template inline const typename Foam::HashTable::const_iterator& Foam::HashTable::end() const diff --git a/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.H b/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.H index 2816056383..4513ea0245 100644 --- a/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.H +++ b/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.H @@ -317,19 +317,24 @@ public: }; - //- iterator set to the begining of the StaticHashTable + //- iterator set to the beginning of the StaticHashTable inline iterator begin(); //- iterator set to beyond the end of the StaticHashTable inline const iterator& end(); - //- const_iterator set to the begining of the StaticHashTable + //- const_iterator set to the beginning of the StaticHashTable + inline const_iterator cbegin() const; + + //- const_iterator set to beyond the end of the StaticHashTable + inline const const_iterator& cend() const; + + //- const_iterator set to the beginning of the StaticHashTable inline const_iterator begin() const; //- const_iterator set to beyond the end of the StaticHashTable inline const const_iterator& end() const; - // IOstream Operator friend Istream& operator>> diff --git a/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTableI.H b/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTableI.H index d9bfaae0b8..329437a07a 100644 --- a/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTableI.H +++ b/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTableI.H @@ -355,7 +355,7 @@ Foam::StaticHashTable::end() template inline typename Foam::StaticHashTable::const_iterator -Foam::StaticHashTable::begin() const +Foam::StaticHashTable::cbegin() const { // Find first non-empty entry forAll(keys_, hashIdx) @@ -377,6 +377,22 @@ Foam::StaticHashTable::begin() const } +template +inline const typename Foam::StaticHashTable::const_iterator& +Foam::StaticHashTable::cend() const +{ + return StaticHashTable::endConstIter_; +} + + +template +inline typename Foam::StaticHashTable::const_iterator +Foam::StaticHashTable::begin() const +{ + return this->cbegin(); +} + + template inline const typename Foam::StaticHashTable::const_iterator& Foam::StaticHashTable::end() const diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.C b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.C index 5c21dfe58e..78a4313a90 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.C +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.C @@ -30,14 +30,14 @@ License #include "IOstreams.H" #include "long.H" -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // -Foam::DLListBase::iterator Foam::DLListBase::endIter +Foam::DLListBase::iterator Foam::DLListBase::endIter_ ( const_cast(static_cast(DLListBase())) ); -Foam::DLListBase::const_iterator Foam::DLListBase::endConstIter +Foam::DLListBase::const_iterator Foam::DLListBase::endConstIter_ ( static_cast(DLListBase()), reinterpret_cast(0) diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H index 475109cc77..ba3423c8e2 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H @@ -176,7 +176,7 @@ public: // STL iterator - //- An STL iterator + //- An STL-conforming iterator class iterator { friend class DLListBase; @@ -193,16 +193,17 @@ public: //- Copy of the link link curLink_; + // Private Member Functions + + //- Construct for a given SLListBase with NULL element and link. + // Only used to create endIter + inline iterator(DLListBase&); + public: //- Construct for a given DLListBase and link inline iterator(DLListBase&, link*); - //- Construct for a given DLListBase - // setting element and link to NULL. - // Only used to create endIter - inline iterator(DLListBase&); - // Member operators inline void operator=(const iterator&); @@ -217,16 +218,12 @@ public: }; inline iterator begin(); - - //- iterator returned by end() - static iterator endIter; - inline const iterator& end(); // STL const_iterator - //- An STL const_iterator + //- An STL-conforming const_iterator class const_iterator { // Private data @@ -258,12 +255,20 @@ public: inline const_iterator operator++(int); }; + inline const_iterator cbegin() const; + inline const const_iterator& cend() const; + inline const_iterator begin() const; + inline const const_iterator& end() const; + +private: + + //- iterator returned by end() + static iterator endIter_; //- const_iterator returned by end() - static const_iterator endConstIter; + static const_iterator endConstIter_; - inline const const_iterator& end() const; }; diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBaseI.H b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBaseI.H index 6692ce5c52..9b80941bf9 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBaseI.H +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBaseI.H @@ -259,14 +259,14 @@ Foam::DLListBase::begin() } else { - return endIter; + return endIter_; } } inline const Foam::DLListBase::iterator& Foam::DLListBase::end() { - return endIter; + return endIter_; } @@ -350,7 +350,7 @@ Foam::DLListBase::const_iterator::operator++(int) inline Foam::DLListBase::const_iterator -Foam::DLListBase::begin() const +Foam::DLListBase::cbegin() const { if (size()) { @@ -358,15 +358,29 @@ Foam::DLListBase::begin() const } else { - return endConstIter; + return endConstIter_; } } +inline const Foam::DLListBase::const_iterator& +Foam::DLListBase::cend() const +{ + return endConstIter_; +} + + +inline Foam::DLListBase::const_iterator +Foam::DLListBase::begin() const +{ + return this->cbegin(); +} + + inline const Foam::DLListBase::const_iterator& Foam::DLListBase::end() const { - return endConstIter; + return endConstIter_; } diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.C b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.C index 75dca644d9..f0fb24baac 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.C +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.C @@ -29,12 +29,12 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -Foam::SLListBase::iterator Foam::SLListBase::endIter +Foam::SLListBase::iterator Foam::SLListBase::endIter_ ( const_cast(static_cast(SLListBase())) ); -Foam::SLListBase::const_iterator Foam::SLListBase::endConstIter +Foam::SLListBase::const_iterator Foam::SLListBase::endConstIter_ ( static_cast(SLListBase()), reinterpret_cast(0) diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.H b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.H index 06f5960fae..4f660a1e4d 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.H +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBase.H @@ -178,17 +178,17 @@ public: //- Copy of the link link curLink_; + // Private Member Functions + + //- Construct for a given SLListBase with NULL element and link. + // Only used to create endIter + inline iterator(SLListBase&); + public: //- Construct for a given SLListBase and link inline iterator(SLListBase&, link*); - //- Construct for a given SLListBase - // setting element and link to NULL. - // Only used to create endIter - inline iterator(SLListBase&); - - // Member operators inline void operator=(const iterator&); @@ -203,10 +203,6 @@ public: }; inline iterator begin(); - - //- iterator returned by end() - static iterator endIter; - inline const iterator& end(); @@ -245,12 +241,20 @@ public: inline const_iterator operator++(int); }; + inline const_iterator cbegin() const; + inline const const_iterator& cend() const; + inline const_iterator begin() const; + inline const const_iterator& end() const; + +private: + + //- iterator returned by end() + static iterator endIter_; //- const_iterator returned by end() - static const_iterator endConstIter; + static const_iterator endConstIter_; - inline const const_iterator& end() const; }; diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBaseI.H b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBaseI.H index ca069a239d..de34257d34 100644 --- a/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBaseI.H +++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/SLListBase/SLListBaseI.H @@ -231,7 +231,7 @@ Foam::SLListBase::begin() } else { - return endIter; + return endIter_; } } @@ -239,7 +239,7 @@ Foam::SLListBase::begin() inline const Foam::SLListBase::iterator& Foam::SLListBase::end() { - return endIter; + return endIter_; } @@ -323,7 +323,7 @@ Foam::SLListBase::const_iterator::operator++(int) inline Foam::SLListBase::const_iterator -Foam::SLListBase::begin() const +Foam::SLListBase::cbegin() const { if (size()) { @@ -331,15 +331,29 @@ Foam::SLListBase::begin() const } else { - return endConstIter; + return endConstIter_; } } +inline const Foam::SLListBase::const_iterator& +Foam::SLListBase::cend() const +{ + return endConstIter_; +} + + +inline Foam::SLListBase::const_iterator +Foam::SLListBase::begin() const +{ + return this->cbegin(); +} + + inline const Foam::SLListBase::const_iterator& Foam::SLListBase::end() const { - return endConstIter; + return endConstIter_; } diff --git a/src/OpenFOAM/containers/Lists/CompactListList/CompactListList.C b/src/OpenFOAM/containers/Lists/CompactListList/CompactListList.C index 2602eea95a..8e802fe48e 100644 --- a/src/OpenFOAM/containers/Lists/CompactListList/CompactListList.C +++ b/src/OpenFOAM/containers/Lists/CompactListList/CompactListList.C @@ -142,12 +142,17 @@ void Foam::CompactListList::setSize(const label nRows) template -void Foam::CompactListList::setSize(const label nRows, const label nData) +void Foam::CompactListList::setSize +( + const label nRows, + const label nData +) { offsets_.setSize(nRows); m_.setSize(nData); } + template void Foam::CompactListList::setSize ( @@ -160,19 +165,6 @@ void Foam::CompactListList::setSize m_.setSize(nData, t); } -template -Foam::labelList Foam::CompactListList::sizes() const -{ - labelList rowSizes(offsets_.size()); - - label prevOffset = 0; - forAll(offsets_, i) - { - rowSizes[i] = offsets_[i]-prevOffset; - prevOffset = offsets_[i]; - } - return rowSizes; -} template void Foam::CompactListList::setSize(const UList