18 #ifndef INCLUDED_SERIALIZETEMPLATES
19 #define INCLUDED_SERIALIZETEMPLATES
28 template<
typename ELEM>
34 size_t len = value.size();
36 for (
size_t i = 0; i < len; ++i)
37 ELEM()(serialize, name, value[i]);
47 for (
size_t i = 0; i < len; ++i)
50 ELEM()(deserialize, name, el);
56 template<
typename KS,
typename VS>
59 template<
typename K,
typename V>
62 size_t len = value.size();
64 for (
typename std::map<K, V>::iterator it = value.begin(); it != value.end(); ++it)
66 KS()(serialize,
"key", it->first);
67 VS()(serialize,
"value", it->second);
71 template<
typename K,
typename V,
typename C>
74 size_t len = value.size();
76 for (
typename std::map<K, V>::iterator it = value.begin(); it != value.end(); ++it)
78 KS()(serialize,
"key", it->first);
79 VS()(serialize,
"value", it->second, context);
86 typedef typename M::key_type K;
87 typedef typename M::value_type::second_type V;
91 for (
size_t i = 0; i < len; ++i)
95 KS()(deserialize,
"key", k);
96 VS()(deserialize,
"value", v);
97 value.insert(std::make_pair(k, v));
101 template<
typename M,
typename C>
104 typedef typename M::key_type K;
105 typedef typename M::value_type::second_type V;
109 for (
size_t i = 0; i < len; ++i)
113 KS()(deserialize,
"key", k);
114 VS()(deserialize,
"value", v, context);
115 value.insert(std::make_pair(k, v));
121 template<
typename KS,
typename VS>
124 template<
typename K,
typename V>
127 std::map<K, V> ordered_value(value.begin(), value.end());
131 template<
typename K,
typename V>
138 template<
typename T, T max>
143 serialize.
NumberU8(name, value, 0, max);
149 deserialize.
NumberU8(name, val, 0, max);
184 serialize.
Bool(name, value);
189 deserialize.
Bool(name, value);
227 serialize.NumberFixed_Unbounded(
"goal x", value.
x);
228 serialize.NumberFixed_Unbounded(
"goal z", value.
z);
229 serialize.NumberFixed_Unbounded(
"goal u x", value.
u.
X);
230 serialize.NumberFixed_Unbounded(
"goal u z", value.
u.
Y);
231 serialize.NumberFixed_Unbounded(
"goal v x", value.
v.
X);
232 serialize.NumberFixed_Unbounded(
"goal v z", value.
v.
Y);
233 serialize.NumberFixed_Unbounded(
"goal hw", value.
hw);
234 serialize.NumberFixed_Unbounded(
"goal hh", value.
hh);
238 #endif // INCLUDED_SERIALIZETEMPLATES
void operator()(IDeserializer &deserialize, const char *name, std::vector< T > &value)
void NumberFixed_Unbounded(const char *name, fixed value)
Serialize a number.
virtual void Bool(const char *name, bool &out)
#define UNUSED(param)
mark a function parameter as unused and avoid the corresponding compiler warning. ...
void operator()(ISerializer &serialize, const char *name, boost::unordered_map< K, V > &value)
void operator()(IDeserializer &deserialize, const char *name, CScriptValRooted &value)
Serialization interface; see serialization overview.
virtual void NumberU32_Unbounded(const char *name, uint32_t &out)
void ScriptVal(const char *name, jsval value)
Serialize a jsval.
virtual void NumberFixed_Unbounded(const char *name, fixed &out)
void operator()(ISerializer &serialize, const char *name, const ICmpPathfinder::Waypoint &value)
void operator()(IDeserializer &deserialize, const char *name, M &value, C &context)
void operator()(ISerializer &serialize, const char *name, CScriptValRooted value)
void operator()(IDeserializer &deserialize, const char *name, ICmpPathfinder::Waypoint &value)
void operator()(IDeserializer &deserialize, const char *name, bool &value)
void Bool(const char *name, bool value)
Serialize a boolean.
#define T(string_literal)
void NumberU32_Unbounded(const char *name, uint32_t value)
Serialize a number.
void operator()(ISerializer &serialize, const char *name, u32 value)
void operator()(IDeserializer &deserialize, const char *name, i32 &value)
void operator()(IDeserializer &deserialize, const char *name, M &value)
enum ICmpPathfinder::Goal::Type type
void operator()(ISerializer &serialize, const char *name, std::map< K, V > &value)
virtual void NumberU8(const char *name, uint8_t &out, uint8_t lower, uint8_t upper)
virtual void ScriptVal(const char *name, jsval &out)=0
Deserialize a jsval, replacing 'out'.
void operator()(ISerializer &serialize, const char *name, i32 value)
void operator()(ISerializer &serialize, const char *name, T value)
void operator()(S &serialize, const char *name, ICmpPathfinder::Goal &value)
void operator()(IDeserializer &deserialize, const char *name, T &value)
void operator()(ISerializer &serialize, const char *name, bool value)
void NumberI32_Unbounded(const char *name, int32_t value)
Serialize a number.
void operator()(IDeserializer &deserialize, const char *name, boost::unordered_map< K, V > &value)
void operator()(ISerializer &serialize, const char *name, std::map< K, V > &value, C &context)
void operator()(IDeserializer &deserialize, const char *name, u32 &value)
void operator()(ISerializer &serialize, const char *name, std::vector< T > &value)
void NumberU8(const char *name, uint8_t value, uint8_t lower, uint8_t upper)
Serialize a number, which must be lower <= value <= upper.
Deserialization interface; see serialization overview.
virtual void NumberI32_Unbounded(const char *name, int32_t &out)