| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- {{namespace_with_grace_begin __namespace}}
- {{~if __this.comment != '' ~}}
- /**
- * {{escape_comment __this.comment}}
- */
- {{~end~}}
- class {{__name}}
- {
- {{~if __this.is_map_table ~}}
- private:
- ::luban::HashMap<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}> _dataMap;
- ::luban::Vector<{{declaring_type_name __value_type}}> _dataList;
-
- public:
- ~{{__name}}()
- {
- for (auto& _v : _dataList)
- {
- LUBAN_FREE(_v);
- }
- }
- bool load(::luban::ByteBuf& _buf)
- {
- int n;
- if (!_buf.readSize(n)) return false;
- for(; n > 0 ; --n)
- {
- {{declaring_type_name __value_type}} _v;
- {{deserialize '_buf' '_v' __value_type}}
- _dataList.push_back(_v);
- _dataMap[_v->{{format_field_name __code_style __this.index_field.name}}] = _v;
- }
- return true;
- }
- const ::luban::HashMap<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}>& getDataMap() const { return _dataMap; }
- const ::luban::Vector<{{declaring_type_name __value_type}}>& getDataList() const { return _dataList; }
- {{declaring_type_name __value_type}} get({{declaring_type_name __key_type}} key)
- {
- auto it = _dataMap.find(key);
- return it != _dataMap.end() ? it->second : nullptr;
- }
- {{~else if __this.is_list_table~}}
- private:
- ::luban::Vector<{{declaring_type_name __value_type}}> _dataList;
- {{~if __this.is_union_index~}}
- {{~else if !__this.index_list.empty?~}}
- {{~for idx in __this.index_list~}}
- ::luban::HashMap<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}> _dataMap_{{idx.index_field.name}};
- {{~end~}}
- {{~else~}}
- {{~end~}}
-
- public:
- bool load(::luban::ByteBuf& _buf)
- {
- int n;
- if (!_buf.readSize(n)) return false;
- for(; n > 0 ; --n)
- {
- {{declaring_type_name __value_type}} _v;
- {{deserialize '_buf' '_v' __value_type}}
- _dataList.push_back(_v);
- {{~if __this.is_union_index~}}
- {{~else if !__this.index_list.empty?~}}
- {{~for idx in __this.index_list~}}
- _dataMap_{{idx.index_field.name}}[_v->{{idx.index_field.name}}] = _v;
- {{~end~}}
- {{~else~}}
- {{~end~}}
- }
- return true;
- }
- const ::luban::Vector<{{declaring_type_name __value_type}}>& getDataList() const { return _dataList; }
- {{~if __this.is_union_index~}}
- {{~else if !__this.index_list.empty?~}}
- {{~for idx in __this.index_list~}}
- ::luban::HashMap<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}>& getDataMapBy{{idx.index_field.name}}()
- {
- return _dataMap_{{idx.index_field.name}};
- }
- {{declaring_type_name __value_type}} getBy{{idx.index_field.name}}({{declaring_type_name idx.type}} key)
- {
- auto it = _dataMap_{{idx.index_field.name}}.find(key);
- return it != _dataMap_{{idx.index_field.name}}.end() ? it->second : nullptr;
- }
- {{~end~}}
- {{~else~}}
- {{declaring_type_name __value_type}} get(size_t index) const
- {
- return _dataList[index];
- }
- {{~end~}}
- {{~else~}}
- private:
- {{declaring_type_name __value_type}} _data;
- public:
- {{declaring_type_name __value_type}} data() const { return _data; }
- bool load(::luban::ByteBuf& _buf)
- {
- int n;
- if (!_buf.readSize(n)) return false;
- if (n != 1) return false;
- {{deserialize '_buf' '_data' __value_type}}
- return true;
- }
- {{~ for field in __value_type.def_bean.hierarchy_export_fields ~}}
- {{~if field.comment != '' ~}}
- /**
- * {{escape_comment field.comment}}
- */
- {{~end~}}
- {{declaring_type_name field.ctype}}& {{getter_name field.name}}() const { return _data->{{format_field_name __code_style field.name}}; }
- {{~end~}}
- {{~end~}}
- };
- {{namespace_with_grace_end __namespace}}
|