forked from Alepha/Alepha
StackableStreambuf
needs to be exported (and cleaned up).
This commit is contained in:
@ -4,7 +4,7 @@ static_assert( __cplusplus > 2020'00 );
|
|||||||
|
|
||||||
#include <Alepha/Alepha.h>
|
#include <Alepha/Alepha.h>
|
||||||
|
|
||||||
#include <ios>
|
#include <ostream>
|
||||||
#include <exception>
|
#include <exception>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
@ -36,6 +36,7 @@ namespace Alepha::Hydrogen::Utility ::detail:: stackable_streambuf
|
|||||||
|
|
||||||
~StackableStreambuf() {}
|
~StackableStreambuf() {}
|
||||||
|
|
||||||
|
// Children must be created by `new`.
|
||||||
explicit
|
explicit
|
||||||
StackableStreambuf( std::ostream &host )
|
StackableStreambuf( std::ostream &host )
|
||||||
: underlying( host.rdbuf( this ) )
|
: underlying( host.rdbuf( this ) )
|
||||||
@ -67,7 +68,7 @@ namespace Alepha::Hydrogen::Utility ::detail:: stackable_streambuf
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
inline void
|
||||||
impl::releaseStack( std::ios_base &ios )
|
impl::releaseStack( std::ios_base &ios )
|
||||||
{
|
{
|
||||||
auto &os= dynamic_cast< std::ostream & >( ios );
|
auto &os= dynamic_cast< std::ostream & >( ios );
|
||||||
@ -91,7 +92,11 @@ namespace Alepha::Hydrogen::Utility ::detail:: stackable_streambuf
|
|||||||
}
|
}
|
||||||
|
|
||||||
template< typename T >
|
template< typename T >
|
||||||
struct exports::PushStack : T {};
|
struct exports::PushStack
|
||||||
|
: T
|
||||||
|
{
|
||||||
|
using T::T;
|
||||||
|
};
|
||||||
|
|
||||||
template< typename T >
|
template< typename T >
|
||||||
struct exports::PopStack {};
|
struct exports::PopStack {};
|
||||||
@ -100,7 +105,7 @@ namespace Alepha::Hydrogen::Utility ::detail:: stackable_streambuf
|
|||||||
std::ostream &
|
std::ostream &
|
||||||
operator << ( std::ostream &os, PushStack< T > &¶ms )
|
operator << ( std::ostream &os, PushStack< T > &¶ms )
|
||||||
{
|
{
|
||||||
build_streambuf( os, params );
|
build_streambuf( os, std::move( params ) );
|
||||||
return os;
|
return os;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,3 +118,8 @@ namespace Alepha::Hydrogen::Utility ::detail:: stackable_streambuf
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace Alepha::Hydrogen::Utility::inline exports::inline stackable_streambuf
|
||||||
|
{
|
||||||
|
using namespace detail::stackable_streambuf::exports;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user