...
1
2
3 package Example
4
5 import (
6 flatbuffers "github.com/google/flatbuffers/go"
7 )
8
9 type ReferrableT struct {
10 Id uint64 `json:"id"`
11 }
12
13 func (t *ReferrableT) Pack(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
14 if t == nil {
15 return 0
16 }
17 ReferrableStart(builder)
18 ReferrableAddId(builder, t.Id)
19 return ReferrableEnd(builder)
20 }
21
22 func (rcv *Referrable) UnPackTo(t *ReferrableT) {
23 t.Id = rcv.Id()
24 }
25
26 func (rcv *Referrable) UnPack() *ReferrableT {
27 if rcv == nil {
28 return nil
29 }
30 t := &ReferrableT{}
31 rcv.UnPackTo(t)
32 return t
33 }
34
35 type Referrable struct {
36 _tab flatbuffers.Table
37 }
38
39 func GetRootAsReferrable(buf []byte, offset flatbuffers.UOffsetT) *Referrable {
40 n := flatbuffers.GetUOffsetT(buf[offset:])
41 x := &Referrable{}
42 x.Init(buf, n+offset)
43 return x
44 }
45
46 func FinishReferrableBuffer(builder *flatbuffers.Builder, offset flatbuffers.UOffsetT) {
47 builder.Finish(offset)
48 }
49
50 func GetSizePrefixedRootAsReferrable(buf []byte, offset flatbuffers.UOffsetT) *Referrable {
51 n := flatbuffers.GetUOffsetT(buf[offset+flatbuffers.SizeUint32:])
52 x := &Referrable{}
53 x.Init(buf, n+offset+flatbuffers.SizeUint32)
54 return x
55 }
56
57 func FinishSizePrefixedReferrableBuffer(builder *flatbuffers.Builder, offset flatbuffers.UOffsetT) {
58 builder.FinishSizePrefixed(offset)
59 }
60
61 func (rcv *Referrable) Init(buf []byte, i flatbuffers.UOffsetT) {
62 rcv._tab.Bytes = buf
63 rcv._tab.Pos = i
64 }
65
66 func (rcv *Referrable) Table() flatbuffers.Table {
67 return rcv._tab
68 }
69
70 func (rcv *Referrable) Id() uint64 {
71 o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
72 if o != 0 {
73 return rcv._tab.GetUint64(o + rcv._tab.Pos)
74 }
75 return 0
76 }
77
78 func (rcv *Referrable) MutateId(n uint64) bool {
79 return rcv._tab.MutateUint64Slot(4, n)
80 }
81
82 func ReferrableKeyCompare(o1, o2 flatbuffers.UOffsetT, buf []byte) bool {
83 obj1 := &Referrable{}
84 obj2 := &Referrable{}
85 obj1.Init(buf, flatbuffers.UOffsetT(len(buf))-o1)
86 obj2.Init(buf, flatbuffers.UOffsetT(len(buf))-o2)
87 return obj1.Id() < obj2.Id()
88 }
89
90 func (rcv *Referrable) LookupByKey(key uint64, vectorLocation flatbuffers.UOffsetT, buf []byte) bool {
91 span := flatbuffers.GetUOffsetT(buf[vectorLocation-4:])
92 start := flatbuffers.UOffsetT(0)
93 for span != 0 {
94 middle := span / 2
95 tableOffset := flatbuffers.GetIndirectOffset(buf, vectorLocation+4*(start+middle))
96 obj := &Referrable{}
97 obj.Init(buf, tableOffset)
98 val := obj.Id()
99 comp := 0
100 if val > key {
101 comp = 1
102 } else if val < key {
103 comp = -1
104 }
105 if comp > 0 {
106 span = middle
107 } else if comp < 0 {
108 middle += 1
109 start += middle
110 span -= middle
111 } else {
112 rcv.Init(buf, tableOffset)
113 return true
114 }
115 }
116 return false
117 }
118
119 func ReferrableStart(builder *flatbuffers.Builder) {
120 builder.StartObject(1)
121 }
122 func ReferrableAddId(builder *flatbuffers.Builder, id uint64) {
123 builder.PrependUint64Slot(0, id, 0)
124 }
125 func ReferrableEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
126 return builder.EndObject()
127 }
128
View as plain text