#ifndef __pxx_binary_stream_ih__ #define __pxx_binary_stream_ih__ #include "pxx_binary_stream.hh" #include "pxx_stream.ih" namespace pxx { inline BinaryStream::BinaryStream ( io_mode_t _mode ) : Stream (_mode) {} inline BinaryStream& BinaryStream::operator << (char _c) { put(_c); return self; } inline BinaryStream& BinaryStream::operator >> (char& _c) { get(_c); return self; } inline BinaryStream& BinaryStream::operator << (int8_t _n) { return self << (char)(_n); } inline BinaryStream& BinaryStream::operator >> (int8_t& _n) { return self >> (char&)(_n); } inline BinaryStream& BinaryStream::operator << (uint8_t _n) { return self << (char)(_n); } inline BinaryStream& BinaryStream::operator >> (uint8_t& _n) { return self >> (char&)(_n); } inline BinaryStream& BinaryStream::operator << (uint16_t _n) { return self << uint8_t(_n >> 8) << uint8_t(_n & 0xFF); } inline BinaryStream& BinaryStream::operator >> (uint16_t& _n) { uint8_t n; self >> n; _n = n; _n <<= 8; self >> n; _n |= n; return self; } inline BinaryStream& BinaryStream::operator << (int16_t _n) { return self << uint16_t(_n); } inline BinaryStream& BinaryStream::operator >> (int16_t& _n) { return self >> (uint16_t&)(_n); } inline BinaryStream& BinaryStream::operator << (uint32_t _n) { return self << uint16_t(_n >> 16) << uint16_t(_n & 0xFFFF); } inline BinaryStream& BinaryStream::operator >> (uint32_t& _n) { uint16_t n; self >> n; _n = n; _n <<= 16; self >> n; _n |= n; return self; } inline BinaryStream& BinaryStream::operator << (int32_t _n) { return self << uint32_t(_n); } inline BinaryStream& BinaryStream::operator >> (int32_t& _n) { return self >> (uint32_t&)(_n); } inline BinaryStream& BinaryStream::operator << (uint64_t _n) { return self << uint32_t(_n >> 32) << uint32_t(_n & 0xFFFFFFFF); } inline BinaryStream& BinaryStream::operator >> (uint64_t& _n) { uint32_t n; self >> n; _n = n; _n <<= 32; self >> n; _n |= n; return self; } inline BinaryStream& BinaryStream::operator << (int64_t _n) { return self << uint64_t(_n); } inline BinaryStream& BinaryStream::operator >> (int64_t& _n) { return self >> (uint64_t&)(_n); } inline BinaryStream& BinaryStream::endl () { return self << L'\n'; } } #endif // __pxx_binary_stream_ih__