forked from Alepha/Alepha
AutoRAII based stream adaptors.
This commit is contained in:
@ -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 > &¶ms, std::ostream &os )
|
||||
{
|
||||
return AutoRAII
|
||||
{
|
||||
[&os, ¶ms] { build_streambuf( os, std::move( params ) ); },
|
||||
[&os] { os << PopStack{}; }
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace Alepha::Hydrogen::IOStreams::inline exports::inline StackableStreambuf_m
|
||||
|
Reference in New Issue
Block a user