1
0
forked from Alepha/Alepha

AutoRAII based stream adaptors.

This commit is contained in:
2024-04-03 16:28:55 -04:00
parent 435bd912a4
commit 83034c501f
3 changed files with 18 additions and 25 deletions

View File

@ -10,6 +10,8 @@ static_assert( __cplusplus > 2020'99 );
#include <memory>
#include <stack>
#include <Alepha/AutoRAII.h>
namespace Alepha::Hydrogen::IOStreams ::detail:: StackableStreambuf_m
{
inline namespace exports
@ -169,6 +171,17 @@ namespace Alepha::Hydrogen::IOStreams ::detail:: StackableStreambuf_m
std::ostream & operator << ( std::ostream &os, PopStack );
std::istream & operator >> ( std::istream &is, PopStack );
}
template< typename T >
[[nodiscard]] auto
adaptStream( PushStack< T > &&params, std::ostream &os )
{
return AutoRAII
{
[&os, &params] { build_streambuf( os, std::move( params ) ); },
[&os] { os << PopStack{}; }
};
}
}
namespace Alepha::Hydrogen::IOStreams::inline exports::inline StackableStreambuf_m