From d388216a2525fe23602816f2b09d9c6dd88206e3 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Mon, 23 Oct 2017 07:50:12 +0200 Subject: [PATCH] ENH: add reset() method to IStringStream - for convenience and symmetry with OStringStream STYLE: void return value for stream rewind() methods - this makes it easier to design bidirectional streams --- .../test/IStringStream/Test-IStringStream.C | 16 +++++++++------- src/OpenFOAM/db/IOstreams/Fstreams/IFstream.C | 4 +--- src/OpenFOAM/db/IOstreams/Fstreams/IFstream.H | 2 +- src/OpenFOAM/db/IOstreams/IOstreams/Istream.H | 4 ++-- src/OpenFOAM/db/IOstreams/Pstreams/UIPstream.C | 3 +-- src/OpenFOAM/db/IOstreams/Pstreams/UIPstream.H | 4 ++-- src/OpenFOAM/db/IOstreams/Sstreams/ISstream.C | 4 +--- src/OpenFOAM/db/IOstreams/Sstreams/ISstream.H | 6 +++--- src/OpenFOAM/db/IOstreams/Sstreams/OSstream.H | 2 +- .../db/IOstreams/StringStreams/StringStream.H | 7 +++++++ src/OpenFOAM/db/IOstreams/Tstreams/ITstream.C | 4 +--- src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H | 4 ++-- .../{dummyISstream => dummy}/dummyISstream.H | 5 ++--- .../{dummyIstream => dummy}/dummyIstream.H | 4 ++-- 14 files changed, 35 insertions(+), 34 deletions(-) rename src/OpenFOAM/db/IOstreams/{dummyISstream => dummy}/dummyISstream.H (96%) rename src/OpenFOAM/db/IOstreams/{dummyIstream => dummy}/dummyIstream.H (97%) diff --git a/applications/test/IStringStream/Test-IStringStream.C b/applications/test/IStringStream/Test-IStringStream.C index cd8ba0e2a6..b265b15a61 100644 --- a/applications/test/IStringStream/Test-IStringStream.C +++ b/applications/test/IStringStream/Test-IStringStream.C @@ -36,20 +36,22 @@ using namespace Foam; int main(int argc, char *argv[]) { - IStringStream testStream(Foam::string("1002 sfsd sdfsd")); + IStringStream testStream(Foam::string(" 1002 abcd defg;")); label i(readLabel(testStream)); - Info<< i << endl; + Info<< "label=" << i << nl; - word bla(testStream); - word bla2(testStream); + word w1(testStream); + word w2(testStream); - Info<< bla << tab << bla2 << endl; + Info<< "word=" << w1 << nl; + Info<< "word=" << w2 << nl; - wordList wl(IStringStream("(hello1")()); + testStream.reset("(hello1)"); - Info<< wl << endl; + wordList wl(testStream); + Info<< wl << nl; Info<< "\nEnd\n" << endl; diff --git a/src/OpenFOAM/db/IOstreams/Fstreams/IFstream.C b/src/OpenFOAM/db/IOstreams/Fstreams/IFstream.C index fd3889618e..f1c97306ed 100644 --- a/src/OpenFOAM/db/IOstreams/Fstreams/IFstream.C +++ b/src/OpenFOAM/db/IOstreams/Fstreams/IFstream.C @@ -167,7 +167,7 @@ const std::istream& Foam::IFstream::stdStream() const } -Foam::Istream& Foam::IFstream::rewind() +void Foam::IFstream::rewind() { lineNumber_ = 1; // Reset line number @@ -195,8 +195,6 @@ Foam::Istream& Foam::IFstream::rewind() { ISstream::rewind(); } - - return *this; } diff --git a/src/OpenFOAM/db/IOstreams/Fstreams/IFstream.H b/src/OpenFOAM/db/IOstreams/Fstreams/IFstream.H index 72f89873c5..34f7c7c948 100644 --- a/src/OpenFOAM/db/IOstreams/Fstreams/IFstream.H +++ b/src/OpenFOAM/db/IOstreams/Fstreams/IFstream.H @@ -130,7 +130,7 @@ public: virtual const std::istream& stdStream() const; //- Rewind the stream so that it may be read again - virtual Istream& rewind(); + virtual void rewind(); // Print diff --git a/src/OpenFOAM/db/IOstreams/IOstreams/Istream.H b/src/OpenFOAM/db/IOstreams/IOstreams/Istream.H index 7713176196..24df823bdd 100644 --- a/src/OpenFOAM/db/IOstreams/IOstreams/Istream.H +++ b/src/OpenFOAM/db/IOstreams/IOstreams/Istream.H @@ -131,8 +131,8 @@ public: //- Read binary block virtual Istream& read(char*, std::streamsize) = 0; - //- Rewind and return the stream so that it may be read again - virtual Istream& rewind() = 0; + //- Rewind the stream so that it may be read again + virtual void rewind() = 0; // Read List punctuation tokens diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/UIPstream.C b/src/OpenFOAM/db/IOstreams/Pstreams/UIPstream.C index 333aeca259..21b412fce3 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/UIPstream.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/UIPstream.C @@ -329,10 +329,9 @@ Foam::Istream& Foam::UIPstream::read(char* data, std::streamsize count) } -Foam::Istream& Foam::UIPstream::rewind() +void Foam::UIPstream::rewind() { externalBufPosition_ = 0; - return *this; } diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/UIPstream.H b/src/OpenFOAM/db/IOstreams/Pstreams/UIPstream.H index 4913693741..d0c0f86552 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/UIPstream.H +++ b/src/OpenFOAM/db/IOstreams/Pstreams/UIPstream.H @@ -171,8 +171,8 @@ public: //- Read binary block with 8-byte alignment. Istream& read(char* data, const std::streamsize count); - //- Rewind and return the stream so that it may be read again - Istream& rewind(); + //- Rewind the stream so that it may be read again + void rewind(); // Edit diff --git a/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.C b/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.C index 40c2d8e595..15ad568f18 100644 --- a/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.C +++ b/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.C @@ -798,7 +798,7 @@ Foam::Istream& Foam::ISstream::read(char* buf, std::streamsize count) } -Foam::Istream& Foam::ISstream::rewind() +void Foam::ISstream::rewind() { lineNumber_ = 1; // Reset line number @@ -807,8 +807,6 @@ Foam::Istream& Foam::ISstream::rewind() // pubseekpos() rather than seekg() so that it works with gzstream stdStream().rdbuf()->pubseekpos(0, std::ios_base::in); - - return *this; } diff --git a/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.H b/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.H index 18890e2087..4a2b510b5b 100644 --- a/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.H +++ b/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.H @@ -82,7 +82,7 @@ public: // Constructors - //- Construct as wrapper around istream + //- Construct as wrapper around std::istream inline ISstream ( std::istream& is, @@ -163,8 +163,8 @@ public: //- Read binary block virtual Istream& read(char* buf, std::streamsize count); - //- Rewind and return the stream so that it may be read again - virtual Istream& rewind(); + //- Rewind the stream so that it may be read again + virtual void rewind(); // Stream state functions diff --git a/src/OpenFOAM/db/IOstreams/Sstreams/OSstream.H b/src/OpenFOAM/db/IOstreams/Sstreams/OSstream.H index 158f7123ec..2dd13c50fb 100644 --- a/src/OpenFOAM/db/IOstreams/Sstreams/OSstream.H +++ b/src/OpenFOAM/db/IOstreams/Sstreams/OSstream.H @@ -69,7 +69,7 @@ public: // Constructors - //- Construct and set stream status + //- Construct as wrapper around std::ostream and set stream status OSstream ( std::ostream& os, diff --git a/src/OpenFOAM/db/IOstreams/StringStreams/StringStream.H b/src/OpenFOAM/db/IOstreams/StringStreams/StringStream.H index 1bdbad9adb..91b1a7ce34 100644 --- a/src/OpenFOAM/db/IOstreams/StringStreams/StringStream.H +++ b/src/OpenFOAM/db/IOstreams/StringStreams/StringStream.H @@ -171,6 +171,13 @@ public: //- Print description to Ostream void print(Ostream& os) const; + //- Reset the input buffer and rewind the stream + void reset(const std::string& s) + { + this->str(s); + this->rewind(); + } + // Member operators diff --git a/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.C b/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.C index c9dae12294..c0890dad9d 100644 --- a/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.C +++ b/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.C @@ -154,7 +154,7 @@ Foam::Istream& Foam::ITstream::read(char*, std::streamsize) } -Foam::Istream& Foam::ITstream::rewind() +void Foam::ITstream::rewind() { tokenIndex_ = 0; @@ -164,8 +164,6 @@ Foam::Istream& Foam::ITstream::rewind() } setGood(); - - return *this; } diff --git a/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H b/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H index 26617cb37e..b8414cc4f2 100644 --- a/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H +++ b/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H @@ -188,8 +188,8 @@ public: //- Read binary block virtual Istream& read(char*, std::streamsize); - //- Rewind and return the stream so that it may be read again - virtual Istream& rewind(); + //- Rewind the stream so that it may be read again + virtual void rewind(); // Edit diff --git a/src/OpenFOAM/db/IOstreams/dummyISstream/dummyISstream.H b/src/OpenFOAM/db/IOstreams/dummy/dummyISstream.H similarity index 96% rename from src/OpenFOAM/db/IOstreams/dummyISstream/dummyISstream.H rename to src/OpenFOAM/db/IOstreams/dummy/dummyISstream.H index 9477b08791..fa0b441dc2 100644 --- a/src/OpenFOAM/db/IOstreams/dummyISstream/dummyISstream.H +++ b/src/OpenFOAM/db/IOstreams/dummy/dummyISstream.H @@ -126,11 +126,10 @@ public: return *this; } - //- Rewind and return the stream so that it may be read again - virtual Istream& rewind() + //- Rewind the stream so that it may be read again + virtual void rewind() { NotImplemented; - return *this; } //- Return flags of stream diff --git a/src/OpenFOAM/db/IOstreams/dummyIstream/dummyIstream.H b/src/OpenFOAM/db/IOstreams/dummy/dummyIstream.H similarity index 97% rename from src/OpenFOAM/db/IOstreams/dummyIstream/dummyIstream.H rename to src/OpenFOAM/db/IOstreams/dummy/dummyIstream.H index 9e8549820d..b15f892ec2 100644 --- a/src/OpenFOAM/db/IOstreams/dummyIstream/dummyIstream.H +++ b/src/OpenFOAM/db/IOstreams/dummy/dummyIstream.H @@ -127,8 +127,8 @@ public: return *this; } - //- Rewind and return the stream so that it may be read again - virtual Istream& rewind() + //- Rewind the stream so that it may be read again + virtual void rewind() { NotImplemented; return *this; -- GitLab