From 2c3d9e2bb702d35c8c0fe688f69682f614fb09f7 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 12 Mar 2025 18:47:50 +0100 Subject: [PATCH] Base: Add C++ iostate methods to Writer class --- src/Base/Writer.cpp | 25 +++++++++++++++++++++++++ src/Base/Writer.h | 28 ++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/src/Base/Writer.cpp b/src/Base/Writer.cpp index cd1126e945..90f0445891 100644 --- a/src/Base/Writer.cpp +++ b/src/Base/Writer.cpp @@ -92,6 +92,31 @@ Writer::Writer() Writer::~Writer() = default; +void Writer::clear() +{ + Stream().clear(); +} + +bool Writer::isGood() const +{ + return Stream().good(); +} + +bool Writer::hasFailed() const +{ + return Stream().fail(); +} + +bool Writer::isBad() const +{ + return Stream().bad(); +} + +bool Writer::isEof() const +{ + return Stream().eof(); +} + std::ostream& Writer::beginCharStream(CharStreamFormat format) { if (CharStream) { diff --git a/src/Base/Writer.h b/src/Base/Writer.h index 9ae1031f7b..9fb6823f1c 100644 --- a/src/Base/Writer.h +++ b/src/Base/Writer.h @@ -136,7 +136,22 @@ public: void decInd(); //@} + /** @name C++ streams */ + //@{ + /// get the current indentation virtual std::ostream& Stream() = 0; + virtual const std::ostream& Stream() const = 0; + /// Set error state flags + void clear(); + /// Check whether state of stream is good + bool isGood() const; + /// Check whether either failbit or badbit is set + bool hasFailed() const; + /// Check whether badbit is set + bool isBad() const; + /// Check whether eofbit is set + bool isEof() const; + //@} /** Create an output stream for storing character content * The input is assumed to be valid character with @@ -215,6 +230,11 @@ public: return ZipStream; } + const std::ostream& Stream() const override + { + return ZipStream; + } + void setComment(const char* str) { ZipStream.setComment(str); @@ -248,6 +268,10 @@ public: { return StrStream; } + const std::ostream& Stream() const override + { + return StrStream; + } std::string getString() const { return StrStream.str(); @@ -277,6 +301,10 @@ public: { return FileStream; } + const std::ostream& Stream() const override + { + return FileStream; + } void close() { FileStream.close();