From 82e716467025e3239788d3aa5ded22f2c849525a Mon Sep 17 00:00:00 2001 From: lisyarus Date: Thu, 1 Jul 2021 20:12:48 +0300 Subject: [PATCH] Support flushing output streams --- libs/io/include/psemek/io/file_stream.hpp | 2 ++ libs/io/include/psemek/io/stream.hpp | 1 + libs/io/source/file_stream.cpp | 6 ++++++ 3 files changed, 9 insertions(+) diff --git a/libs/io/include/psemek/io/file_stream.hpp b/libs/io/include/psemek/io/file_stream.hpp index 8be3dd07..2bce09a7 100644 --- a/libs/io/include/psemek/io/file_stream.hpp +++ b/libs/io/include/psemek/io/file_stream.hpp @@ -83,6 +83,8 @@ namespace psemek::io std::size_t write(char const * p, std::size_t size) override; + void flush() override; + ~file_ostream() override { reset(); diff --git a/libs/io/include/psemek/io/stream.hpp b/libs/io/include/psemek/io/stream.hpp index 988c3bec..9ba9a0ed 100644 --- a/libs/io/include/psemek/io/stream.hpp +++ b/libs/io/include/psemek/io/stream.hpp @@ -18,6 +18,7 @@ namespace psemek::io struct ostream { virtual std::size_t write(char const * p, std::size_t size) = 0; + virtual void flush() {} virtual ~ostream() {} }; diff --git a/libs/io/source/file_stream.cpp b/libs/io/source/file_stream.cpp index 8f48b6f3..50c809cb 100644 --- a/libs/io/source/file_stream.cpp +++ b/libs/io/source/file_stream.cpp @@ -63,4 +63,10 @@ namespace psemek::io return std::fwrite(p, 1, size, file_); } + void file_ostream::flush() + { + if (!file_) throw null_ostream{}; + std::fflush(file_); + } + }