X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Fmode.h;h=0f7bb4fc37650cabe29389021d9c06be0b64bebe;hp=5e103f278907be65a1f7f91da38ac34c5d113301;hb=ea8bf8f588310b0d7fd3297d74907602705bba1d;hpb=6e0fd758970bcb5bad5e3f2454b694cc4d7b4b66 diff --git a/source/io/mode.h b/source/io/mode.h index 5e103f2..0f7bb4f 100644 --- a/source/io/mode.h +++ b/source/io/mode.h @@ -1,6 +1,8 @@ #ifndef MSP_IO_MODE_H_ #define MSP_IO_MODE_H_ +#include + namespace Msp { namespace IO { @@ -11,7 +13,8 @@ enum Mode M_WRITE = 2, M_RDWR = M_READ|M_WRITE, M_APPEND = 4, - M_NONBLOCK = 8 + M_NONBLOCK = 8, + M_INHERIT = 16 }; inline Mode operator|(Mode m, Mode n) @@ -23,6 +26,17 @@ inline Mode operator&(Mode m, Mode n) inline Mode operator~(Mode m) { return Mode(~static_cast(m)); } +inline void adjust_mode(Mode &m, Mode f, bool b) +{ m = b ? (m|f) : (m&~f); } + + +class invalid_access: public std::logic_error +{ +public: + invalid_access(Mode); + ~invalid_access() throw() { } +}; + } // namespace IO } // namespace Msp