From 500ec9dd122c56ddbc3e7b137217f5e1bb20463c Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@esi-group.com>
Date: Tue, 6 Sep 2022 09:30:27 +0200
Subject: [PATCH] ENH: more consistent order of ITstream constructor parameters

---
 .../test/DynamicList2/Test-DynamicList2.C     |  6 +--
 .../test/Polynomial/Test-Polynomial.C         |  4 +-
 src/OpenFOAM/db/IOstreams/Tstreams/ITstream.C |  8 ++--
 src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H | 41 +++++++++++++++----
 .../global/debug/simpleObjectRegistry.C       |  8 ++--
 5 files changed, 46 insertions(+), 21 deletions(-)

diff --git a/applications/test/DynamicList2/Test-DynamicList2.C b/applications/test/DynamicList2/Test-DynamicList2.C
index b199e675794..c97d6248e16 100644
--- a/applications/test/DynamicList2/Test-DynamicList2.C
+++ b/applications/test/DynamicList2/Test-DynamicList2.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2021 OpenCFD Ltd.
+    Copyright (C) 2021-2022 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -104,7 +104,7 @@ void readList
 {
     OTstream os;
     os << input;
-    ITstream is("input", os.tokens());
+    ITstream is(os.tokens());
 
     is >> output;
 }
@@ -118,7 +118,7 @@ void readList
 {
     OTstream os;
     os << input;
-    ITstream is("input", os.tokens());
+    ITstream is(os.tokens());
 
     is >> output;
 }
diff --git a/applications/test/Polynomial/Test-Polynomial.C b/applications/test/Polynomial/Test-Polynomial.C
index 2ddf858ffe0..286e2ef9e51 100644
--- a/applications/test/Polynomial/Test-Polynomial.C
+++ b/applications/test/Polynomial/Test-Polynomial.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011 OpenFOAM Foundation
-    Copyright (C) 2020 OpenCFD Ltd.
+    Copyright (C) 2020-2022 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -132,7 +132,7 @@ int main(int argc, char *argv[])
         OTstream os;
         os << poly;
 
-        ITstream is("input", std::move(os.tokens()));
+        ITstream is(std::move(os.tokens()));
         is >> polyfunc;
     }
 
diff --git a/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.C b/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.C
index fb3a491a3e5..eb89216025f 100644
--- a/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.C
+++ b/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.C
@@ -210,9 +210,9 @@ Foam::ITstream::ITstream
 
 Foam::ITstream::ITstream
 (
-    const string& name,
     const UList<token>& tokens,
-    IOstreamOption streamOpt
+    IOstreamOption streamOpt,
+    const string& name
 )
 :
     Istream(streamOpt.format(), streamOpt.version()),
@@ -227,9 +227,9 @@ Foam::ITstream::ITstream
 
 Foam::ITstream::ITstream
 (
-    const string& name,
     List<token>&& tokens,
-    IOstreamOption streamOpt
+    IOstreamOption streamOpt,
+    const string& name
 )
 :
     Istream(streamOpt.format(), streamOpt.version()),
diff --git a/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H b/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H
index c463bab8f29..c23c81bb978 100644
--- a/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H
+++ b/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H
@@ -101,20 +101,20 @@ public:
             IOstreamOption streamOpt = IOstreamOption()
         );
 
-        //- Copy construct from tokens, with given name
-        ITstream
+        //- Copy construct from tokens, optionally with given name
+        explicit ITstream
         (
-            const string& name,
             const UList<token>& tokens,
-            IOstreamOption streamOpt = IOstreamOption()
+            IOstreamOption streamOpt = IOstreamOption(),
+            const string& name = "input"
         );
 
-        //- Move construct from tokens, with given name
-        ITstream
+        //- Move construct from tokens, optionally with given name
+        explicit ITstream
         (
-            const string& name,
             List<token>&& tokens,
-            IOstreamOption streamOpt = IOstreamOption()
+            IOstreamOption streamOpt = IOstreamOption(),
+            const string& name = "input"
         );
 
         //- Construct token list by parsing the input character sequence
@@ -145,6 +145,31 @@ public:
         );
 
 
+    // Additional constructors
+
+        //- Copy construct from tokens, with given name
+        ITstream
+        (
+            const string& name,
+            const UList<token>& tokens,
+            IOstreamOption streamOpt = IOstreamOption()
+        )
+        :
+            ITstream(tokens, streamOpt, name)
+        {}
+
+        //- Move construct from tokens, with given name
+        ITstream
+        (
+            const string& name,
+            List<token>&& tokens,
+            IOstreamOption streamOpt = IOstreamOption()
+        )
+        :
+            ITstream(std::move(tokens), streamOpt, name)
+        {}
+
+
     //- Destructor
     virtual ~ITstream() = default;
 
diff --git a/src/OpenFOAM/global/debug/simpleObjectRegistry.C b/src/OpenFOAM/global/debug/simpleObjectRegistry.C
index 51efe739b39..70d7d5aff20 100644
--- a/src/OpenFOAM/global/debug/simpleObjectRegistry.C
+++ b/src/OpenFOAM/global/debug/simpleObjectRegistry.C
@@ -64,7 +64,7 @@ void Foam::simpleObjectRegistry::setValues
                 IStringStream is(os.str());
 
                 // Or alternatively?
-                // ITstream is(name, dEntry.dict().tokens());
+                // ITstream is(dEntry.dict().tokens());
 
                 for (simpleRegIOobject* obj : objects)
                 {
@@ -129,11 +129,11 @@ void Foam::simpleObjectRegistry::setNamedValue
 
     if (objPtr)
     {
-        // The generic interface requires an Istream.
-        ITstream is("", tokenList(Foam::one{}, tok));
-
         Log << name.c_str() << '=' << tok << nl;
 
+        // The generic interface requires an Istream.
+        ITstream is(tokenList(Foam::one{}, std::move(tok)));
+
         const List<simpleRegIOobject*>& objects = *objPtr;
 
         for (simpleRegIOobject* obj : objects)
-- 
GitLab