1 #ifndef DYSCO_SERIALIZABLE_H
2 #define DYSCO_SERIALIZABLE_H
12 virtual void Serialize(std::ostream &stream)
const = 0;
17 uint64_t val64t =
value;
18 stream.write(
reinterpret_cast<char *
>(&val64t),
sizeof(val64t));
23 uint32_t val32t =
value;
24 stream.write(
reinterpret_cast<char *
>(&val32t),
sizeof(val32t));
29 uint16_t val16t =
value;
30 stream.write(
reinterpret_cast<char *
>(&val16t),
sizeof(val16t));
35 uint8_t val8t =
value;
36 stream.write(
reinterpret_cast<char *
>(&val8t),
sizeof(val8t));
40 uint8_t val8t =
value;
41 stream.write(
reinterpret_cast<char *
>(&val8t),
sizeof(val8t));
45 stream.write(
reinterpret_cast<char *
>(&
value),
sizeof(
value));
49 stream.write(
reinterpret_cast<char *
>(&
value),
sizeof(
value));
53 stream.write(
reinterpret_cast<char *
>(&
value),
sizeof(
value));
57 std::complex<long double>
value) {
58 stream.write(
reinterpret_cast<char *
>(&
value),
sizeof(
value));
63 stream.write(str.c_str(), str.size());
67 const std::string &str) {
69 stream.write(str.c_str(), str.size());
73 return Unserialize<uint64_t>(stream);
77 return Unserialize<uint32_t>(stream);
81 return Unserialize<uint16_t>(stream);
85 return Unserialize<uint8_t>(stream);
89 return (
bool)Unserialize<uint8_t>(stream);
93 return Unserialize<float>(stream);
97 return Unserialize<double>(stream);
101 return Unserialize<long double>(stream);
105 return Unserialize<std::complex<long double>>(stream);
110 char *str =
new char[size];
111 stream.read(str, size);
112 destStr = std::string(str, size);
118 char *str =
new char[size];
119 stream.read(str, size);
120 destStr = std::string(str, size);
125 template <
typename T>
128 stream.read(
reinterpret_cast<char *
>(&val),
sizeof(val));
virtual void Unserialize(std::istream &stream)=0
static T Unserialize(std::istream &stream)
static uint16_t UnserializeUInt16(std::istream &stream)
static void SerializeToUInt16(std::ostream &stream, T value)
static void SerializeToFloat(std::ostream &stream, float value)
static void SerializeToDouble(std::ostream &stream, double value)
static long double UnserializeLDouble(std::istream &stream)
virtual void Serialize(std::ostream &stream) const =0
static void SerializeToLDouble(std::ostream &stream, long double value)
static uint32_t UnserializeUInt32(std::istream &stream)
static void SerializeToUInt8(std::ostream &stream, T value)
static void SerializeTo32bString(std::ostream &stream, const std::string &str)
static void SerializeToUInt64(std::ostream &stream, T value)
static void UnserializeString(std::istream &stream, std::string &destStr)
static void Unserialize32bString(std::istream &stream, std::string &destStr)
static uint64_t UnserializeUInt64(std::istream &stream)
static double UnserializeDouble(std::istream &stream)
static double UnserializeFloat(std::istream &stream)
static void SerializeToBool8(std::ostream &stream, bool value)
static void SerializeToString(std::ostream &stream, const std::string &str)
static std::complex< long double > UnserializeLDoubleC(std::istream &stream)
static uint8_t UnserializeUInt8(std::istream &stream)
static bool UnserializeBool8(std::istream &stream)
static void SerializeToUInt32(std::ostream &stream, T value)
static void SerializeToLDoubleC(std::ostream &stream, std::complex< long double > value)
LatticeExprNode value(const LatticeExprNode &expr)
This function returns the value of the expression without a mask.