From 049617d037d963533d554a1efc9e110f70e05589 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Wed, 20 Sep 2017 17:20:54 +0200 Subject: [PATCH] ENH: update List and DynamicList methods (issue #595) - improve functional compatibility with DynList (remove methods) * eg, remove an element from any position in a DynamicList * reduce the number of template parameters * remove/subset regions of DynamicList - propagate Swap template specializations for lists, hashtables - move construct/assignment to various containers. - add find/found methods for FixedList and UList for a more succinct (and clearer?) usage than the equivalent global findIndex() function. - simplify List_FOR_ALL loops --- .../test/DynamicList/Test-DynamicList.C | 109 ++- applications/test/Field/Make/files | 3 - applications/test/Field/Make/options | 2 - applications/test/Field/Test-Field.C | 11 - applications/test/Field/Test-Field.H | 58 -- applications/test/FixedList/Test-FixedList.C | 65 +- applications/test/FixedList/fixedListFile | Bin 30 -> 0 bytes applications/test/FixedList2/Make/files | 3 + applications/test/FixedList2/Make/options | 0 .../test/FixedList2/Test-FixedList2.C | 190 ++++++ applications/test/Function1/Test-Function1.C | 7 +- applications/test/HashSet/Test-hashSet.C | 25 + applications/test/HashTable/Test-hashTable.C | 28 + .../test/IndirectList/Test-IndirectList.C | 56 +- applications/test/List/Test-List.C | 24 +- applications/test/List2/Make/files | 3 + applications/test/List2/Make/options | 0 applications/test/List2/Test-List2.C | 269 ++++++++ applications/test/ListOps2/Make/files | 2 + applications/test/ListOps2/Make/options | 3 + applications/test/ListOps2/Test-ListOps2.C | 144 ++++ applications/test/Map/Test-Map.C | 58 +- .../test/UIndirectList/Test-UIndirectList.C | 87 ++- applications/test/sort/Test-sortList.C | 169 +++-- .../ideasUnvToFoam/ideasUnvToFoam.C | 3 +- .../containers/HashTables/HashSet/HashSet.C | 11 +- .../containers/HashTables/HashSet/HashSet.H | 35 +- .../HashTables/HashTable/HashTable.C | 39 ++ .../HashTables/HashTable/HashTable.H | 20 + .../HashTables/HashTable/HashTableI.H | 13 + src/OpenFOAM/containers/HashTables/Map/Map.H | 31 +- .../Lists/BiIndirectList/BiIndirectList.H | 20 +- .../Lists/BiIndirectList/BiIndirectListI.H | 38 +- .../Lists/DynamicList/DynamicList.C | 76 ++- .../Lists/DynamicList/DynamicList.H | 231 +++++-- .../Lists/DynamicList/DynamicListI.H | 645 +++++++++++++----- .../containers/Lists/FixedList/FixedList.C | 94 ++- .../containers/Lists/FixedList/FixedList.H | 91 ++- .../containers/Lists/FixedList/FixedListI.H | 115 +++- .../Lists/IndirectList/IndirectList.H | 60 +- .../Lists/IndirectList/IndirectListI.H | 1 - src/OpenFOAM/containers/Lists/List/List.C | 168 +++-- src/OpenFOAM/containers/Lists/List/List.H | 59 +- src/OpenFOAM/containers/Lists/List/ListI.H | 14 +- .../containers/Lists/List/ListLoopM.H | 49 +- .../Lists/ListOps/ListOpsTemplates.C | 2 +- .../Lists/SortableList/SortableList.C | 107 ++- .../Lists/SortableList/SortableList.H | 48 +- .../Lists/UIndirectList/UIndirectList.C | 87 +++ .../Lists/UIndirectList/UIndirectList.H | 81 ++- .../Lists/UIndirectList/UIndirectListI.H | 11 + .../Lists/UIndirectList/UIndirectListIO.C | 4 +- src/OpenFOAM/containers/Lists/UList/UList.C | 135 +++- src/OpenFOAM/containers/Lists/UList/UList.H | 75 +- src/OpenFOAM/containers/Lists/UList/UListI.H | 59 +- .../fields/Fields/DynamicField/DynamicField.C | 24 +- .../fields/Fields/DynamicField/DynamicField.H | 56 +- .../Fields/DynamicField/DynamicFieldI.H | 282 ++++---- src/OpenFOAM/fields/Fields/Field/FieldM.H | 179 +++-- src/OpenFOAM/meshes/meshShapes/face/face.H | 7 +- src/OpenFOAM/meshes/meshShapes/face/faceI.H | 4 +- .../meshes/meshShapes/face/faceTemplates.C | 4 +- .../meshes/polyMesh/polyMeshFromShapeMesh.C | 6 +- .../primitiveMesh/primitiveMeshCellEdges.C | 6 +- src/OpenFOAM/primitives/Swap/Swap.H | 44 +- .../enrichedPatch/enrichedPatchPointPoints.C | 6 +- .../searchableBox/searchableBox.C | 2 +- .../searchableRotatedBox.C | 2 +- .../triSurfaceMesh/triSurfaceMesh.H | 2 +- .../triSurfaceSearch/triSurfaceSearch.C | 4 +- .../triSurfaceSearch/triSurfaceSearch.H | 2 +- wmake/rules/linux64GccKNL/c | 2 +- wmake/rules/linux64GccKNL/c++ | 2 +- wmake/rules/linux64IccKNL/c++ | 2 +- 74 files changed, 3205 insertions(+), 1169 deletions(-) delete mode 100644 applications/test/Field/Make/files delete mode 100644 applications/test/Field/Make/options delete mode 100644 applications/test/Field/Test-Field.C delete mode 100644 applications/test/Field/Test-Field.H delete mode 100644 applications/test/FixedList/fixedListFile create mode 100644 applications/test/FixedList2/Make/files create mode 100644 applications/test/FixedList2/Make/options create mode 100644 applications/test/FixedList2/Test-FixedList2.C create mode 100644 applications/test/List2/Make/files create mode 100644 applications/test/List2/Make/options create mode 100644 applications/test/List2/Test-List2.C create mode 100644 applications/test/ListOps2/Make/files create mode 100644 applications/test/ListOps2/Make/options create mode 100644 applications/test/ListOps2/Test-ListOps2.C create mode 100644 src/OpenFOAM/containers/Lists/UIndirectList/UIndirectList.C diff --git a/applications/test/DynamicList/Test-DynamicList.C b/applications/test/DynamicList/Test-DynamicList.C index c8e2ed4a93..ca3f4fc787 100644 --- a/applications/test/DynamicList/Test-DynamicList.C +++ b/applications/test/DynamicList/Test-DynamicList.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. @@ -27,7 +27,10 @@ Description #include "DynamicList.H" #include "IOstreams.H" +#include "FlatOutput.H" #include "ListOps.H" +#include "labelRange.H" +#include "labelIndList.H" using namespace Foam; @@ -44,15 +47,15 @@ void printInfo { Info<< " size=\"" << lst.size() << "\""; } - Info<< ">" << lst << "" << endl; + Info<< ">" << nl << flatOutput(lst) << nl << "" << endl; } -template +template void printInfo ( const word& tag, - const DynamicList& lst, + const DynamicList& lst, const bool showSize = false ) { @@ -62,7 +65,7 @@ void printInfo Info<< " size=\"" << lst.size() << "\" capacity=\"" << lst.capacity() << "\""; } - Info<< ">" << lst << "" << endl; + Info<< ">" << nl << flatOutput(lst) << nl << "" << endl; } @@ -71,7 +74,7 @@ void printInfo int main(int argc, char *argv[]) { - List> ldl(2); + List> ldl(2); ldl[0](0) = 0; ldl[0](2) = 2; @@ -89,7 +92,7 @@ int main(int argc, char *argv[]) ldl[1] = 3; - Info<< "" << ldl << "" << nl << "sizes: "; + Info<< "" << flatOutput(ldl) << "" << nl << "sizes: "; forAll(ldl, i) { Info<< " " << ldl[i].size() << "/" << ldl[i].capacity(); @@ -100,7 +103,7 @@ int main(int argc, char *argv[]) ll[0].transfer(ldl[0]); ll[1].transfer(ldl[1].shrink()); - Info<< "" << ldl << "" << nl << "sizes: "; + Info<< "" << flatOutput(ldl) << "" << nl << "sizes: "; forAll(ldl, i) { Info<< " " << ldl[i].size() << "/" << ldl[i].capacity(); @@ -111,18 +114,18 @@ int main(int argc, char *argv[]) // test the transfer between DynamicLists - DynamicList dlA + DynamicList