1
0
forked from Alepha/Alepha

Exception state masking.

This commit is contained in:
2023-12-02 04:18:58 -05:00
parent 6b5cfa246d
commit b9de163083

View File

@ -0,0 +1,38 @@
static_assert( __cplusplus > 2020'99 );
#pragma once
#include <Alepha/Alepha.h>
namespace Alepha::Hydrogen::IOStreams ::detail:: EnableExceptions_m
{
inline namespace exports
{
class EnableExceptions;
}
class exports::EnableExceptions
{
private:
std::ios *ios;
std::ios_base::iostate oldState;
public:
~EnableExceptions()
{
ios->exceptions( oldState );
}
explicit
EnableExceptions( std::ios &ios )
: ios( &ios ), oldState( ios.exceptions() )
{
ios.exceptions( std::ios_base::badbit | std::ios_base::failbit );
}
};
}
namespace Alepha::Hydrogen::IOStreams::inline exports::inline EnableExceptions_m
{
using namespace detail::EnableExceptions_m::exports;
}