xref: /aosp_15_r20/external/flatbuffers/go/table.go (revision 890232f25432b36107d06881e0a25aaa6b473652)
1*890232f2SAndroid Build Coastguard Workerpackage flatbuffers
2*890232f2SAndroid Build Coastguard Worker
3*890232f2SAndroid Build Coastguard Worker// Table wraps a byte slice and provides read access to its data.
4*890232f2SAndroid Build Coastguard Worker//
5*890232f2SAndroid Build Coastguard Worker// The variable `Pos` indicates the root of the FlatBuffers object therein.
6*890232f2SAndroid Build Coastguard Workertype Table struct {
7*890232f2SAndroid Build Coastguard Worker	Bytes []byte
8*890232f2SAndroid Build Coastguard Worker	Pos   UOffsetT // Always < 1<<31.
9*890232f2SAndroid Build Coastguard Worker}
10*890232f2SAndroid Build Coastguard Worker
11*890232f2SAndroid Build Coastguard Worker// Offset provides access into the Table's vtable.
12*890232f2SAndroid Build Coastguard Worker//
13*890232f2SAndroid Build Coastguard Worker// Fields which are deprecated are ignored by checking against the vtable's length.
14*890232f2SAndroid Build Coastguard Workerfunc (t *Table) Offset(vtableOffset VOffsetT) VOffsetT {
15*890232f2SAndroid Build Coastguard Worker	vtable := UOffsetT(SOffsetT(t.Pos) - t.GetSOffsetT(t.Pos))
16*890232f2SAndroid Build Coastguard Worker	if vtableOffset < t.GetVOffsetT(vtable) {
17*890232f2SAndroid Build Coastguard Worker		return t.GetVOffsetT(vtable + UOffsetT(vtableOffset))
18*890232f2SAndroid Build Coastguard Worker	}
19*890232f2SAndroid Build Coastguard Worker	return 0
20*890232f2SAndroid Build Coastguard Worker}
21*890232f2SAndroid Build Coastguard Worker
22*890232f2SAndroid Build Coastguard Worker// Indirect retrieves the relative offset stored at `offset`.
23*890232f2SAndroid Build Coastguard Workerfunc (t *Table) Indirect(off UOffsetT) UOffsetT {
24*890232f2SAndroid Build Coastguard Worker	return off + GetUOffsetT(t.Bytes[off:])
25*890232f2SAndroid Build Coastguard Worker}
26*890232f2SAndroid Build Coastguard Worker
27*890232f2SAndroid Build Coastguard Worker// String gets a string from data stored inside the flatbuffer.
28*890232f2SAndroid Build Coastguard Workerfunc (t *Table) String(off UOffsetT) string {
29*890232f2SAndroid Build Coastguard Worker	b := t.ByteVector(off)
30*890232f2SAndroid Build Coastguard Worker	return byteSliceToString(b)
31*890232f2SAndroid Build Coastguard Worker}
32*890232f2SAndroid Build Coastguard Worker
33*890232f2SAndroid Build Coastguard Worker// ByteVector gets a byte slice from data stored inside the flatbuffer.
34*890232f2SAndroid Build Coastguard Workerfunc (t *Table) ByteVector(off UOffsetT) []byte {
35*890232f2SAndroid Build Coastguard Worker	off += GetUOffsetT(t.Bytes[off:])
36*890232f2SAndroid Build Coastguard Worker	start := off + UOffsetT(SizeUOffsetT)
37*890232f2SAndroid Build Coastguard Worker	length := GetUOffsetT(t.Bytes[off:])
38*890232f2SAndroid Build Coastguard Worker	return t.Bytes[start : start+length]
39*890232f2SAndroid Build Coastguard Worker}
40*890232f2SAndroid Build Coastguard Worker
41*890232f2SAndroid Build Coastguard Worker// VectorLen retrieves the length of the vector whose offset is stored at
42*890232f2SAndroid Build Coastguard Worker// "off" in this object.
43*890232f2SAndroid Build Coastguard Workerfunc (t *Table) VectorLen(off UOffsetT) int {
44*890232f2SAndroid Build Coastguard Worker	off += t.Pos
45*890232f2SAndroid Build Coastguard Worker	off += GetUOffsetT(t.Bytes[off:])
46*890232f2SAndroid Build Coastguard Worker	return int(GetUOffsetT(t.Bytes[off:]))
47*890232f2SAndroid Build Coastguard Worker}
48*890232f2SAndroid Build Coastguard Worker
49*890232f2SAndroid Build Coastguard Worker// Vector retrieves the start of data of the vector whose offset is stored
50*890232f2SAndroid Build Coastguard Worker// at "off" in this object.
51*890232f2SAndroid Build Coastguard Workerfunc (t *Table) Vector(off UOffsetT) UOffsetT {
52*890232f2SAndroid Build Coastguard Worker	off += t.Pos
53*890232f2SAndroid Build Coastguard Worker	x := off + GetUOffsetT(t.Bytes[off:])
54*890232f2SAndroid Build Coastguard Worker	// data starts after metadata containing the vector length
55*890232f2SAndroid Build Coastguard Worker	x += UOffsetT(SizeUOffsetT)
56*890232f2SAndroid Build Coastguard Worker	return x
57*890232f2SAndroid Build Coastguard Worker}
58*890232f2SAndroid Build Coastguard Worker
59*890232f2SAndroid Build Coastguard Worker// Union initializes any Table-derived type to point to the union at the given
60*890232f2SAndroid Build Coastguard Worker// offset.
61*890232f2SAndroid Build Coastguard Workerfunc (t *Table) Union(t2 *Table, off UOffsetT) {
62*890232f2SAndroid Build Coastguard Worker	off += t.Pos
63*890232f2SAndroid Build Coastguard Worker	t2.Pos = off + t.GetUOffsetT(off)
64*890232f2SAndroid Build Coastguard Worker	t2.Bytes = t.Bytes
65*890232f2SAndroid Build Coastguard Worker}
66*890232f2SAndroid Build Coastguard Worker
67*890232f2SAndroid Build Coastguard Worker// GetBool retrieves a bool at the given offset.
68*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetBool(off UOffsetT) bool {
69*890232f2SAndroid Build Coastguard Worker	return GetBool(t.Bytes[off:])
70*890232f2SAndroid Build Coastguard Worker}
71*890232f2SAndroid Build Coastguard Worker
72*890232f2SAndroid Build Coastguard Worker// GetByte retrieves a byte at the given offset.
73*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetByte(off UOffsetT) byte {
74*890232f2SAndroid Build Coastguard Worker	return GetByte(t.Bytes[off:])
75*890232f2SAndroid Build Coastguard Worker}
76*890232f2SAndroid Build Coastguard Worker
77*890232f2SAndroid Build Coastguard Worker// GetUint8 retrieves a uint8 at the given offset.
78*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetUint8(off UOffsetT) uint8 {
79*890232f2SAndroid Build Coastguard Worker	return GetUint8(t.Bytes[off:])
80*890232f2SAndroid Build Coastguard Worker}
81*890232f2SAndroid Build Coastguard Worker
82*890232f2SAndroid Build Coastguard Worker// GetUint16 retrieves a uint16 at the given offset.
83*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetUint16(off UOffsetT) uint16 {
84*890232f2SAndroid Build Coastguard Worker	return GetUint16(t.Bytes[off:])
85*890232f2SAndroid Build Coastguard Worker}
86*890232f2SAndroid Build Coastguard Worker
87*890232f2SAndroid Build Coastguard Worker// GetUint32 retrieves a uint32 at the given offset.
88*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetUint32(off UOffsetT) uint32 {
89*890232f2SAndroid Build Coastguard Worker	return GetUint32(t.Bytes[off:])
90*890232f2SAndroid Build Coastguard Worker}
91*890232f2SAndroid Build Coastguard Worker
92*890232f2SAndroid Build Coastguard Worker// GetUint64 retrieves a uint64 at the given offset.
93*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetUint64(off UOffsetT) uint64 {
94*890232f2SAndroid Build Coastguard Worker	return GetUint64(t.Bytes[off:])
95*890232f2SAndroid Build Coastguard Worker}
96*890232f2SAndroid Build Coastguard Worker
97*890232f2SAndroid Build Coastguard Worker// GetInt8 retrieves a int8 at the given offset.
98*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetInt8(off UOffsetT) int8 {
99*890232f2SAndroid Build Coastguard Worker	return GetInt8(t.Bytes[off:])
100*890232f2SAndroid Build Coastguard Worker}
101*890232f2SAndroid Build Coastguard Worker
102*890232f2SAndroid Build Coastguard Worker// GetInt16 retrieves a int16 at the given offset.
103*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetInt16(off UOffsetT) int16 {
104*890232f2SAndroid Build Coastguard Worker	return GetInt16(t.Bytes[off:])
105*890232f2SAndroid Build Coastguard Worker}
106*890232f2SAndroid Build Coastguard Worker
107*890232f2SAndroid Build Coastguard Worker// GetInt32 retrieves a int32 at the given offset.
108*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetInt32(off UOffsetT) int32 {
109*890232f2SAndroid Build Coastguard Worker	return GetInt32(t.Bytes[off:])
110*890232f2SAndroid Build Coastguard Worker}
111*890232f2SAndroid Build Coastguard Worker
112*890232f2SAndroid Build Coastguard Worker// GetInt64 retrieves a int64 at the given offset.
113*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetInt64(off UOffsetT) int64 {
114*890232f2SAndroid Build Coastguard Worker	return GetInt64(t.Bytes[off:])
115*890232f2SAndroid Build Coastguard Worker}
116*890232f2SAndroid Build Coastguard Worker
117*890232f2SAndroid Build Coastguard Worker// GetFloat32 retrieves a float32 at the given offset.
118*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetFloat32(off UOffsetT) float32 {
119*890232f2SAndroid Build Coastguard Worker	return GetFloat32(t.Bytes[off:])
120*890232f2SAndroid Build Coastguard Worker}
121*890232f2SAndroid Build Coastguard Worker
122*890232f2SAndroid Build Coastguard Worker// GetFloat64 retrieves a float64 at the given offset.
123*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetFloat64(off UOffsetT) float64 {
124*890232f2SAndroid Build Coastguard Worker	return GetFloat64(t.Bytes[off:])
125*890232f2SAndroid Build Coastguard Worker}
126*890232f2SAndroid Build Coastguard Worker
127*890232f2SAndroid Build Coastguard Worker// GetUOffsetT retrieves a UOffsetT at the given offset.
128*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetUOffsetT(off UOffsetT) UOffsetT {
129*890232f2SAndroid Build Coastguard Worker	return GetUOffsetT(t.Bytes[off:])
130*890232f2SAndroid Build Coastguard Worker}
131*890232f2SAndroid Build Coastguard Worker
132*890232f2SAndroid Build Coastguard Worker// GetVOffsetT retrieves a VOffsetT at the given offset.
133*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetVOffsetT(off UOffsetT) VOffsetT {
134*890232f2SAndroid Build Coastguard Worker	return GetVOffsetT(t.Bytes[off:])
135*890232f2SAndroid Build Coastguard Worker}
136*890232f2SAndroid Build Coastguard Worker
137*890232f2SAndroid Build Coastguard Worker// GetSOffsetT retrieves a SOffsetT at the given offset.
138*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetSOffsetT(off UOffsetT) SOffsetT {
139*890232f2SAndroid Build Coastguard Worker	return GetSOffsetT(t.Bytes[off:])
140*890232f2SAndroid Build Coastguard Worker}
141*890232f2SAndroid Build Coastguard Worker
142*890232f2SAndroid Build Coastguard Worker// GetBoolSlot retrieves the bool that the given vtable location
143*890232f2SAndroid Build Coastguard Worker// points to. If the vtable value is zero, the default value `d`
144*890232f2SAndroid Build Coastguard Worker// will be returned.
145*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetBoolSlot(slot VOffsetT, d bool) bool {
146*890232f2SAndroid Build Coastguard Worker	off := t.Offset(slot)
147*890232f2SAndroid Build Coastguard Worker	if off == 0 {
148*890232f2SAndroid Build Coastguard Worker		return d
149*890232f2SAndroid Build Coastguard Worker	}
150*890232f2SAndroid Build Coastguard Worker
151*890232f2SAndroid Build Coastguard Worker	return t.GetBool(t.Pos + UOffsetT(off))
152*890232f2SAndroid Build Coastguard Worker}
153*890232f2SAndroid Build Coastguard Worker
154*890232f2SAndroid Build Coastguard Worker// GetByteSlot retrieves the byte that the given vtable location
155*890232f2SAndroid Build Coastguard Worker// points to. If the vtable value is zero, the default value `d`
156*890232f2SAndroid Build Coastguard Worker// will be returned.
157*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetByteSlot(slot VOffsetT, d byte) byte {
158*890232f2SAndroid Build Coastguard Worker	off := t.Offset(slot)
159*890232f2SAndroid Build Coastguard Worker	if off == 0 {
160*890232f2SAndroid Build Coastguard Worker		return d
161*890232f2SAndroid Build Coastguard Worker	}
162*890232f2SAndroid Build Coastguard Worker
163*890232f2SAndroid Build Coastguard Worker	return t.GetByte(t.Pos + UOffsetT(off))
164*890232f2SAndroid Build Coastguard Worker}
165*890232f2SAndroid Build Coastguard Worker
166*890232f2SAndroid Build Coastguard Worker// GetInt8Slot retrieves the int8 that the given vtable location
167*890232f2SAndroid Build Coastguard Worker// points to. If the vtable value is zero, the default value `d`
168*890232f2SAndroid Build Coastguard Worker// will be returned.
169*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetInt8Slot(slot VOffsetT, d int8) int8 {
170*890232f2SAndroid Build Coastguard Worker	off := t.Offset(slot)
171*890232f2SAndroid Build Coastguard Worker	if off == 0 {
172*890232f2SAndroid Build Coastguard Worker		return d
173*890232f2SAndroid Build Coastguard Worker	}
174*890232f2SAndroid Build Coastguard Worker
175*890232f2SAndroid Build Coastguard Worker	return t.GetInt8(t.Pos + UOffsetT(off))
176*890232f2SAndroid Build Coastguard Worker}
177*890232f2SAndroid Build Coastguard Worker
178*890232f2SAndroid Build Coastguard Worker// GetUint8Slot retrieves the uint8 that the given vtable location
179*890232f2SAndroid Build Coastguard Worker// points to. If the vtable value is zero, the default value `d`
180*890232f2SAndroid Build Coastguard Worker// will be returned.
181*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetUint8Slot(slot VOffsetT, d uint8) uint8 {
182*890232f2SAndroid Build Coastguard Worker	off := t.Offset(slot)
183*890232f2SAndroid Build Coastguard Worker	if off == 0 {
184*890232f2SAndroid Build Coastguard Worker		return d
185*890232f2SAndroid Build Coastguard Worker	}
186*890232f2SAndroid Build Coastguard Worker
187*890232f2SAndroid Build Coastguard Worker	return t.GetUint8(t.Pos + UOffsetT(off))
188*890232f2SAndroid Build Coastguard Worker}
189*890232f2SAndroid Build Coastguard Worker
190*890232f2SAndroid Build Coastguard Worker// GetInt16Slot retrieves the int16 that the given vtable location
191*890232f2SAndroid Build Coastguard Worker// points to. If the vtable value is zero, the default value `d`
192*890232f2SAndroid Build Coastguard Worker// will be returned.
193*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetInt16Slot(slot VOffsetT, d int16) int16 {
194*890232f2SAndroid Build Coastguard Worker	off := t.Offset(slot)
195*890232f2SAndroid Build Coastguard Worker	if off == 0 {
196*890232f2SAndroid Build Coastguard Worker		return d
197*890232f2SAndroid Build Coastguard Worker	}
198*890232f2SAndroid Build Coastguard Worker
199*890232f2SAndroid Build Coastguard Worker	return t.GetInt16(t.Pos + UOffsetT(off))
200*890232f2SAndroid Build Coastguard Worker}
201*890232f2SAndroid Build Coastguard Worker
202*890232f2SAndroid Build Coastguard Worker// GetUint16Slot retrieves the uint16 that the given vtable location
203*890232f2SAndroid Build Coastguard Worker// points to. If the vtable value is zero, the default value `d`
204*890232f2SAndroid Build Coastguard Worker// will be returned.
205*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetUint16Slot(slot VOffsetT, d uint16) uint16 {
206*890232f2SAndroid Build Coastguard Worker	off := t.Offset(slot)
207*890232f2SAndroid Build Coastguard Worker	if off == 0 {
208*890232f2SAndroid Build Coastguard Worker		return d
209*890232f2SAndroid Build Coastguard Worker	}
210*890232f2SAndroid Build Coastguard Worker
211*890232f2SAndroid Build Coastguard Worker	return t.GetUint16(t.Pos + UOffsetT(off))
212*890232f2SAndroid Build Coastguard Worker}
213*890232f2SAndroid Build Coastguard Worker
214*890232f2SAndroid Build Coastguard Worker// GetInt32Slot retrieves the int32 that the given vtable location
215*890232f2SAndroid Build Coastguard Worker// points to. If the vtable value is zero, the default value `d`
216*890232f2SAndroid Build Coastguard Worker// will be returned.
217*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetInt32Slot(slot VOffsetT, d int32) int32 {
218*890232f2SAndroid Build Coastguard Worker	off := t.Offset(slot)
219*890232f2SAndroid Build Coastguard Worker	if off == 0 {
220*890232f2SAndroid Build Coastguard Worker		return d
221*890232f2SAndroid Build Coastguard Worker	}
222*890232f2SAndroid Build Coastguard Worker
223*890232f2SAndroid Build Coastguard Worker	return t.GetInt32(t.Pos + UOffsetT(off))
224*890232f2SAndroid Build Coastguard Worker}
225*890232f2SAndroid Build Coastguard Worker
226*890232f2SAndroid Build Coastguard Worker// GetUint32Slot retrieves the uint32 that the given vtable location
227*890232f2SAndroid Build Coastguard Worker// points to. If the vtable value is zero, the default value `d`
228*890232f2SAndroid Build Coastguard Worker// will be returned.
229*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetUint32Slot(slot VOffsetT, d uint32) uint32 {
230*890232f2SAndroid Build Coastguard Worker	off := t.Offset(slot)
231*890232f2SAndroid Build Coastguard Worker	if off == 0 {
232*890232f2SAndroid Build Coastguard Worker		return d
233*890232f2SAndroid Build Coastguard Worker	}
234*890232f2SAndroid Build Coastguard Worker
235*890232f2SAndroid Build Coastguard Worker	return t.GetUint32(t.Pos + UOffsetT(off))
236*890232f2SAndroid Build Coastguard Worker}
237*890232f2SAndroid Build Coastguard Worker
238*890232f2SAndroid Build Coastguard Worker// GetInt64Slot retrieves the int64 that the given vtable location
239*890232f2SAndroid Build Coastguard Worker// points to. If the vtable value is zero, the default value `d`
240*890232f2SAndroid Build Coastguard Worker// will be returned.
241*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetInt64Slot(slot VOffsetT, d int64) int64 {
242*890232f2SAndroid Build Coastguard Worker	off := t.Offset(slot)
243*890232f2SAndroid Build Coastguard Worker	if off == 0 {
244*890232f2SAndroid Build Coastguard Worker		return d
245*890232f2SAndroid Build Coastguard Worker	}
246*890232f2SAndroid Build Coastguard Worker
247*890232f2SAndroid Build Coastguard Worker	return t.GetInt64(t.Pos + UOffsetT(off))
248*890232f2SAndroid Build Coastguard Worker}
249*890232f2SAndroid Build Coastguard Worker
250*890232f2SAndroid Build Coastguard Worker// GetUint64Slot retrieves the uint64 that the given vtable location
251*890232f2SAndroid Build Coastguard Worker// points to. If the vtable value is zero, the default value `d`
252*890232f2SAndroid Build Coastguard Worker// will be returned.
253*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetUint64Slot(slot VOffsetT, d uint64) uint64 {
254*890232f2SAndroid Build Coastguard Worker	off := t.Offset(slot)
255*890232f2SAndroid Build Coastguard Worker	if off == 0 {
256*890232f2SAndroid Build Coastguard Worker		return d
257*890232f2SAndroid Build Coastguard Worker	}
258*890232f2SAndroid Build Coastguard Worker
259*890232f2SAndroid Build Coastguard Worker	return t.GetUint64(t.Pos + UOffsetT(off))
260*890232f2SAndroid Build Coastguard Worker}
261*890232f2SAndroid Build Coastguard Worker
262*890232f2SAndroid Build Coastguard Worker// GetFloat32Slot retrieves the float32 that the given vtable location
263*890232f2SAndroid Build Coastguard Worker// points to. If the vtable value is zero, the default value `d`
264*890232f2SAndroid Build Coastguard Worker// will be returned.
265*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetFloat32Slot(slot VOffsetT, d float32) float32 {
266*890232f2SAndroid Build Coastguard Worker	off := t.Offset(slot)
267*890232f2SAndroid Build Coastguard Worker	if off == 0 {
268*890232f2SAndroid Build Coastguard Worker		return d
269*890232f2SAndroid Build Coastguard Worker	}
270*890232f2SAndroid Build Coastguard Worker
271*890232f2SAndroid Build Coastguard Worker	return t.GetFloat32(t.Pos + UOffsetT(off))
272*890232f2SAndroid Build Coastguard Worker}
273*890232f2SAndroid Build Coastguard Worker
274*890232f2SAndroid Build Coastguard Worker// GetFloat64Slot retrieves the float64 that the given vtable location
275*890232f2SAndroid Build Coastguard Worker// points to. If the vtable value is zero, the default value `d`
276*890232f2SAndroid Build Coastguard Worker// will be returned.
277*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetFloat64Slot(slot VOffsetT, d float64) float64 {
278*890232f2SAndroid Build Coastguard Worker	off := t.Offset(slot)
279*890232f2SAndroid Build Coastguard Worker	if off == 0 {
280*890232f2SAndroid Build Coastguard Worker		return d
281*890232f2SAndroid Build Coastguard Worker	}
282*890232f2SAndroid Build Coastguard Worker
283*890232f2SAndroid Build Coastguard Worker	return t.GetFloat64(t.Pos + UOffsetT(off))
284*890232f2SAndroid Build Coastguard Worker}
285*890232f2SAndroid Build Coastguard Worker
286*890232f2SAndroid Build Coastguard Worker// GetVOffsetTSlot retrieves the VOffsetT that the given vtable location
287*890232f2SAndroid Build Coastguard Worker// points to. If the vtable value is zero, the default value `d`
288*890232f2SAndroid Build Coastguard Worker// will be returned.
289*890232f2SAndroid Build Coastguard Workerfunc (t *Table) GetVOffsetTSlot(slot VOffsetT, d VOffsetT) VOffsetT {
290*890232f2SAndroid Build Coastguard Worker	off := t.Offset(slot)
291*890232f2SAndroid Build Coastguard Worker	if off == 0 {
292*890232f2SAndroid Build Coastguard Worker		return d
293*890232f2SAndroid Build Coastguard Worker	}
294*890232f2SAndroid Build Coastguard Worker	return VOffsetT(off)
295*890232f2SAndroid Build Coastguard Worker}
296*890232f2SAndroid Build Coastguard Worker
297*890232f2SAndroid Build Coastguard Worker// MutateBool updates a bool at the given offset.
298*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateBool(off UOffsetT, n bool) bool {
299*890232f2SAndroid Build Coastguard Worker	WriteBool(t.Bytes[off:], n)
300*890232f2SAndroid Build Coastguard Worker	return true
301*890232f2SAndroid Build Coastguard Worker}
302*890232f2SAndroid Build Coastguard Worker
303*890232f2SAndroid Build Coastguard Worker// MutateByte updates a Byte at the given offset.
304*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateByte(off UOffsetT, n byte) bool {
305*890232f2SAndroid Build Coastguard Worker	WriteByte(t.Bytes[off:], n)
306*890232f2SAndroid Build Coastguard Worker	return true
307*890232f2SAndroid Build Coastguard Worker}
308*890232f2SAndroid Build Coastguard Worker
309*890232f2SAndroid Build Coastguard Worker// MutateUint8 updates a Uint8 at the given offset.
310*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateUint8(off UOffsetT, n uint8) bool {
311*890232f2SAndroid Build Coastguard Worker	WriteUint8(t.Bytes[off:], n)
312*890232f2SAndroid Build Coastguard Worker	return true
313*890232f2SAndroid Build Coastguard Worker}
314*890232f2SAndroid Build Coastguard Worker
315*890232f2SAndroid Build Coastguard Worker// MutateUint16 updates a Uint16 at the given offset.
316*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateUint16(off UOffsetT, n uint16) bool {
317*890232f2SAndroid Build Coastguard Worker	WriteUint16(t.Bytes[off:], n)
318*890232f2SAndroid Build Coastguard Worker	return true
319*890232f2SAndroid Build Coastguard Worker}
320*890232f2SAndroid Build Coastguard Worker
321*890232f2SAndroid Build Coastguard Worker// MutateUint32 updates a Uint32 at the given offset.
322*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateUint32(off UOffsetT, n uint32) bool {
323*890232f2SAndroid Build Coastguard Worker	WriteUint32(t.Bytes[off:], n)
324*890232f2SAndroid Build Coastguard Worker	return true
325*890232f2SAndroid Build Coastguard Worker}
326*890232f2SAndroid Build Coastguard Worker
327*890232f2SAndroid Build Coastguard Worker// MutateUint64 updates a Uint64 at the given offset.
328*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateUint64(off UOffsetT, n uint64) bool {
329*890232f2SAndroid Build Coastguard Worker	WriteUint64(t.Bytes[off:], n)
330*890232f2SAndroid Build Coastguard Worker	return true
331*890232f2SAndroid Build Coastguard Worker}
332*890232f2SAndroid Build Coastguard Worker
333*890232f2SAndroid Build Coastguard Worker// MutateInt8 updates a Int8 at the given offset.
334*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateInt8(off UOffsetT, n int8) bool {
335*890232f2SAndroid Build Coastguard Worker	WriteInt8(t.Bytes[off:], n)
336*890232f2SAndroid Build Coastguard Worker	return true
337*890232f2SAndroid Build Coastguard Worker}
338*890232f2SAndroid Build Coastguard Worker
339*890232f2SAndroid Build Coastguard Worker// MutateInt16 updates a Int16 at the given offset.
340*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateInt16(off UOffsetT, n int16) bool {
341*890232f2SAndroid Build Coastguard Worker	WriteInt16(t.Bytes[off:], n)
342*890232f2SAndroid Build Coastguard Worker	return true
343*890232f2SAndroid Build Coastguard Worker}
344*890232f2SAndroid Build Coastguard Worker
345*890232f2SAndroid Build Coastguard Worker// MutateInt32 updates a Int32 at the given offset.
346*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateInt32(off UOffsetT, n int32) bool {
347*890232f2SAndroid Build Coastguard Worker	WriteInt32(t.Bytes[off:], n)
348*890232f2SAndroid Build Coastguard Worker	return true
349*890232f2SAndroid Build Coastguard Worker}
350*890232f2SAndroid Build Coastguard Worker
351*890232f2SAndroid Build Coastguard Worker// MutateInt64 updates a Int64 at the given offset.
352*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateInt64(off UOffsetT, n int64) bool {
353*890232f2SAndroid Build Coastguard Worker	WriteInt64(t.Bytes[off:], n)
354*890232f2SAndroid Build Coastguard Worker	return true
355*890232f2SAndroid Build Coastguard Worker}
356*890232f2SAndroid Build Coastguard Worker
357*890232f2SAndroid Build Coastguard Worker// MutateFloat32 updates a Float32 at the given offset.
358*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateFloat32(off UOffsetT, n float32) bool {
359*890232f2SAndroid Build Coastguard Worker	WriteFloat32(t.Bytes[off:], n)
360*890232f2SAndroid Build Coastguard Worker	return true
361*890232f2SAndroid Build Coastguard Worker}
362*890232f2SAndroid Build Coastguard Worker
363*890232f2SAndroid Build Coastguard Worker// MutateFloat64 updates a Float64 at the given offset.
364*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateFloat64(off UOffsetT, n float64) bool {
365*890232f2SAndroid Build Coastguard Worker	WriteFloat64(t.Bytes[off:], n)
366*890232f2SAndroid Build Coastguard Worker	return true
367*890232f2SAndroid Build Coastguard Worker}
368*890232f2SAndroid Build Coastguard Worker
369*890232f2SAndroid Build Coastguard Worker// MutateUOffsetT updates a UOffsetT at the given offset.
370*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateUOffsetT(off UOffsetT, n UOffsetT) bool {
371*890232f2SAndroid Build Coastguard Worker	WriteUOffsetT(t.Bytes[off:], n)
372*890232f2SAndroid Build Coastguard Worker	return true
373*890232f2SAndroid Build Coastguard Worker}
374*890232f2SAndroid Build Coastguard Worker
375*890232f2SAndroid Build Coastguard Worker// MutateVOffsetT updates a VOffsetT at the given offset.
376*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateVOffsetT(off UOffsetT, n VOffsetT) bool {
377*890232f2SAndroid Build Coastguard Worker	WriteVOffsetT(t.Bytes[off:], n)
378*890232f2SAndroid Build Coastguard Worker	return true
379*890232f2SAndroid Build Coastguard Worker}
380*890232f2SAndroid Build Coastguard Worker
381*890232f2SAndroid Build Coastguard Worker// MutateSOffsetT updates a SOffsetT at the given offset.
382*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateSOffsetT(off UOffsetT, n SOffsetT) bool {
383*890232f2SAndroid Build Coastguard Worker	WriteSOffsetT(t.Bytes[off:], n)
384*890232f2SAndroid Build Coastguard Worker	return true
385*890232f2SAndroid Build Coastguard Worker}
386*890232f2SAndroid Build Coastguard Worker
387*890232f2SAndroid Build Coastguard Worker// MutateBoolSlot updates the bool at given vtable location
388*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateBoolSlot(slot VOffsetT, n bool) bool {
389*890232f2SAndroid Build Coastguard Worker	if off := t.Offset(slot); off != 0 {
390*890232f2SAndroid Build Coastguard Worker		t.MutateBool(t.Pos+UOffsetT(off), n)
391*890232f2SAndroid Build Coastguard Worker		return true
392*890232f2SAndroid Build Coastguard Worker	}
393*890232f2SAndroid Build Coastguard Worker
394*890232f2SAndroid Build Coastguard Worker	return false
395*890232f2SAndroid Build Coastguard Worker}
396*890232f2SAndroid Build Coastguard Worker
397*890232f2SAndroid Build Coastguard Worker// MutateByteSlot updates the byte at given vtable location
398*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateByteSlot(slot VOffsetT, n byte) bool {
399*890232f2SAndroid Build Coastguard Worker	if off := t.Offset(slot); off != 0 {
400*890232f2SAndroid Build Coastguard Worker		t.MutateByte(t.Pos+UOffsetT(off), n)
401*890232f2SAndroid Build Coastguard Worker		return true
402*890232f2SAndroid Build Coastguard Worker	}
403*890232f2SAndroid Build Coastguard Worker
404*890232f2SAndroid Build Coastguard Worker	return false
405*890232f2SAndroid Build Coastguard Worker}
406*890232f2SAndroid Build Coastguard Worker
407*890232f2SAndroid Build Coastguard Worker// MutateInt8Slot updates the int8 at given vtable location
408*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateInt8Slot(slot VOffsetT, n int8) bool {
409*890232f2SAndroid Build Coastguard Worker	if off := t.Offset(slot); off != 0 {
410*890232f2SAndroid Build Coastguard Worker		t.MutateInt8(t.Pos+UOffsetT(off), n)
411*890232f2SAndroid Build Coastguard Worker		return true
412*890232f2SAndroid Build Coastguard Worker	}
413*890232f2SAndroid Build Coastguard Worker
414*890232f2SAndroid Build Coastguard Worker	return false
415*890232f2SAndroid Build Coastguard Worker}
416*890232f2SAndroid Build Coastguard Worker
417*890232f2SAndroid Build Coastguard Worker// MutateUint8Slot updates the uint8 at given vtable location
418*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateUint8Slot(slot VOffsetT, n uint8) bool {
419*890232f2SAndroid Build Coastguard Worker	if off := t.Offset(slot); off != 0 {
420*890232f2SAndroid Build Coastguard Worker		t.MutateUint8(t.Pos+UOffsetT(off), n)
421*890232f2SAndroid Build Coastguard Worker		return true
422*890232f2SAndroid Build Coastguard Worker	}
423*890232f2SAndroid Build Coastguard Worker
424*890232f2SAndroid Build Coastguard Worker	return false
425*890232f2SAndroid Build Coastguard Worker}
426*890232f2SAndroid Build Coastguard Worker
427*890232f2SAndroid Build Coastguard Worker// MutateInt16Slot updates the int16 at given vtable location
428*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateInt16Slot(slot VOffsetT, n int16) bool {
429*890232f2SAndroid Build Coastguard Worker	if off := t.Offset(slot); off != 0 {
430*890232f2SAndroid Build Coastguard Worker		t.MutateInt16(t.Pos+UOffsetT(off), n)
431*890232f2SAndroid Build Coastguard Worker		return true
432*890232f2SAndroid Build Coastguard Worker	}
433*890232f2SAndroid Build Coastguard Worker
434*890232f2SAndroid Build Coastguard Worker	return false
435*890232f2SAndroid Build Coastguard Worker}
436*890232f2SAndroid Build Coastguard Worker
437*890232f2SAndroid Build Coastguard Worker// MutateUint16Slot updates the uint16 at given vtable location
438*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateUint16Slot(slot VOffsetT, n uint16) bool {
439*890232f2SAndroid Build Coastguard Worker	if off := t.Offset(slot); off != 0 {
440*890232f2SAndroid Build Coastguard Worker		t.MutateUint16(t.Pos+UOffsetT(off), n)
441*890232f2SAndroid Build Coastguard Worker		return true
442*890232f2SAndroid Build Coastguard Worker	}
443*890232f2SAndroid Build Coastguard Worker
444*890232f2SAndroid Build Coastguard Worker	return false
445*890232f2SAndroid Build Coastguard Worker}
446*890232f2SAndroid Build Coastguard Worker
447*890232f2SAndroid Build Coastguard Worker// MutateInt32Slot updates the int32 at given vtable location
448*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateInt32Slot(slot VOffsetT, n int32) bool {
449*890232f2SAndroid Build Coastguard Worker	if off := t.Offset(slot); off != 0 {
450*890232f2SAndroid Build Coastguard Worker		t.MutateInt32(t.Pos+UOffsetT(off), n)
451*890232f2SAndroid Build Coastguard Worker		return true
452*890232f2SAndroid Build Coastguard Worker	}
453*890232f2SAndroid Build Coastguard Worker
454*890232f2SAndroid Build Coastguard Worker	return false
455*890232f2SAndroid Build Coastguard Worker}
456*890232f2SAndroid Build Coastguard Worker
457*890232f2SAndroid Build Coastguard Worker// MutateUint32Slot updates the uint32 at given vtable location
458*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateUint32Slot(slot VOffsetT, n uint32) bool {
459*890232f2SAndroid Build Coastguard Worker	if off := t.Offset(slot); off != 0 {
460*890232f2SAndroid Build Coastguard Worker		t.MutateUint32(t.Pos+UOffsetT(off), n)
461*890232f2SAndroid Build Coastguard Worker		return true
462*890232f2SAndroid Build Coastguard Worker	}
463*890232f2SAndroid Build Coastguard Worker
464*890232f2SAndroid Build Coastguard Worker	return false
465*890232f2SAndroid Build Coastguard Worker}
466*890232f2SAndroid Build Coastguard Worker
467*890232f2SAndroid Build Coastguard Worker// MutateInt64Slot updates the int64 at given vtable location
468*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateInt64Slot(slot VOffsetT, n int64) bool {
469*890232f2SAndroid Build Coastguard Worker	if off := t.Offset(slot); off != 0 {
470*890232f2SAndroid Build Coastguard Worker		t.MutateInt64(t.Pos+UOffsetT(off), n)
471*890232f2SAndroid Build Coastguard Worker		return true
472*890232f2SAndroid Build Coastguard Worker	}
473*890232f2SAndroid Build Coastguard Worker
474*890232f2SAndroid Build Coastguard Worker	return false
475*890232f2SAndroid Build Coastguard Worker}
476*890232f2SAndroid Build Coastguard Worker
477*890232f2SAndroid Build Coastguard Worker// MutateUint64Slot updates the uint64 at given vtable location
478*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateUint64Slot(slot VOffsetT, n uint64) bool {
479*890232f2SAndroid Build Coastguard Worker	if off := t.Offset(slot); off != 0 {
480*890232f2SAndroid Build Coastguard Worker		t.MutateUint64(t.Pos+UOffsetT(off), n)
481*890232f2SAndroid Build Coastguard Worker		return true
482*890232f2SAndroid Build Coastguard Worker	}
483*890232f2SAndroid Build Coastguard Worker
484*890232f2SAndroid Build Coastguard Worker	return false
485*890232f2SAndroid Build Coastguard Worker}
486*890232f2SAndroid Build Coastguard Worker
487*890232f2SAndroid Build Coastguard Worker// MutateFloat32Slot updates the float32 at given vtable location
488*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateFloat32Slot(slot VOffsetT, n float32) bool {
489*890232f2SAndroid Build Coastguard Worker	if off := t.Offset(slot); off != 0 {
490*890232f2SAndroid Build Coastguard Worker		t.MutateFloat32(t.Pos+UOffsetT(off), n)
491*890232f2SAndroid Build Coastguard Worker		return true
492*890232f2SAndroid Build Coastguard Worker	}
493*890232f2SAndroid Build Coastguard Worker
494*890232f2SAndroid Build Coastguard Worker	return false
495*890232f2SAndroid Build Coastguard Worker}
496*890232f2SAndroid Build Coastguard Worker
497*890232f2SAndroid Build Coastguard Worker// MutateFloat64Slot updates the float64 at given vtable location
498*890232f2SAndroid Build Coastguard Workerfunc (t *Table) MutateFloat64Slot(slot VOffsetT, n float64) bool {
499*890232f2SAndroid Build Coastguard Worker	if off := t.Offset(slot); off != 0 {
500*890232f2SAndroid Build Coastguard Worker		t.MutateFloat64(t.Pos+UOffsetT(off), n)
501*890232f2SAndroid Build Coastguard Worker		return true
502*890232f2SAndroid Build Coastguard Worker	}
503*890232f2SAndroid Build Coastguard Worker
504*890232f2SAndroid Build Coastguard Worker	return false
505*890232f2SAndroid Build Coastguard Worker}
506