aboutsummaryrefslogtreecommitdiff
path: root/dep/g3dlite/include/G3D/serialize.h
blob: f4a2861170170803ac53f512eee127a1ca9d6bd9 (plain)
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