IO::Mode set_mode(std::ios& i, IO::Mode m) { IO::Mode old = get_mode(i); i.iword(IO::mode) = m; return old; }
IO::Mode set_pretty_mode(std::ios& i) { IO::Mode m = get_mode(i); i.iword(IO::mode) = IO::PRETTY; return m; }
IO::Mode set_binary_mode(std::ios& i) { IO::Mode m = get_mode(i); i.iword(IO::mode) = IO::BINARY; return m; }
IO::Mode set_ascii_mode(std::ios& i) { IO::Mode m = get_mode(i); i.iword(IO::mode) = IO::ASCII; return m; }
bool is_binary(std::ios& i) { return i.iword(IO::mode) == IO::BINARY; }
bool is_ascii(std::ios& i) { return i.iword(IO::mode) == IO::ASCII; }
bool is_pretty(std::ios& i) { return i.iword(IO::mode) == IO::PRETTY; }
IO::Mode get_mode(std::ios& i) { return static_cast<IO::Mode>(i.iword(IO::mode)); }