static_assert( __cplusplus > 2020'99 ); #pragma once #include #include #include namespace Alepha::Hydrogen::IOStreams ::detail:: OutUnixFileBuf_m { inline namespace exports { class OutUnixFileBuf; } class exports::OutUnixFileBuf : virtual public std::streambuf { private: int fd; int overflow( const int ch_ ) override { if( ch_ == EOF ) throw std::runtime_error{ "Unexpected EOF" }; const char ch= ch_; xsputn( &ch, 1 ); return ch_; } std::streamsize xsputn( const char *const data, const std::streamsize amt ) override { return ::write( fd, data, amt ); } public: explicit OutUnixFileBuf( const int fd ) : fd( fd ) {} }; } namespace Alepha::Hydrogen::IOStreams::inline exports::inline OutUnixFileBuf_m { using namespace detail::OutUnixFileBuf_m::exports; }