/** * Read an arbitrary type. */ template<typename T> void read(T& ret) { base_type::read(reinterpret_cast<char*>(&ret), sizeof(T)); if(bad()) { std::cerr << "Error reading file!" << std::endl; assert(false); } }
//! Write the arbitrary data type to file template<typename T> void write(T t) { base_type::write(reinterpret_cast<char*>(&t), sizeof(T)); if(bad()) { std::cerr << "Error writing file!" << std::endl; assert(false); } }
/** * Read an arbitrary type. */ template<typename T> void read_vector(std::vector<T>& ret) { if(ret.empty()) return; base_type::read(reinterpret_cast<char*>(&(ret[0])), sizeof(T) * ret.size()); if(bad()) { std::cerr << "Error reading file!" << std::endl; assert(false); } }
/** * Read an arbitrary type. */ template<typename T> T read() { T t; base_type::read(reinterpret_cast<char*>(&t), sizeof(T)); if(bad()) { std::cerr << "Error reading file!" << std::endl; assert(false); } return t; }
binary_input_stream(const char* fname) : base_type(fname, std::ios::binary | std::ios::in) { assert(bad() == false); }
binary_output_stream(const char* fname) : std::ofstream(fname, std::ios::binary | std::ios::out) { assert(bad() == false); }