{{~if __namespace != ''~}} package {{__namespace}}; {{~end~}} import ( "{{__luban_module_name}}" "errors" ) type ByteBufLoader func(string) (*luban.ByteBuf, error) type {{__name}} struct { {{~for table in __tables ~}} {{table.name}} *{{full_name table}} {{~end~}} } func NewTables(loader ByteBufLoader) (*{{__name}}, error) { var err error var buf *luban.ByteBuf 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{{full_name table}}(buf) ; err != nil { return nil, errors.Join(errors.New("failed to load {{table.name}}"), err) } {{~end~}} return tables, nil }