12 template<
class Stream>
bool IsReading(
const Stream&) {
13 return typeid(Stream) ==
typeid(std::ifstream);
17 static inline void SerializeT(std::ifstream& s, std::string& t) {
21 static inline void SerializeT(std::ofstream& s,
const std::string& t) {
26 static inline void SerializeT(std::ifstream& s,
bool& t) {
28 if (!std::getline(s, linein))
31 uint32_t value = std::stoi(linein);
35 void inline SerializeT(std::ofstream& s,
bool t) {
37 s <<
"1" << std::endl;
40 s <<
"0" << std::endl;
45 template<
typename T>
void SerializeT(std::ifstream& s, T& t) {
47 if (!std::getline(s, linein))
50 uint32_t value = std::stoi(linein);
51 t =
static_cast<T
>(value);
54 template<
typename T>
void SerializeT(std::ofstream& s, T t) {
55 s << std::to_string(static_cast<uint32_t>(t)) << std::endl;
58 static inline void SerializeT(std::ofstream& data_file,
const std::set<uint32_t>& s) {
59 data_file << std::to_string(s.size()) << std::endl;
60 for (std::set<uint32_t>::const_iterator it = s.begin(); it != s.end(); ++it) {
62 data_file << std::to_string(value) << std::endl;
66 static inline void SerializeT(std::ifstream& data_file, std::set<uint32_t>& s) {
67 uint32_t set_size = 0;
68 SerializeT<uint32_t>(data_file, set_size);
69 for (uint32_t i = 0; i < set_size; ++i) {
71 SerializeT<uint32_t>(data_file, value);