/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
- //
- // Generated by lua
- // 2009-2011 (C) Simplay Inc. Reserved
- //
-
- #ifndef __MSG_<#=file_tag#>_H__
- #define __MSG_<#=file_tag#>_H__
-
- #include "Message/MsgBase.h"
- #include "Message/MsgCategory.h"
- #include "CommonType.h"
-
- #pragma pack(push, 1)
-
-
- <#
- for _,msg in ipairs(messages) do
- if msg.define=="struct" then
- #>
- //
- // Message Definition for <#=msg.name#>
-
- struct <#=msg.name#>
- <#
- if msg.base then
- #>
- : public <#=msg.base#>
- <#
- end
- #>
- {
- public:
- <#=msg.name#>()
- {
- <#
- for _,attr in ipairs(msg.attributes) do
- if attr.default then
- if attr.list then
- elseif attr.array then
- #>
- for (int i=0; i<<#=attr.array#>; i++)
- {
- <#=vname(attr.name)#> [i] = <#=attr.default#>;
- }
- <#
- else
- #>
- <#=vname(attr.name)#> = <#=attr.default#>;
- <#
- end
- end
- end
- #>
- }
-
- virtual bool onEncode(MsgOStream& s) const
- {
- <#
- if msg.base then
- #>
- __super::onEncode(s);
- <#
- end
-
- for _,attr in ipairs(msg.attributes) do
- if attr.list then
- #>
- short list_size = <#=vname(attr.name)#>.size();
- s<<list_size;
- if (list_size>0)
- {
- for (<#=types(attr.type)#>List::iterator it = <#=vname(attr.name)#>.begin(); it!=<#=vname(attr.name)#>.end(); it++)
- {
- s<<*it;
- }
- }
- <#
- elseif attr.array then
- #>
- for(int i=0; i<<#=attr.array#>; i++)
- {
- s<<<#=vname(attr.name)#>[i];
- }
- <#
- else
- #>
- s<<<#=vname(attr.name)#>;
- <#
- end
- end
- #>
- return true;
- }
- virtual bool onDecode(MsgIStream& s)
- {
- <#
- if msg.base then
- #>
- __super::onDecode(s);
- <#
- end
-
- for _,attr in ipairs(msg.attributes) do
- if attr.list then
- #>
- short list_size = 0;
- s>>list_size;
- <#=vname(attr.name)#>.clear()
- while(list_size>0)
- {
- list_size--;
- <#=types(attr.type)#> val;
- s>>val;
- <#=vname(attr.name)#>.push_back(val);
- }
- <#
- elseif attr.array then
- #>
- for(int i=0; i<<#=attr.array#>; i++)
- {
- s>><#=vname(attr.name)#>[i];
- }
- <#
- else
- #>
- s>><#=vname(attr.name)#>;
- <#
- end
- end
- #>
- return true;
- }
-
- <#
- for _,attr in ipairs(msg.attributes) do
- if attr.list then
- #>
- typedef std::list< <#=types(attr.type)#> > <#=types(attr.type)#>List;
- <#=types(attr.type)#>List <#=vname(attr.name)#>;
- <#
- elseif attr.array then
- #>
- <#=types(attr.type)#> <#=vname(attr.name)#>[<#=attr.array#>];
- <#
- else
- #>
- <#=types(attr.type)#> <#=vname(attr.name)#>;
- <#
- end
- end
- #>
- };
-
-
- <#
- else
- #>
- //
- // Message Definition for <#=msg.name#>
-
- //
- class Msg<#=msg.name#>
- <#
- if msg.base then
- #>
- : public <#=msg.base#>
- <#
- end
- #>
-
- {
- public:
- enum { Category = <#=msg.category#>, Id = <#=msg.id#> };
-
- <#
- if msg.base then
- #>
- Msg<#=msg.name#>()
- :<#=msg.base#>(Category, Id)
- <#
- else
- #>
- Msg<#=msg.name#>()
- <#
- end
- #>
- {
- <#
- for _,attr in ipairs(msg.attributes) do
- if attr.default then
- if attr.list then
- elseif attr.array then
- #>
- for (int i=0; i<<#=attr.array#>; i++)
- {
- <#=vname(attr.name)#> [i] = <#=attr.default#>;
- }
- <#
- else
- #>
- <#=vname(attr.name)#> = <#=attr.default#>;
- <#
- end
- end
- end
- #>
- }
-
-
- virtual bool encode(MsgOStream& s)
- {
- <#
- for _,attr in ipairs(msg.attributes) do
- if attr.list then
- #>
- short list_size = <#=vname(attr.name)#>.size();
- s<<list_size;
- if (list_size>0)
- {
- for (<#=types(attr.type)#>List::iterator it = <#=vname(attr.name)#>.begin(); it!=<#=vname(attr.name)#>.end(); it++)
- {
- s<<*it;
- }
- }
- <#
- elseif attr.array then
- #>
- for(int i=0; i<<#=attr.array#>; i++)
- {
- s<<<#=vname(attr.name)#>[i];
- }
- <#
- else
- #>
- s<<<#=vname(attr.name)#>;
- <#
- end
- end
- #>
- return true;
- }
- virtual bool decode(MsgIStream& s)
- {
- <#
- for _,attr in ipairs(msg.attributes) do
- if attr.list then
- #>
- short list_size = 0;
- s>>list_size;
- <#=vname(attr.name)#>.clear();
- while(list_size>0)
- {
- list_size--;
- <#=types(attr.type)#> val;
- s>>val;
- <#=vname(attr.name)#>.push_back(val);
- }
- <#
- elseif attr.array then
- #>
- for(int i=0; i<<#=attr.array#>; i++)
- {
- s>><#=vname(attr.name)#>[i];
- }
- <#
- else
- #>
- s>><#=vname(attr.name)#>;
- <#
- end
- end
- #>
- return true;
- }
- public:
- <#
- for _,attr in ipairs(msg.attributes) do
- if attr.list then
- #>
- typedef std::vector< <#=types(attr.type)#> > <#=types(attr.type)#>List;
- <#=types(attr.type)#>List <#=vname(attr.name)#>;
- <#
- elseif attr.array then
- #>
- <#=types(attr.type)#> <#=vname(attr.name)#>[<#=attr.array#>];
- <#
- else
- #>
- <#=types(attr.type)#> <#=vname(attr.name)#>;
- <#
- end
- end
- #>
- };
-
- <#
- end
- end
- #>
-
-
- #pragma pack(pop)
-
- #endif