From 03d180724b67d82714b631d7ce03d8f3513aff0e Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Thu, 4 May 2017 10:17:18 +0200 Subject: [PATCH] ENH: improve HashTable iterator access and management - provide key_iterator/const_key_iterator for all hashes, reuse directly for HashSet as iterator/const_iterator, respectively. - additional keys() method for HashTable that returns a wrapped to a pair of begin/end const_iterators with additional size/empty information that allows these to be used directly by anything else expecting things with begin/end/size. Unfortunately does not yet work with std::distance(). Example, for (auto& k : labelHashTable.keys()) { ... } --- applications/test/HashSet/Test-hashSet.C | 8 +- applications/test/HashTable/Test-hashTable.C | 18 +- applications/test/cplusplus1/Make/files | 3 + applications/test/cplusplus1/Make/options | 2 + applications/test/cplusplus1/Test-cpluplus1.C | 88 ++++ applications/test/pTraits/Test-pTraits.C | 23 +- .../containers/HashTables/HashSet/HashSet.C | 34 +- .../containers/HashTables/HashSet/HashSet.H | 95 ++-- .../HashTables/HashTable/HashTable.C | 10 +- .../HashTables/HashTable/HashTable.H | 413 +++++++++++------- .../HashTables/HashTable/HashTableCore.C | 55 ++- .../HashTables/HashTable/HashTableCoreI.H | 146 +++++++ .../HashTables/HashTable/HashTableI.H | 90 ++-- .../HashTables/HashTable/HashTableIO.C | 4 +- .../StaticHashTable/StaticHashTable.H | 4 +- .../StaticHashTable/StaticHashTableCore.C | 30 +- 16 files changed, 711 insertions(+), 312 deletions(-) create mode 100644 applications/test/cplusplus1/Make/files create mode 100644 applications/test/cplusplus1/Make/options create mode 100644 applications/test/cplusplus1/Test-cpluplus1.C create mode 100644 src/OpenFOAM/containers/HashTables/HashTable/HashTableCoreI.H diff --git a/applications/test/HashSet/Test-hashSet.C b/applications/test/HashSet/Test-hashSet.C index fdfecaa08c..0b219f2e3d 100644 --- a/applications/test/HashSet/Test-hashSet.C +++ b/applications/test/HashSet/Test-hashSet.C @@ -69,6 +69,12 @@ int main(int argc, char *argv[]) Info<< "tableA keys: "; tableA.writeKeys(Info) << endl; + auto keyIterPair = tableA.keys(); + for (const auto& i : keyIterPair) + { + Info<<" keys: " << i << endl; + } + Map