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