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_); + } + }