#include "num_read_write.h" namespace tpt { typedef unsigned char uchar; void numwrite(std::ostream& out, uint16_t const& x) { char buf[2]; buf[0] = x%256; buf[1] = (x>>8)%256; out.write(buf,2); } void numwrite(std::ostream& out, uint32_t const& x) { char buf[4]; buf[0] = x%256; buf[1] = (x>>8)%256; buf[2] = (x>>16)%256; buf[3] = (x>>24)%256; out.write(buf,4); } void numwrite(std::ostream& out, uint64_t const& x) { char buf[8]; buf[0] = x%256; buf[1] = (x>>8)%256; buf[2] = (x>>16)%256; buf[3] = (x>>24)%256; buf[4] = (x>>32)%256; buf[5] = (x>>40)%256; buf[6] = (x>>48)%256; buf[7] = (x>>56)%256; out.write(buf,8); } char const* numread(char const* src, uint16_t & x) { uchar const* d = reinterpret_cast(src); x = (uint16_t(d[0])<<0) | (uint16_t(d[1])<<8); return src+2; } char const* numread(char const* src, uint32_t & x) { uchar const* d = reinterpret_cast(src); x = ((uint32_t(d[0])<<0) | (uint32_t(d[1])<<8) | (uint32_t(d[2])<<16)| (uint32_t(d[3])<<24)); return src+4; } char const* numread(char const* src, uint64_t & x) { uchar const* d = reinterpret_cast(src); x = ((uint64_t(d[0])<<0) | (uint64_t(d[1])<<8) | (uint64_t(d[2])<<16) | (uint64_t(d[3])<<24) | (uint64_t(d[4])<<32) | (uint64_t(d[5])<<40) | (uint64_t(d[6])<<48) | (uint64_t(d[7])<<56)); return src+8; } }