diff --git a/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H b/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H index 92ca5c21bd..c1aacc4529 100644 --- a/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H +++ b/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H @@ -97,18 +97,16 @@ struct HashTableCore {} }; - static const iteratorEnd endIter; - //- iteratorEnd set to beyond the end of any HashTable - inline static const iteratorEnd& cend() + inline static iteratorEnd cend() { - return endIter; + return iteratorEnd(); } //- iteratorEnd set to beyond the end of any HashTable - inline static const iteratorEnd& end() + inline static iteratorEnd end() { - return endIter; + return iteratorEnd(); } }; @@ -451,9 +449,6 @@ public: // Member operators - //- Conversion to a const_iterator - inline operator const_iterator() const; - //- Return referenced hash value inline T& operator*(); inline T& operator()(); @@ -503,6 +498,9 @@ public: //- Construct null (end iterator) inline const_iterator(); + //- Construct from iterator + inline const_iterator(const iterator&); + //- Construct end iterator inline const_iterator(const iteratorEnd& unused); diff --git a/src/OpenFOAM/containers/HashTables/HashTable/HashTableCore.C b/src/OpenFOAM/containers/HashTables/HashTable/HashTableCore.C index 6c82ecdc45..7822767d92 100644 --- a/src/OpenFOAM/containers/HashTables/HashTable/HashTableCore.C +++ b/src/OpenFOAM/containers/HashTables/HashTable/HashTableCore.C @@ -37,9 +37,6 @@ const Foam::label Foam::HashTableCore::maxTableSize ) ); -const Foam::HashTableCore::iteratorEnd Foam::HashTableCore::endIter; - - // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // Foam::label Foam::HashTableCore::canonicalSize(const label size) diff --git a/src/OpenFOAM/containers/HashTables/HashTable/HashTableI.H b/src/OpenFOAM/containers/HashTables/HashTable/HashTableI.H index 8bc05fc7b1..9bb75a13c4 100644 --- a/src/OpenFOAM/containers/HashTables/HashTable/HashTableI.H +++ b/src/OpenFOAM/containers/HashTables/HashTable/HashTableI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -362,17 +362,6 @@ inline Foam::HashTable::iterator::iterator {} -template -inline Foam::HashTable::iterator::operator -typename Foam::HashTable::const_iterator() const -{ - return *reinterpret_cast - < - const typename Foam::HashTable::const_iterator* - >(this); -} - - template inline T& Foam::HashTable::iterator::operator*() @@ -442,6 +431,16 @@ inline Foam::HashTable::const_iterator::const_iterator() {} +template +inline Foam::HashTable::const_iterator::const_iterator +( + const HashTable::iterator& iter +) +: + iteratorBase(iter) +{} + + template inline Foam::HashTable::const_iterator::const_iterator (