From e720f823d3594bcf927c77e0e86f75abb98f7117 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 28 Mar 2025 16:25:18 +0100 Subject: [PATCH] ENH: simplify SubStrings class/handling (remove template parameters) - previous code used derived string iterators, but these would be largely ignored anyhow since the underlying std::sub_match str() method would just yields a std::string anyhow. The SubStrings::str(size_t) method wasn't used in any code, so now just use std::string iterators only. This change simplfies overall handling, since it removes an unneeded template dependency. --- applications/test/HashTable1/Make/files | 2 +- ...{Test-HashTable1.C => Test-HashTable1.cxx} | 0 applications/test/string/Make/files | 2 +- .../string/{Test-string.C => Test-string.cxx} | 6 +- applications/test/stringList/Make/files | 2 +- ...{Test-stringList.C => Test-stringList.cxx} | 0 .../test/stringSplit/Test-stringSplit.cxx | 2 +- .../ensightToFoam/ensightMeshReader.C | 2 +- .../mesh/manipulation/objToVTK/objToVTK.C | 148 ++++++++++-------- src/OSspecific/POSIX/POSIX.C | 6 +- src/OpenFOAM/Make/files | 13 +- src/OpenFOAM/db/dictionary/dictionarySearch.C | 9 +- .../expressions/exprDriver/exprDriver.C | 5 +- .../expressions/exprTools/exprTools.C | 4 +- .../primitives/strings/fileName/fileName.C | 6 +- .../primitives/strings/lists/CStringList.H | 36 +++-- .../lists/{CStringList.C => CStringList.cxx} | 11 ++ ...CStringListTemplates.C => CStringList.txx} | 3 +- .../primitives/strings/lists/CStringListI.H | 57 +------ .../primitives/strings/lists/SubStrings.H | 59 +++---- .../primitives/strings/lists/hashedWordList.H | 2 +- .../{hashedWordList.C => hashedWordList.cxx} | 0 .../primitives/strings/lists/stringListOps.H | 4 +- ...ngListOpsTemplates.C => stringListOps.txx} | 0 .../primitives/strings/stringOps/stringOps.H | 37 ++--- .../stringOps/{stringOps.C => stringOps.cxx} | 4 +- .../strings/stringOps/stringOps.txx | 96 ++++++++++++ ...ingOpsEvaluate.C => stringOpsEvaluate.cxx} | 0 .../strings/stringOps/stringOpsSort.H | 6 +- .../{stringOpsSort.C => stringOpsSort.cxx} | 0 .../{stringOpsSplit.C => stringOpsSplit.cxx} | 8 +- ...ringOpsTemplates.C => stringOpsSubstr.cxx} | 101 ++---------- .../edgeMesh/edgeFormats/obj/OBJedgeFormat.C | 23 +-- .../readers/ensight/ensightSurfaceReader.C | 7 +- .../surfaceFormats/nas/NASsurfaceFormat.C | 5 +- .../surfaceFormats/obj/OBJsurfaceFormat.C | 21 +-- .../basic/basicThermo/basicThermo.C | 2 +- 37 files changed, 341 insertions(+), 348 deletions(-) rename applications/test/HashTable1/{Test-HashTable1.C => Test-HashTable1.cxx} (100%) rename applications/test/string/{Test-string.C => Test-string.cxx} (98%) rename applications/test/stringList/{Test-stringList.C => Test-stringList.cxx} (100%) rename src/OpenFOAM/primitives/strings/lists/{CStringList.C => CStringList.cxx} (92%) rename src/OpenFOAM/primitives/strings/lists/{CStringListTemplates.C => CStringList.txx} (97%) rename src/OpenFOAM/primitives/strings/lists/{hashedWordList.C => hashedWordList.cxx} (100%) rename src/OpenFOAM/primitives/strings/lists/{stringListOpsTemplates.C => stringListOps.txx} (100%) rename src/OpenFOAM/primitives/strings/stringOps/{stringOps.C => stringOps.cxx} (99%) create mode 100644 src/OpenFOAM/primitives/strings/stringOps/stringOps.txx rename src/OpenFOAM/primitives/strings/stringOps/{stringOpsEvaluate.C => stringOpsEvaluate.cxx} (100%) rename src/OpenFOAM/primitives/strings/stringOps/{stringOpsSort.C => stringOpsSort.cxx} (100%) rename src/OpenFOAM/primitives/strings/stringOps/{stringOpsSplit.C => stringOpsSplit.cxx} (96%) rename src/OpenFOAM/primitives/strings/stringOps/{stringOpsTemplates.C => stringOpsSubstr.cxx} (68%) diff --git a/applications/test/HashTable1/Make/files b/applications/test/HashTable1/Make/files index 05c776d65c..166975418b 100644 --- a/applications/test/HashTable1/Make/files +++ b/applications/test/HashTable1/Make/files @@ -1,3 +1,3 @@ -Test-HashTable1.C +Test-HashTable1.cxx EXE = $(FOAM_USER_APPBIN)/Test-HashTable1 diff --git a/applications/test/HashTable1/Test-HashTable1.C b/applications/test/HashTable1/Test-HashTable1.cxx similarity index 100% rename from applications/test/HashTable1/Test-HashTable1.C rename to applications/test/HashTable1/Test-HashTable1.cxx diff --git a/applications/test/string/Make/files b/applications/test/string/Make/files index 2bcadc3218..7c664b3968 100644 --- a/applications/test/string/Make/files +++ b/applications/test/string/Make/files @@ -1,3 +1,3 @@ -Test-string.C +Test-string.cxx EXE = $(FOAM_USER_APPBIN)/Test-string diff --git a/applications/test/string/Test-string.C b/applications/test/string/Test-string.cxx similarity index 98% rename from applications/test/string/Test-string.C rename to applications/test/string/Test-string.cxx index 72cd2ab178..605ec9136d 100644 --- a/applications/test/string/Test-string.C +++ b/applications/test/string/Test-string.cxx @@ -89,7 +89,7 @@ int main(int argc, char *argv[]) inputType in1("move-construct-from"); - Info<<"move construct from " << in1.length() << nl; + Info<<"move construct from " << in1.size() << nl; outputType out1(std::move(in1)); @@ -100,7 +100,7 @@ int main(int argc, char *argv[]) out1 = "some-text-rubbish"; out1.resize(10); - Info<<"move assign from " << in1.length() << nl; + Info<<"move assign from " << in1.size() << nl; out1 = std::move(in1); @@ -329,7 +329,7 @@ int main(int argc, char *argv[]) string s2(s.expand()); - cout<< "output string with " << s2.length() << " characters\n"; + cout<< "output string with " << s2.size() << " characters\n"; cout<< "ostream<< >" << s2 << "<\n"; Info<< "Ostream<< >" << s2 << "<\n"; Info<< "hash:" << hex << string::hasher()(s2) << dec << endl; diff --git a/applications/test/stringList/Make/files b/applications/test/stringList/Make/files index bcfa35a1f0..6e4f828cd5 100644 --- a/applications/test/stringList/Make/files +++ b/applications/test/stringList/Make/files @@ -1,3 +1,3 @@ -Test-stringList.C +Test-stringList.cxx EXE = $(FOAM_USER_APPBIN)/Test-stringList diff --git a/applications/test/stringList/Test-stringList.C b/applications/test/stringList/Test-stringList.cxx similarity index 100% rename from applications/test/stringList/Test-stringList.C rename to applications/test/stringList/Test-stringList.cxx diff --git a/applications/test/stringSplit/Test-stringSplit.cxx b/applications/test/stringSplit/Test-stringSplit.cxx index 14d4cab890..638219950b 100644 --- a/applications/test/stringSplit/Test-stringSplit.cxx +++ b/applications/test/stringSplit/Test-stringSplit.cxx @@ -43,7 +43,7 @@ template void printSubStrings ( const StringType& str, - const SubStrings& split + const SubStrings& split ) { Info<< "string {" << str.size() << " chars} = " << str << nl diff --git a/applications/utilities/mesh/conversion/ensightToFoam/ensightMeshReader.C b/applications/utilities/mesh/conversion/ensightToFoam/ensightMeshReader.C index 85de497991..e6d98f2991 100644 --- a/applications/utilities/mesh/conversion/ensightToFoam/ensightMeshReader.C +++ b/applications/utilities/mesh/conversion/ensightToFoam/ensightMeshReader.C @@ -645,7 +645,7 @@ bool Foam::fileFormats::ensightMeshReader::readGeometry // Parse all - SubStrings split; + SubStrings split; while (is.good()) { diff --git a/applications/utilities/mesh/manipulation/objToVTK/objToVTK.C b/applications/utilities/mesh/manipulation/objToVTK/objToVTK.C index 4ff92cf77a..4d83c8133e 100644 --- a/applications/utilities/mesh/manipulation/objToVTK/objToVTK.C +++ b/applications/utilities/mesh/manipulation/objToVTK/objToVTK.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2015 OpenFOAM Foundation - Copyright (C) 2019-2021 OpenCFD Ltd. + Copyright (C) 2019-2025 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -37,7 +37,7 @@ Description #include "argList.H" #include "OFstream.H" -#include "StringStream.H" +#include "stringOps.H" #include "point.H" #include "DynamicList.H" @@ -58,58 +58,49 @@ string getLine(std::ifstream& is) } -// Read space-separated vertices (with optional '/' arguments) -labelList parseVertices(const string& line) +// Token list with one of the following: +// f v1 v2 v3 ... +// f v1/vt1 v2/vt2 v3/vt3 ... +// l v1 v2 v3 ... +// l v1/vt1 v2/vt2 v3/vt3 ... +static label readObjVertices +( + const SubStrings& tokens, + DynamicList