Start TEngine3.0

Start TEngine3.0
This commit is contained in:
ALEXTANG
2023-03-31 17:27:49 +08:00
parent 179765c43c
commit 36353294d6
1032 changed files with 21868 additions and 102407 deletions

View File

@@ -0,0 +1,55 @@
{{~
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_export_fields
hierarchy_not_abstract_children = x.hierarchy_not_abstract_children
~}}
package {{x.top_module}}
{{x.go_json_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}})Deserialize(_buf map[string]interface{}) (err error) {
{{~for field in hierarchy_fields ~}}
{{go_deserialize_json_field field.ctype ("_v." + field.convention_name) field.name '_buf'}}
{{~end~}}
return
}
{{~if is_abstract_type~}}
func Deserialize{{go_full_name}}(_buf map[string]interface{}) (interface{}, error) {
var id string
var _ok_ bool
if id, _ok_ = _buf["{{x.json_type_name_key}}"].(string) ; !_ok_ {
return nil, errors.New("type id missing")
}
switch id {
{{~for child in hierarchy_not_abstract_children~}}
case "{{cs_impl_data_type child x}}": _v := &{{child.go_full_name}}{}; if err := _v.Deserialize(_buf); err != nil { return nil, errors.New("{{child.full_name}}") } else { return _v, nil }
{{~end~}}
default: return nil, errors.New("unknown type id")
}
}
{{~else~}}
func Deserialize{{go_full_name}}(_buf map[string]interface{}) (*{{go_full_name}}, error) {
v := &{{go_full_name}}{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}
{{~end~}}

View File

@@ -0,0 +1,105 @@
{{~
go_full_name = x.go_full_name
key_type = x.key_ttype
key_type1 = x.key_ttype1
key_type2 = x.key_ttype2
value_type = x.value_ttype
index_field = x.index_field
index_field1 = x.index_field1
index_field2 = x.index_field2
~}}
package {{x.top_module}}
{{~if x.is_map_table~}}
type {{go_full_name}} struct {
_dataMap map[{{go_define_type key_type}}]{{go_define_type value_type}}
_dataList []{{go_define_type value_type}}
}
func New{{go_full_name}}(_buf []map[string]interface{}) (*{{go_full_name}}, error) {
_dataList := make([]{{go_define_type value_type}}, 0, len(_buf))
dataMap := make(map[{{go_define_type key_type}}]{{go_define_type value_type}})
for _, _ele_ := range _buf {
if _v, err2 := {{go_deserialize_type value_type '_ele_'}}; err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
{{~if value_type.is_dynamic ~}}
{{~for child in value_type.bean.hierarchy_not_abstract_children~}}
if __v, __is := _v.(*{{child.go_full_name}}) ; __is {
dataMap[__v.{{index_field.convention_name}}] = _v
continue
}
{{~end~}}
{{~else~}}
dataMap[_v.{{index_field.convention_name}}] = _v
{{~end~}}
}
}
return &{{go_full_name}}{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *{{go_full_name}}) GetDataMap() map[{{go_define_type key_type}}]{{go_define_type value_type}} {
return table._dataMap
}
func (table *{{go_full_name}}) GetDataList() []{{go_define_type value_type}} {
return table._dataList
}
func (table *{{go_full_name}}) Get(key {{go_define_type key_type}}) {{go_define_type value_type}} {
return table._dataMap[key]
}
{{~else if x.is_list_table~}}
type {{go_full_name}} struct {
_dataList []{{go_define_type value_type}}
}
func New{{go_full_name}}(_buf []map[string]interface{}) (*{{go_full_name}}, error) {
_dataList := make([]{{go_define_type value_type}}, 0, len(_buf))
for _, _ele_ := range _buf {
if _v, err2 := {{go_deserialize_type value_type '_ele_'}}; err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
}
}
return &{{go_full_name}}{_dataList:_dataList}, nil
}
func (table *{{go_full_name}}) GetDataList() []{{go_define_type value_type}} {
return table._dataList
}
func (table *{{go_full_name}}) Get(index int) {{go_define_type value_type}} {
return table._dataList[index]
}
{{~else~}}
import "errors"
type {{go_full_name}} struct {
_data {{go_define_type value_type}}
}
func New{{go_full_name}}(_buf []map[string]interface{}) (*{{go_full_name}}, error) {
if len(_buf) != 1 {
return nil, errors.New(" size != 1 ")
} else {
if _v, err2 := {{go_deserialize_type value_type '_buf[0]'}}; err2 != nil {
return nil, err2
} else {
return &{{go_full_name}}{_data:_v}, nil
}
}
}
func (table *{{go_full_name}}) Get() {{go_define_type value_type}} {
return table._data
}
{{~end~}}

View File

@@ -0,0 +1,31 @@
{{~
name = x.name
namespace = x.namespace
tables = x.tables
~}}
package {{namespace}}
type JsonLoader func(string) ([]map[string]interface{}, error)
type {{name}} struct {
{{~for table in tables ~}}
{{table.name}} *{{table.go_full_name}}
{{~end~}}
}
func NewTables(loader JsonLoader) (*{{name}}, error) {
var err error
var buf []map[string]interface{}
tables := &{{name}}{}
{{~for table in tables ~}}
if buf, err = loader("{{table.output_data_file}}") ; err != nil {
return nil, err
}
if tables.{{table.name}}, err = New{{table.go_full_name}}(buf) ; err != nil {
return nil, err
}
{{~end~}}
return tables, nil
}