X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fio%2Fmode.h;h=6230a6560936962c16ae448e888c9313b9e1890a;hb=refs%2Fheads%2Fwip;hp=706609f03f4bb7c5c8b40c111b1da11f02d4581d;hpb=933356a36607f5d4480172e285071d4d7dfc5a7b;p=libs%2Fcore.git diff --git a/source/io/mode.h b/source/io/mode.h index 706609f..6230a65 100644 --- a/source/io/mode.h +++ b/source/io/mode.h @@ -2,6 +2,7 @@ #define MSP_IO_MODE_H_ #include +#include namespace Msp { namespace IO { @@ -13,7 +14,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) @@ -25,12 +27,14 @@ 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 + +class MSPCORE_API invalid_access: public std::logic_error { public: invalid_access(Mode); - ~invalid_access() throw() { } }; } // namespace IO