table.sbn 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. {{~if ___top_module != ''~}}
  2. package {{__top_module}};
  3. {{~end~}}
  4. {{~
  5. go_full_name = full_name __this
  6. key_type = __this.key_ttype
  7. value_type = __this.value_ttype
  8. index_field = __this.index_field
  9. ~}}
  10. import "{{__luban_module_name}}"
  11. {{~if __this.is_map_table~}}
  12. type {{go_full_name}} struct {
  13. _dataMap map[{{declaring_type_name key_type}}]{{declaring_type_name value_type}}
  14. _dataList []{{declaring_type_name value_type}}
  15. }
  16. func New{{go_full_name}}(_buf *luban.ByteBuf) (*{{go_full_name}}, error) {
  17. if size, err := _buf.ReadSize() ; err != nil {
  18. return nil, err
  19. } else {
  20. _dataList := make([]{{declaring_type_name value_type}}, 0, size)
  21. dataMap := make(map[{{declaring_type_name key_type}}]{{declaring_type_name value_type}})
  22. for i := 0 ; i < size ; i++ {
  23. if _v, err2 := New{{full_name value_type.def_bean}}(_buf); err2 != nil {
  24. return nil, err2
  25. } else {
  26. _dataList = append(_dataList, _v)
  27. {{~if value_type.is_dynamic ~}}
  28. {{~for child in value_type.def_bean.hierarchy_not_abstract_children~}}
  29. if __v, __is := _v.(*{{full_name child}}) ; __is {
  30. dataMap[__v.{{format_field_name __code_style index_field.name}}] = _v
  31. continue
  32. }
  33. {{~end~}}
  34. {{~else~}}
  35. dataMap[_v.{{format_field_name __code_style index_field.name}}] = _v
  36. {{~end~}}
  37. }
  38. }
  39. return &{{go_full_name}}{_dataList:_dataList, _dataMap:dataMap}, nil
  40. }
  41. }
  42. func (table *{{go_full_name}}) GetDataMap() map[{{declaring_type_name key_type}}]{{declaring_type_name value_type}} {
  43. return table._dataMap
  44. }
  45. func (table *{{go_full_name}}) GetDataList() []{{declaring_type_name value_type}} {
  46. return table._dataList
  47. }
  48. func (table *{{go_full_name}}) Get(key {{declaring_type_name key_type}}) {{declaring_type_name value_type}} {
  49. return table._dataMap[key]
  50. }
  51. {{~else if __this.is_list_table~}}
  52. type {{go_full_name}} struct {
  53. _dataList []{{declaring_type_name value_type}}
  54. }
  55. func New{{go_full_name}}(_buf *luban.ByteBuf) (*{{go_full_name}}, error) {
  56. if size, err := _buf.ReadSize() ; err != nil {
  57. return nil, err
  58. } else {
  59. _dataList := make([]{{declaring_type_name value_type}}, 0, size)
  60. for i := 0 ; i < size ; i++ {
  61. if _v, err2 := New{{full_name value_type.def_bean}}(_buf); err2 != nil {
  62. return nil, err2
  63. } else {
  64. _dataList = append(_dataList, _v)
  65. }
  66. }
  67. return &{{go_full_name}}{_dataList:_dataList}, nil
  68. }
  69. }
  70. func (table *{{go_full_name}}) GetDataList() []{{declaring_type_name value_type}} {
  71. return table._dataList
  72. }
  73. func (table *{{go_full_name}}) Get(index int) {{declaring_type_name value_type}} {
  74. return table._dataList[index]
  75. }
  76. {{~else~}}
  77. import "errors"
  78. type {{go_full_name}} struct {
  79. _data {{declaring_type_name value_type}}
  80. }
  81. func New{{go_full_name}}(_buf *luban.ByteBuf) (*{{go_full_name}}, error) {
  82. if size, err := _buf.ReadSize() ; err != nil {
  83. return nil, err
  84. } else if size != 1 {
  85. return nil, errors.New(" size != 1 ")
  86. } else {
  87. if _v, err2 := New{{full_name value_type.def_bean}}(_buf); err2 != nil {
  88. return nil, err2
  89. } else {
  90. return &{{go_full_name}}{_data:_v}, nil
  91. }
  92. }
  93. }
  94. func (table *{{go_full_name}}) Get() {{declaring_type_name value_type}} {
  95. return table._data
  96. }
  97. {{~end~}}