From fabd3f4e0cddd4ea59722b0c5c9fb547d720dbf8 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 4 Aug 2023 12:33:06 +0200 Subject: [PATCH] ENH: eliminate reliance on SLList during reading - fully implement DynamicList::readList() instead of simply redirecting to List::readList(). This also benefits DynamicField. Leverage DynamicList reading to simplify and improve CircularBuffer reading. - bracket lists are now read chunk-wise instead of using a singly-linked list. For integral and vector-space types (eg, scalar, vector, etc) this avoids intermediate allocations for each element. ENH: add CircularBuffer emplace_front/emplace_back STYLE: isolate to-be-deprecated construct/assign forms - still have construct/assign FixedList from a C-array. This is not really needed, can use std::initializer_list - still have construct/assign List from SLList. Prefer to avoid these in the future. DEFEATURE: remove construct/assign FixedList from SLList - never used DEFEATURE: remove move construct/assign List from SLList - now unused. Retain copy construct/assign from SLList for transition purposes. --- .../test/CircularBuffer/Test-CircularBuffer.C | 5 +- applications/test/FixedList/Test-FixedList.C | 21 +- applications/test/ListRead1/Make/files | 3 + applications/test/ListRead1/Make/options | 2 + applications/test/ListRead1/Test-ListRead1.C | 234 ++++++++++++++++ applications/test/ListRead1/testLists1 | 17 ++ .../containers/Buffers/CircularBuffer.H | 12 +- .../containers/Buffers/CircularBufferI.H | 31 ++ .../containers/Buffers/CircularBufferIO.C | 100 ++----- .../Lists/DynamicList/DynamicList.H | 4 + .../Lists/DynamicList/DynamicListIO.C | 265 +++++++++++++++++- .../containers/Lists/FixedList/FixedList.H | 22 +- .../containers/Lists/FixedList/FixedListI.H | 47 ---- src/OpenFOAM/containers/Lists/List/List.C | 89 +++--- src/OpenFOAM/containers/Lists/List/List.H | 32 ++- src/OpenFOAM/containers/Lists/List/ListIO.C | 145 +++++++++- src/OpenFOAM/containers/Lists/List/UListIO.C | 44 ++- .../primitives/chars/lists/charList.C | 10 +- .../blockMesh/blockMeshTools/blockMeshTools.H | 5 +- .../blockMeshTools/blockMeshToolsTemplates.C | 25 +- 20 files changed, 850 insertions(+), 263 deletions(-) create mode 100644 applications/test/ListRead1/Make/files create mode 100644 applications/test/ListRead1/Make/options create mode 100644 applications/test/ListRead1/Test-ListRead1.C create mode 100644 applications/test/ListRead1/testLists1 diff --git a/applications/test/CircularBuffer/Test-CircularBuffer.C b/applications/test/CircularBuffer/Test-CircularBuffer.C index f16d1512f6..98cde44170 100644 --- a/applications/test/CircularBuffer/Test-CircularBuffer.C +++ b/applications/test/CircularBuffer/Test-CircularBuffer.C @@ -92,7 +92,10 @@ int main(int argc, char *argv[]) } report(buf1); - buf1.push_back(identity(5)); report(buf1); + buf1.push_back(identity(5)); + buf1.emplace_front(-1000); + buf1.emplace_back(1000); + report(buf1); buf1.info(Info); Info<< buf1 << nl; diff --git a/applications/test/FixedList/Test-FixedList.C b/applications/test/FixedList/Test-FixedList.C index 04f24d4959..2324f54b4a 100644 --- a/applications/test/FixedList/Test-FixedList.C +++ b/applications/test/FixedList/Test-FixedList.C @@ -202,14 +202,31 @@ int main(int argc, char *argv[]) Info<< "get<3>: " << list1.get<3>() << nl; // Will not compile: Info<< "get<4>: " << list1.get<4>() << nl; - label a[4] = {0, 1, 2, 3}; - FixedList list2(a); + // Test deprecated form + label array2[4] = {0, 1, 2, 3}; + FixedList list2(array2); Info<< "list2:" << list2 << " hash:" << FixedList::hasher()(list2) << nl << " hash:" << Hash>()(list2) << nl; + // Test deprecated form + SLList