1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
#ifndef G3D_serialize_h
#define G3D_serialize_h
#include "G3D/BinaryInput.h"
#include "G3D/BinaryOutput.h"
#include "G3D/Array.h"
#include <string>
namespace G3D {
inline void serialize(const std::string& s, BinaryOutput& b) {
b.writeString32(s);
}
inline void deserialize(std::string& s, BinaryInput& b) {
s = b.readString32();
}
inline void serialize(const int32& i, BinaryOutput& b) {
b.writeInt32(i);
}
inline void deserialize(int32& i, BinaryInput& b) {
i = b.readInt32();
}
inline void serialize(const uint32& i, BinaryOutput& b) {
b.writeUInt32(i);
}
inline void deserialize(uint32& i, BinaryInput& b) {
i = b.readUInt32();
}
inline void serialize(const bool& i, BinaryOutput& b) {
b.writeBool8(i);
}
inline void deserialize(bool& i, BinaryInput& b) {
i = b.readBool8();
}
inline void serialize(const float32& f, BinaryOutput& b) {
b.writeFloat32(f);
}
inline void deserialize(float32& f, BinaryInput& b) {
f = b.readFloat32();
}
inline void serialize(const float64& f, BinaryOutput& b) {
b.writeFloat64(f);
}
inline void deserialize(float64& f, BinaryInput& b) {
f = b.readFloat64();
}
/** serialize(const T&, BinaryOutput&) must have been overridden as well */
template<typename T>
void serialize(const Array<T>& array, BinaryOutput& b) {
b.writeInt32(array.size());
for (int i = 0; i < array.size(); ++i) {
serialize(array[i], b);
}
}
template<typename T>
void deserialize(Array<T>& array, BinaryInput& b) {
int N = b.readInt32();
array.resize(N);
for (int i = 0; i < array.size(); ++i) {
deserialize(array[i], b);
}
}
} // G3D
#endif //G3D_serialize_h
|