From de5688e095e74bdfc4ea550d0e67653a2adcd661 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Thu, 26 Jan 2017 18:11:02 +0100 Subject: [PATCH] ENH: expose HashTable iterator object() methods - to the referenced object via a method name, which may be clearer than deferencing the iterator [key, value] => iter.key(), *iter [key, value] => iter.key(), iter() [key, value] => iter.key(), iter.object() --- applications/test/HashTable/Test-hashTable.C | 8 ++++--- .../HashTables/HashTable/HashTable.H | 23 ++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/applications/test/HashTable/Test-hashTable.C b/applications/test/HashTable/Test-hashTable.C index f4e16fecf3..dc2f70658e 100644 --- a/applications/test/HashTable/Test-hashTable.C +++ b/applications/test/HashTable/Test-hashTable.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -49,6 +49,8 @@ int main() {"aec", 10.0} }; + // Info<< "\ntable1: " << table1<< endl; + // Erase by key table1.erase("aaw"); @@ -60,7 +62,7 @@ int main() Info<< "\ntable1 sortedToc: " << table1.sortedToc() << endl; table1.printInfo(Info) << "table1 [" << table1.size() << "] " << endl; - forAllIter(HashTable, table1, iter) + forAllConstIter(HashTable, table1, iter) { Info<< iter.key() << " => " << iter() << nl; } @@ -106,7 +108,7 @@ int main() Info<< "\nerase table2 by iterator" << nl; forAllIter(HashTable, table2, iter) { - Info<< "erasing " << iter.key() << " => " << iter() << " ... "; + Info<< "erasing " << iter.key() << " => " << iter.object() << " ... "; table2.erase(iter); Info<< "erased" << endl; } diff --git a/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H b/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H index 037199636d..cc32bf9fd0 100644 --- a/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H +++ b/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -144,10 +144,10 @@ class HashTable private: //- Disallow default bitwise copy construct - hashedEntry(const hashedEntry&); + hashedEntry(const hashedEntry&) = delete; //- Disallow default bitwise assignment - void operator=(const hashedEntry&); + void operator=(const hashedEntry&) = delete; }; @@ -400,10 +400,6 @@ public: //- Return non-const access to referenced object inline T& object(); - //- Return const access to referenced object - inline const T& cobject() const; - - public: // Member operators @@ -413,6 +409,9 @@ public: //- Return the Key corresponding to the iterator inline const Key& key() const; + //- Return const access to referenced object + inline const T& cobject() const; + //- Compare hashedEntry element pointers inline bool operator==(const iteratorBase&) const; inline bool operator!=(const iteratorBase&) const; @@ -460,11 +459,14 @@ public: // Member operators - //- Return referenced hash value + //- Return non-const access to referenced object + using iteratorBase::object; + + //- Return non-const access to referenced object inline T& operator*(); inline T& operator()(); - //- Return referenced hash value + //- Return const access to referenced object inline const T& operator*() const; inline const T& operator()() const; @@ -518,13 +520,12 @@ public: // Member operators - //- Return referenced hash value + //- Return const access to referenced object inline const T& operator*() const; inline const T& operator()() const; inline const_iterator& operator++(); inline const_iterator operator++(int); - };