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 ELEM>
62 size_t len = value.size();
68 for (
size_t i = 1; i < len; ++i)
70 if (prevVal == value[i])
76 ELEM()(serialize, name, prevVal);
81 ELEM()(serialize, name, prevVal);
91 for (
size_t i = 0; i < len;)
96 ELEM()(deserialize, name, el);
98 value.insert(value.end(), count, el);
103 template<
typename KS,
typename VS>
106 template<
typename K,
typename V>
109 size_t len = value.size();
111 for (
typename std::map<K, V>::iterator it = value.begin(); it != value.end(); ++it)
113 KS()(serialize,
"key", it->first);
114 VS()(serialize,
"value", it->second);
118 template<
typename K,
typename V,
typename C>
121 size_t len = value.size();
123 for (
typename std::map<K, V>::iterator it = value.begin(); it != value.end(); ++it)
125 KS()(serialize,
"key", it->first);
126 VS()(serialize,
"value", it->second, context);
133 typedef typename M::key_type K;
134 typedef typename M::value_type::second_type V;
138 for (
size_t i = 0; i < len; ++i)
142 KS()(deserialize,
"key", k);
143 VS()(deserialize,
"value", v);
144 value.insert(std::make_pair(k, v));
148 template<
typename M,
typename C>
151 typedef typename M::key_type K;
152 typedef typename M::value_type::second_type V;
156 for (
size_t i = 0; i < len; ++i)
160 KS()(deserialize,
"key", k);
161 VS()(deserialize,
"value", v, context);
162 value.insert(std::make_pair(k, v));
168 template<
typename KS,
typename VS>
171 template<
typename K,
typename V>
174 std::map<K, V> ordered_value(value.begin(), value.end());
178 template<
typename K,
typename V>
185 template<
typename T, T max>
190 serialize.
NumberU8(name, value, 0, max);
196 deserialize.
NumberU8(name, val, 0, max);
257 serialize.
Bool(name, value);
262 deserialize.
Bool(name, value);
300 serialize.NumberFixed_Unbounded(
"goal x", value.
x);
301 serialize.NumberFixed_Unbounded(
"goal z", value.
z);
302 serialize.NumberFixed_Unbounded(
"goal u x", value.
u.
X);
303 serialize.NumberFixed_Unbounded(
"goal u z", value.
u.
Y);
304 serialize.NumberFixed_Unbounded(
"goal v x", value.
v.
X);
305 serialize.NumberFixed_Unbounded(
"goal v z", value.
v.
Y);
306 serialize.NumberFixed_Unbounded(
"goal hw", value.
hw);
307 serialize.NumberFixed_Unbounded(
"goal hh", value.
hh);
308 serialize.NumberFixed_Unbounded(
"maxdist", value.
maxdist);
312 #endif // INCLUDED_SERIALIZETEMPLATES void operator()(IDeserializer &deserialize, const char *name, std::string &value)
Definition: SerializeTemplates.h:273
virtual void StringASCII(const char *name, std::string &out, uint32_t minlength, uint32_t maxlength)
Definition: IDeserializer.cpp:162
void operator()(IDeserializer &deserialize, const char *name, std::vector< T > &value)
Definition: SerializeTemplates.h:41
void operator()(IDeserializer &deserialize, const char *name, std::vector< T > &value)
Definition: SerializeTemplates.h:85
void NumberFixed_Unbounded(const char *name, fixed value)
Serialize a number.
Definition: ISerializer.h:191
virtual void Bool(const char *name, bool &out)
Definition: IDeserializer.cpp:155
#define UNUSED(param)
mark a function parameter as unused and avoid the corresponding compiler warning. ...
Definition: code_annotation.h:38
void operator()(ISerializer &serialize, const char *name, boost::unordered_map< K, V > &value)
Definition: SerializeTemplates.h:172
Definition: SerializeTemplates.h:227
Definition: SerializeTemplates.h:169
uint16_t u16
Definition: types.h:38
void operator()(IDeserializer &deserialize, const char *name, u16 &value)
Definition: SerializeTemplates.h:221
Serialization interface; see serialization overview.
Definition: ISerializer.h:120
entity_pos_t hw
Definition: PathGoal.h:47
void NumberU8_Unbounded(const char *name, uint8_t value)
Serialize a number.
Definition: ISerializer.h:150
Definition: Pathfinding.h:31
virtual void NumberU32_Unbounded(const char *name, uint32_t &out)
Definition: IDeserializer.cpp:124
Pathfinder goal.
Definition: PathGoal.h:32
Definition: SerializeTemplates.h:104
virtual void NumberFixed_Unbounded(const char *name, fixed &out)
Definition: IDeserializer.cpp:148
virtual void NumberU8_Unbounded(const char *name, uint8_t &out)
Definition: IDeserializer.cpp:100
Definition: SerializeTemplates.h:240
uint8_t u8
Definition: types.h:37
void operator()(IDeserializer &deserialize, const char *name, M &value, C &context)
Definition: SerializeTemplates.h:149
#define UINT32_MAX
Definition: wposix_types.h:73
Definition: SerializeTemplates.h:29
fixed Y
Definition: FixedVector2D.h:27
void operator()(ISerializer &serialize, const char *name, const std::string &value)
Definition: SerializeTemplates.h:268
entity_pos_t z
Definition: Pathfinding.h:33
void operator()(ISerializer &serialize, const char *name, u8 value)
Definition: SerializeTemplates.h:203
void operator()(ISerializer &serialize, const char *name, std::vector< T > &value)
Definition: SerializeTemplates.h:60
uint32_t u32
Definition: types.h:39
void operator()(IDeserializer &deserialize, const char *name, bool &value)
Definition: SerializeTemplates.h:260
Definition: SerializeTemplates.h:57
void StringASCII(const char *name, const std::string &value, uint32_t minlength, uint32_t maxlength)
Serialize an ASCII string.
Definition: ISerializer.cpp:70
Definition: SerializeTemplates.h:214
Definition: SerializeTemplates.h:266
entity_pos_t hh
Definition: PathGoal.h:47
void Bool(const char *name, bool value)
Serialize a boolean.
Definition: ISerializer.h:199
entity_pos_t x
Definition: PathGoal.h:43
#define T(string_literal)
Definition: secure_crt.cpp:76
Definition: SerializeTemplates.h:186
void NumberU32_Unbounded(const char *name, uint32_t value)
Serialize a number.
Definition: ISerializer.h:171
void operator()(S &serialize, const char *name, PathGoal &value)
Definition: SerializeTemplates.h:297
void operator()(ISerializer &serialize, const char *name, u32 value)
Definition: SerializeTemplates.h:229
void operator()(ISerializer &serialize, const char *name, u16 value)
Definition: SerializeTemplates.h:216
int32_t i32
Definition: types.h:34
CFixedVector2D v
Definition: PathGoal.h:45
void operator()(IDeserializer &deserialize, const char *name, i32 &value)
Definition: SerializeTemplates.h:247
CFixedVector2D u
Definition: PathGoal.h:45
void operator()(IDeserializer &deserialize, const char *name, M &value)
Definition: SerializeTemplates.h:131
void operator()(ISerializer &serialize, const char *name, std::map< K, V > &value)
Definition: SerializeTemplates.h:107
virtual void NumberU8(const char *name, uint8_t &out, uint8_t lower, uint8_t upper)
Definition: IDeserializer.cpp:30
void operator()(ISerializer &serialize, const char *name, i32 value)
Definition: SerializeTemplates.h:242
Definition: SerializeTemplates.h:294
void operator()(ISerializer &serialize, const char *name, T value)
Definition: SerializeTemplates.h:188
entity_pos_t maxdist
Definition: PathGoal.h:49
void operator()(IDeserializer &deserialize, const char *name, T &value)
Definition: SerializeTemplates.h:193
void operator()(ISerializer &serialize, const char *name, bool value)
Definition: SerializeTemplates.h:255
fixed X
Definition: FixedVector2D.h:27
void NumberI32_Unbounded(const char *name, int32_t value)
Serialize a number.
Definition: ISerializer.h:176
void operator()(IDeserializer &deserialize, const char *name, boost::unordered_map< K, V > &value)
Definition: SerializeTemplates.h:179
void operator()(ISerializer &serialize, const char *name, std::map< K, V > &value, C &context)
Definition: SerializeTemplates.h:119
Definition: SerializeTemplates.h:253
entity_pos_t x
Definition: Pathfinding.h:33
void operator()(ISerializer &serialize, const char *name, const Waypoint &value)
Definition: SerializeTemplates.h:281
Definition: SerializeTemplates.h:279
void operator()(IDeserializer &deserialize, const char *name, u32 &value)
Definition: SerializeTemplates.h:234
void NumberU16_Unbounded(const char *name, uint16_t value)
Serialize a number.
Definition: ISerializer.h:161
void operator()(ISerializer &serialize, const char *name, std::vector< T > &value)
Definition: SerializeTemplates.h:32
void operator()(IDeserializer &deserialize, const char *name, u8 &value)
Definition: SerializeTemplates.h:208
void NumberU8(const char *name, uint8_t value, uint8_t lower, uint8_t upper)
Serialize a number, which must be lower <= value <= upper.
Definition: ISerializer.cpp:28
void operator()(IDeserializer &deserialize, const char *name, Waypoint &value)
Definition: SerializeTemplates.h:287
entity_pos_t z
Definition: PathGoal.h:43
Definition: SerializeTemplates.h:201
virtual void NumberU16_Unbounded(const char *name, uint16_t &out)
Definition: IDeserializer.cpp:110
Deserialization interface; see serialization overview.
Definition: IDeserializer.h:34
virtual void NumberI32_Unbounded(const char *name, int32_t &out)
Definition: IDeserializer.cpp:131