91 lines
2.3 KiB
Smarty
91 lines
2.3 KiB
Smarty
using Bright.Serialization;
|
|
|
|
namespace {{namespace}}
|
|
{
|
|
|
|
public {{cs_class_modifier}} class {{name}} : {{if parent_def_type}} {{parent}} {{else}} ISerializable {{if is_abstract_type}}, ITypeId {{end}} {{end}}
|
|
{
|
|
public {{name}}() {{if parent_def_type}} : base() {{end}}
|
|
{
|
|
|
|
}
|
|
|
|
public {{name}}(Bright.Common.NotNullInitialization _) {{if parent_def_type}} : base(_) {{end}}
|
|
{
|
|
{{~for field in fields ~}}
|
|
{{~if field.ctype.need_init~}}
|
|
{{field.proto_cs_init_field}}
|
|
{{~end~}}
|
|
{{~end~}}
|
|
}
|
|
|
|
{{~if is_abstract_type~}}
|
|
public static void Serialize{{name}}(ByteBuf _buf, {{name}} x)
|
|
{
|
|
if (x == null) { _buf.WriteInt(0); return; }
|
|
_buf.WriteInt(x.GetTypeId());
|
|
x.Serialize(_buf);
|
|
}
|
|
|
|
public static {{name}} Deserialize{{name}}(ByteBuf _buf)
|
|
{
|
|
{{name}} x;
|
|
switch (_buf.ReadInt())
|
|
{
|
|
case 0 : return null;
|
|
{{~for child in hierarchy_not_abstract_children~}}
|
|
case {{child.full_name}}.ID: x = new {{child.full_name}}(false); break;
|
|
{{~end~}}
|
|
default: throw new SerializationException();
|
|
}
|
|
x.Deserialize(_buf);
|
|
return x;
|
|
}
|
|
{{~end~}}
|
|
{{~for field in fields ~}}
|
|
public {{field.ctype.cs_define_type}} {{field.cs_style_name}};
|
|
{{~end~}}
|
|
|
|
{{~if !parent_def_type && is_abstract_type~}}
|
|
public abstract int GetTypeId();
|
|
{{~end~}}
|
|
{{~if parent_def_type && !is_abstract_type~}}
|
|
public const int ID = {{id}};
|
|
public override int GetTypeId()
|
|
{
|
|
return ID;
|
|
}
|
|
{{~end~}}
|
|
|
|
public {{cs_method_modifer}} void Serialize(ByteBuf _buf)
|
|
{
|
|
{{~if parent_def_type~}}
|
|
base.Serialize(_buf);
|
|
{{~end~}}
|
|
{{~for field in fields ~}}
|
|
{{field.cs_serialize}}
|
|
{{~end~}}
|
|
}
|
|
|
|
public {{cs_method_modifer}} void Deserialize(ByteBuf _buf)
|
|
{
|
|
{{~if parent_def_type~}}
|
|
base.Deserialize(_buf);
|
|
{{~end~}}
|
|
{{~for field in fields ~}}
|
|
{{field.cs_deserialize}}
|
|
{{~end~}}
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return "{{full_name}}{ "
|
|
{{~for field in hierarchy_fields ~}}
|
|
+ "{{field.cs_style_name}}:" + {{field.proto_cs_to_string}} + ","
|
|
{{~end~}}
|
|
+ "}";
|
|
}
|
|
}
|
|
|
|
}
|