/Protocol/generator/template/template_msg_network.h

http://awoe.googlecode.com/ · C Header · 304 lines · 274 code · 21 blank · 9 comment · 37 complexity · 62f57f5d4a2dd0500164122a02447e2b MD5 · raw file

  1. //
  2. // Generated by lua
  3. // 2009-2011 (C) Simplay Inc. Reserved
  4. //
  5. #ifndef __MSG_<#=file_tag#>_H__
  6. #define __MSG_<#=file_tag#>_H__
  7. #include "Message/MsgBase.h"
  8. #include "Message/MsgCategory.h"
  9. #include "CommonType.h"
  10. #pragma pack(push, 1)
  11. <#
  12. for _,msg in ipairs(messages) do
  13. if msg.define=="struct" then
  14. #>
  15. //
  16. // Message Definition for <#=msg.name#>
  17. struct <#=msg.name#>
  18. <#
  19. if msg.base then
  20. #>
  21. : public <#=msg.base#>
  22. <#
  23. end
  24. #>
  25. {
  26. public:
  27. <#=msg.name#>()
  28. {
  29. <#
  30. for _,attr in ipairs(msg.attributes) do
  31. if attr.default then
  32. if attr.list then
  33. elseif attr.array then
  34. #>
  35. for (int i=0; i<<#=attr.array#>; i++)
  36. {
  37. <#=vname(attr.name)#> [i] = <#=attr.default#>;
  38. }
  39. <#
  40. else
  41. #>
  42. <#=vname(attr.name)#> = <#=attr.default#>;
  43. <#
  44. end
  45. end
  46. end
  47. #>
  48. }
  49. virtual bool onEncode(MsgOStream& s) const
  50. {
  51. <#
  52. if msg.base then
  53. #>
  54. __super::onEncode(s);
  55. <#
  56. end
  57. for _,attr in ipairs(msg.attributes) do
  58. if attr.list then
  59. #>
  60. short list_size = <#=vname(attr.name)#>.size();
  61. s<<list_size;
  62. if (list_size>0)
  63. {
  64. for (<#=types(attr.type)#>List::iterator it = <#=vname(attr.name)#>.begin(); it!=<#=vname(attr.name)#>.end(); it++)
  65. {
  66. s<<*it;
  67. }
  68. }
  69. <#
  70. elseif attr.array then
  71. #>
  72. for(int i=0; i<<#=attr.array#>; i++)
  73. {
  74. s<<<#=vname(attr.name)#>[i];
  75. }
  76. <#
  77. else
  78. #>
  79. s<<<#=vname(attr.name)#>;
  80. <#
  81. end
  82. end
  83. #>
  84. return true;
  85. }
  86. virtual bool onDecode(MsgIStream& s)
  87. {
  88. <#
  89. if msg.base then
  90. #>
  91. __super::onDecode(s);
  92. <#
  93. end
  94. for _,attr in ipairs(msg.attributes) do
  95. if attr.list then
  96. #>
  97. short list_size = 0;
  98. s>>list_size;
  99. <#=vname(attr.name)#>.clear()
  100. while(list_size>0)
  101. {
  102. list_size--;
  103. <#=types(attr.type)#> val;
  104. s>>val;
  105. <#=vname(attr.name)#>.push_back(val);
  106. }
  107. <#
  108. elseif attr.array then
  109. #>
  110. for(int i=0; i<<#=attr.array#>; i++)
  111. {
  112. s>><#=vname(attr.name)#>[i];
  113. }
  114. <#
  115. else
  116. #>
  117. s>><#=vname(attr.name)#>;
  118. <#
  119. end
  120. end
  121. #>
  122. return true;
  123. }
  124. <#
  125. for _,attr in ipairs(msg.attributes) do
  126. if attr.list then
  127. #>
  128. typedef std::list< <#=types(attr.type)#> > <#=types(attr.type)#>List;
  129. <#=types(attr.type)#>List <#=vname(attr.name)#>;
  130. <#
  131. elseif attr.array then
  132. #>
  133. <#=types(attr.type)#> <#=vname(attr.name)#>[<#=attr.array#>];
  134. <#
  135. else
  136. #>
  137. <#=types(attr.type)#> <#=vname(attr.name)#>;
  138. <#
  139. end
  140. end
  141. #>
  142. };
  143. <#
  144. else
  145. #>
  146. //
  147. // Message Definition for <#=msg.name#>
  148. //
  149. class Msg<#=msg.name#>
  150. <#
  151. if msg.base then
  152. #>
  153. : public <#=msg.base#>
  154. <#
  155. end
  156. #>
  157. {
  158. public:
  159. enum { Category = <#=msg.category#>, Id = <#=msg.id#> };
  160. <#
  161. if msg.base then
  162. #>
  163. Msg<#=msg.name#>()
  164. :<#=msg.base#>(Category, Id)
  165. <#
  166. else
  167. #>
  168. Msg<#=msg.name#>()
  169. <#
  170. end
  171. #>
  172. {
  173. <#
  174. for _,attr in ipairs(msg.attributes) do
  175. if attr.default then
  176. if attr.list then
  177. elseif attr.array then
  178. #>
  179. for (int i=0; i<<#=attr.array#>; i++)
  180. {
  181. <#=vname(attr.name)#> [i] = <#=attr.default#>;
  182. }
  183. <#
  184. else
  185. #>
  186. <#=vname(attr.name)#> = <#=attr.default#>;
  187. <#
  188. end
  189. end
  190. end
  191. #>
  192. }
  193. virtual bool encode(MsgOStream& s)
  194. {
  195. <#
  196. for _,attr in ipairs(msg.attributes) do
  197. if attr.list then
  198. #>
  199. short list_size = <#=vname(attr.name)#>.size();
  200. s<<list_size;
  201. if (list_size>0)
  202. {
  203. for (<#=types(attr.type)#>List::iterator it = <#=vname(attr.name)#>.begin(); it!=<#=vname(attr.name)#>.end(); it++)
  204. {
  205. s<<*it;
  206. }
  207. }
  208. <#
  209. elseif attr.array then
  210. #>
  211. for(int i=0; i<<#=attr.array#>; i++)
  212. {
  213. s<<<#=vname(attr.name)#>[i];
  214. }
  215. <#
  216. else
  217. #>
  218. s<<<#=vname(attr.name)#>;
  219. <#
  220. end
  221. end
  222. #>
  223. return true;
  224. }
  225. virtual bool decode(MsgIStream& s)
  226. {
  227. <#
  228. for _,attr in ipairs(msg.attributes) do
  229. if attr.list then
  230. #>
  231. short list_size = 0;
  232. s>>list_size;
  233. <#=vname(attr.name)#>.clear();
  234. while(list_size>0)
  235. {
  236. list_size--;
  237. <#=types(attr.type)#> val;
  238. s>>val;
  239. <#=vname(attr.name)#>.push_back(val);
  240. }
  241. <#
  242. elseif attr.array then
  243. #>
  244. for(int i=0; i<<#=attr.array#>; i++)
  245. {
  246. s>><#=vname(attr.name)#>[i];
  247. }
  248. <#
  249. else
  250. #>
  251. s>><#=vname(attr.name)#>;
  252. <#
  253. end
  254. end
  255. #>
  256. return true;
  257. }
  258. public:
  259. <#
  260. for _,attr in ipairs(msg.attributes) do
  261. if attr.list then
  262. #>
  263. typedef std::vector< <#=types(attr.type)#> > <#=types(attr.type)#>List;
  264. <#=types(attr.type)#>List <#=vname(attr.name)#>;
  265. <#
  266. elseif attr.array then
  267. #>
  268. <#=types(attr.type)#> <#=vname(attr.name)#>[<#=attr.array#>];
  269. <#
  270. else
  271. #>
  272. <#=types(attr.type)#> <#=vname(attr.name)#>;
  273. <#
  274. end
  275. end
  276. #>
  277. };
  278. <#
  279. end
  280. end
  281. #>
  282. #pragma pack(pop)
  283. #endif