1 Star 0 Fork 0

jackytse / tabtoy

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
text.go 2.48 KB
一键复制 编辑 原始数据 按行查看 历史
package cssrc
// 报错行号+3
const templateText = `// Generated by gitee.com/jackytse/tabtoy
// DO NOT EDIT!!
// Version: {{.Version}}
using System;
using System.Collections.Generic;
namespace {{.PackageName}}
{ {{range $sn, $objName := $.Types.EnumNames}}
public enum {{$objName}}
{ {{range $fi,$field := $.Types.AllFieldByName $objName}}
{{$field.FieldName}} = {{$field.Value}}, // {{$field.Name}} {{end}}
}
{{end}} {{range $sn, $objName := $.Types.StructNames}}
public partial class {{$objName}} : tabtoy.ITableSerializable
{ {{range $fi,$field := $.Types.AllFieldByName $objName}}
public {{CSType $field}} {{$field.FieldName}} = {{CSDefaultValue $ $field}}; {{end}}
{{if $.GenBinary}}#region Deserialize Code
public void Deserialize( tabtoy.TableReader reader )
{
UInt32 tag = 0;
while ( reader.ReadTag(ref tag) )
{
switch (tag)
{ {{range $fi,$field := $.Types.AllFieldByName $objName}}
case {{CSTag $ $fi $field}}:
{
reader.Read{{CSReader $ $field}}( ref {{$field.FieldName}} );
}
break;{{end}}
}
}
}
#endregion {{end}}
}
{{end}}
// Combine struct
public partial class {{.CombineStructName}}
{ {{range $ti, $tab := $.Datas.AllTables}}
// table: {{$tab.HeaderType}}
public List<{{$tab.HeaderType}}> {{$tab.HeaderType}} = new List<{{$tab.HeaderType}}>(); {{end}}
// Indices {{range $ii, $idx := GetIndices $}}
public Dictionary<{{CSType $idx.FieldInfo}},{{$idx.Table.HeaderType}}> {{$idx.Table.HeaderType}}By{{$idx.FieldInfo.FieldName}} = new Dictionary<{{CSType $idx.FieldInfo}},{{$idx.Table.HeaderType}}>(); {{end}}
{{if HasKeyValueTypes $}}
//{{range $ti, $name := GetKeyValueTypeNames $}} table: {{$name}}
public {{$name}} GetKeyValue_{{$name}}()
{
return {{$name}}[0];
}{{end}}{{end}}
public void ResetData( )
{ {{range $ti, $tab := $.Datas.AllTables}}
{{$tab.HeaderType}}.Clear(); {{end}} {{range $ii, $idx := GetIndices $}}
{{$idx.Table.HeaderType}}By{{$idx.FieldInfo.FieldName}}.Clear(); {{end}}
}
{{if $.GenBinary}}
public void Deserialize( tabtoy.TableReader reader )
{
reader.ReadHeader();{{range $ti, $tab := $.Datas.AllTables}}
reader.ReadStruct(ref {{$tab.HeaderType}}); {{end}}
{{range $ii, $idx := GetIndices $}}
foreach( var kv in {{$idx.Table.HeaderType}} )
{
{{$idx.Table.HeaderType}}By{{$idx.FieldInfo.FieldName}}[kv.{{$idx.FieldInfo.FieldName}}] = kv;
}
{{end}}
}{{end}}
}
}
`
Go
1
https://gitee.com/jackytse/tabtoy.git
git@gitee.com:jackytse/tabtoy.git
jackytse
tabtoy
tabtoy
v0.1.0

搜索帮助