From 375a4792f973bc8268d7b6375bf5f04ad3fcb86a Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Mon, 6 Feb 2023 11:21:15 +0100 Subject: [PATCH] ENH: HashSet, HashTable, HashPtrTable merge() method - name and functionality similar to std::unordered_map (C++17). Formalizes what had been previously been implemented in IOobjectList but now manages without pointer deletion/creation. --- applications/test/HashSet/Test-hashSet.C | 62 +++++++-- .../test/HashTable2/Test-HashTable2.C | 104 +++++++++++++-- .../test/IOobjectList/Test-IOobjectList.C | 2 +- .../HashTables/HashPtrTable/HashPtrTable.C | 26 +++- .../HashTables/HashPtrTable/HashPtrTable.H | 12 +- .../HashTables/HashPtrTable/HashPtrTableI.H | 2 +- .../containers/HashTables/HashSet/HashSet.C | 16 ++- .../containers/HashTables/HashSet/HashSet.H | 14 +- .../HashTables/HashTable/HashTable.C | 124 ++++++++++++++---- .../HashTables/HashTable/HashTable.H | 26 +++- .../HashTables/HashTable/HashTableI.H | 26 ++++ .../HashTables/HashTable/HashTableIter.C | 81 ++++++++++-- .../HashTables/HashTable/HashTableIterI.H | 3 +- src/OpenFOAM/db/IOobjectList/IOobjectList.C | 30 ----- src/OpenFOAM/db/IOobjectList/IOobjectList.H | 14 +- src/OpenFOAM/db/IOobjectList/IOobjectListI.H | 4 +- 16 files changed, 430 insertions(+), 116 deletions(-) diff --git a/applications/test/HashSet/Test-hashSet.C b/applications/test/HashSet/Test-hashSet.C index c412b26523..b4bdd07cab 100644 --- a/applications/test/HashSet/Test-hashSet.C +++ b/applications/test/HashSet/Test-hashSet.C @@ -73,6 +73,22 @@ void printMinMax(const HashSet& set) } +template +void printHashSet(const HashSet& table) +{ + Info<< table.size() << '(' << nl; + + for (const auto& key : table.sortedToc()) + { + const auto iter = table.find(key); + + Info<< " " << key << " : " << Foam::name(&(iter.key())) << nl; + } + + Info<< ')' << nl; +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Main program: @@ -84,33 +100,33 @@ int main(int argc, char *argv[]) << typeid(HashSet