75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Smarty
		
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Smarty
		
	
	
	
|  | {{- | ||
|  |     go_full_name = x.go_full_name
 | ||
|  |     parent_def_type = x.parent_def_type
 | ||
|  |     is_abstract_type = x.is_abstract_type
 | ||
|  |     hierarchy_fields = x.hierarchy_fields
 | ||
|  |     hierarchy_not_abstract_children = x.hierarchy_not_abstract_children
 | ||
|  | -}}
 | ||
|  | 
 | ||
|  | package {{x.top_module}}
 | ||
|  | 
 | ||
|  | import (
 | ||
|  |     "bright/serialization"
 | ||
|  | )
 | ||
|  | 
 | ||
|  | {{x.go_bin_import}}
 | ||
|  | 
 | ||
|  | type {{go_full_name}} struct { | ||
|  |     {{~for field in hierarchy_fields ~}}
 | ||
|  |     {{field.convention_name}} {{go_define_type field.ctype}}
 | ||
|  |     {{~end~}}
 | ||
|  | }
 | ||
|  | 
 | ||
|  | const TypeId_{{go_full_name}} = {{x.id}}
 | ||
|  | 
 | ||
|  | func (*{{go_full_name}}) GetTypeId() int32 { | ||
|  |     return {{x.id}}
 | ||
|  | }
 | ||
|  | 
 | ||
|  | func (_v *{{go_full_name}})Serialize(_buf *serialization.ByteBuf) { | ||
|  |     {{~for field in hierarchy_fields ~}}
 | ||
|  |     {{go_serialize_field  field.ctype ("_v." + field.convention_name) '_buf'}}
 | ||
|  |     {{~end~}}
 | ||
|  | }
 | ||
|  | 
 | ||
|  | func (_v *{{go_full_name}})Deserialize(_buf *serialization.ByteBuf) (err error) { | ||
|  |     {{~for field in hierarchy_fields ~}}
 | ||
|  |     {{go_deserialize_field field.ctype ("_v." + field.convention_name) '_buf' 'err'}}
 | ||
|  |     {{~end~}}
 | ||
|  |     return
 | ||
|  | }
 | ||
|  | 
 | ||
|  | {{~if is_abstract_type~}}
 | ||
|  | func Serialize{{go_full_name}}(_v interface{}, _buf *serialization.ByteBuf) { | ||
|  |     _b := _v.(serialization.ISerializable)
 | ||
|  |     _buf.WriteInt(_b.GetTypeId())
 | ||
|  |     _b.Serialize(_buf)
 | ||
|  | }
 | ||
|  | 
 | ||
|  | func Deserialize{{go_full_name}}(_buf *serialization.ByteBuf) (_v serialization.ISerializable, err error) { | ||
|  |     var id int32
 | ||
|  |     if id, err = _buf.ReadInt() ; err != nil { | ||
|  |         return
 | ||
|  |     }
 | ||
|  |     switch id { | ||
|  |         {{~for child in hierarchy_not_abstract_children~}}
 | ||
|  |         case {{child.id}}: _v = &{{child.go_full_name}}{}; if err = _v.Deserialize(_buf); err != nil { return nil, err } else { return }
 | ||
|  |         {{~end~}}
 | ||
|  |         default: return nil, errors.New("unknown type id")
 | ||
|  |     }
 | ||
|  | }
 | ||
|  | {{~else~}}
 | ||
|  | func Serialize{{go_full_name}}(_v serialization.ISerializable, _buf *serialization.ByteBuf) { | ||
|  |     _v.Serialize(_buf)
 | ||
|  | }
 | ||
|  | 
 | ||
|  | func Deserialize{{go_full_name}}(_buf *serialization.ByteBuf) (*{{go_full_name}}, error) { | ||
|  |     v := &{{go_full_name}}{}
 | ||
|  |     if err := v.Deserialize(_buf); err == nil { | ||
|  |         return v, nil
 | ||
|  |     } else { | ||
|  |         return nil, err
 | ||
|  |     }
 | ||
|  | }
 | ||
|  | {{~end~}}
 |