...
1
2
3 package Example
4
5 import (
6 flatbuffers "github.com/google/flatbuffers/go"
7 )
8
9 type StatT struct {
10 Id string `json:"id"`
11 Val int64 `json:"val"`
12 Count uint16 `json:"count"`
13 }
14
15 func (t *StatT) Pack(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
16 if t == nil {
17 return 0
18 }
19 idOffset := flatbuffers.UOffsetT(0)
20 if t.Id != "" {
21 idOffset = builder.CreateString(t.Id)
22 }
23 StatStart(builder)
24 StatAddId(builder, idOffset)
25 StatAddVal(builder, t.Val)
26 StatAddCount(builder, t.Count)
27 return StatEnd(builder)
28 }
29
30 func (rcv *Stat) UnPackTo(t *StatT) {
31 t.Id = string(rcv.Id())
32 t.Val = rcv.Val()
33 t.Count = rcv.Count()
34 }
35
36 func (rcv *Stat) UnPack() *StatT {
37 if rcv == nil {
38 return nil
39 }
40 t := &StatT{}
41 rcv.UnPackTo(t)
42 return t
43 }
44
45 type Stat struct {
46 _tab flatbuffers.Table
47 }
48
49 func GetRootAsStat(buf []byte, offset flatbuffers.UOffsetT) *Stat {
50 n := flatbuffers.GetUOffsetT(buf[offset:])
51 x := &Stat{}
52 x.Init(buf, n+offset)
53 return x
54 }
55
56 func FinishStatBuffer(builder *flatbuffers.Builder, offset flatbuffers.UOffsetT) {
57 builder.Finish(offset)
58 }
59
60 func GetSizePrefixedRootAsStat(buf []byte, offset flatbuffers.UOffsetT) *Stat {
61 n := flatbuffers.GetUOffsetT(buf[offset+flatbuffers.SizeUint32:])
62 x := &Stat{}
63 x.Init(buf, n+offset+flatbuffers.SizeUint32)
64 return x
65 }
66
67 func FinishSizePrefixedStatBuffer(builder *flatbuffers.Builder, offset flatbuffers.UOffsetT) {
68 builder.FinishSizePrefixed(offset)
69 }
70
71 func (rcv *Stat) Init(buf []byte, i flatbuffers.UOffsetT) {
72 rcv._tab.Bytes = buf
73 rcv._tab.Pos = i
74 }
75
76 func (rcv *Stat) Table() flatbuffers.Table {
77 return rcv._tab
78 }
79
80 func (rcv *Stat) Id() []byte {
81 o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
82 if o != 0 {
83 return rcv._tab.ByteVector(o + rcv._tab.Pos)
84 }
85 return nil
86 }
87
88 func (rcv *Stat) Val() int64 {
89 o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
90 if o != 0 {
91 return rcv._tab.GetInt64(o + rcv._tab.Pos)
92 }
93 return 0
94 }
95
96 func (rcv *Stat) MutateVal(n int64) bool {
97 return rcv._tab.MutateInt64Slot(6, n)
98 }
99
100 func (rcv *Stat) Count() uint16 {
101 o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
102 if o != 0 {
103 return rcv._tab.GetUint16(o + rcv._tab.Pos)
104 }
105 return 0
106 }
107
108 func (rcv *Stat) MutateCount(n uint16) bool {
109 return rcv._tab.MutateUint16Slot(8, n)
110 }
111
112 func StatKeyCompare(o1, o2 flatbuffers.UOffsetT, buf []byte) bool {
113 obj1 := &Stat{}
114 obj2 := &Stat{}
115 obj1.Init(buf, flatbuffers.UOffsetT(len(buf))-o1)
116 obj2.Init(buf, flatbuffers.UOffsetT(len(buf))-o2)
117 return obj1.Count() < obj2.Count()
118 }
119
120 func (rcv *Stat) LookupByKey(key uint16, vectorLocation flatbuffers.UOffsetT, buf []byte) bool {
121 span := flatbuffers.GetUOffsetT(buf[vectorLocation-4:])
122 start := flatbuffers.UOffsetT(0)
123 for span != 0 {
124 middle := span / 2
125 tableOffset := flatbuffers.GetIndirectOffset(buf, vectorLocation+4*(start+middle))
126 obj := &Stat{}
127 obj.Init(buf, tableOffset)
128 val := obj.Count()
129 comp := 0
130 if val > key {
131 comp = 1
132 } else if val < key {
133 comp = -1
134 }
135 if comp > 0 {
136 span = middle
137 } else if comp < 0 {
138 middle += 1
139 start += middle
140 span -= middle
141 } else {
142 rcv.Init(buf, tableOffset)
143 return true
144 }
145 }
146 return false
147 }
148
149 func StatStart(builder *flatbuffers.Builder) {
150 builder.StartObject(3)
151 }
152 func StatAddId(builder *flatbuffers.Builder, id flatbuffers.UOffsetT) {
153 builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(id), 0)
154 }
155 func StatAddVal(builder *flatbuffers.Builder, val int64) {
156 builder.PrependInt64Slot(1, val, 0)
157 }
158 func StatAddCount(builder *flatbuffers.Builder, count uint16) {
159 builder.PrependUint16Slot(2, count, 0)
160 }
161 func StatEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
162 return builder.EndObject()
163 }
164
View as plain text