// CheckDocExample checks that the code given in FlatBuffers documentation // is syntactically correct. func CheckDocExample(buf []byte, off flatbuffers.UOffsetT, fail func(string, ...interface{})) { monster := example.GetRootAsMonster(buf, off) _ = monster.Hp() _ = monster.Pos(nil) for i := 0; i < monster.InventoryLength(); i++ { _ = monster.Inventory(i) // do something here } builder := flatbuffers.NewBuilder(0) example.MonsterStartInventoryVector(builder, 5) for i := 4; i >= 0; i-- { builder.PrependByte(byte(i)) } inv := builder.EndVector(5) str := builder.CreateString("MyMonster") example.MonsterStart(builder) example.MonsterAddPos(builder, example.CreateVec3(builder, 1.0, 2.0, 3.0, 3.0, 4, 5, 6)) example.MonsterAddHp(builder, 80) example.MonsterAddName(builder, str) example.MonsterAddInventory(builder, inv) example.MonsterAddTestType(builder, 1) // example.MonsterAddTest(builder, mon2) // example.MonsterAddTest4(builder, test4s) _ = example.MonsterEnd(builder) }
// BenchmarkBuildGold uses generated code to build the example Monster. func BenchmarkBuildGold(b *testing.B) { buf, offset := CheckGeneratedBuild(b.Fatalf) bytes_length := int64(len(buf[offset:])) reuse_str := "MyMonster" reuse_test1 := "test1" reuse_test2 := "test2" reuse_fred := "Fred" b.SetBytes(bytes_length) bldr := flatbuffers.NewBuilder(0) b.ResetTimer() b.ReportAllocs() for i := 0; i < b.N; i++ { bldr.Reset() str := bldr.CreateString(reuse_str) test1 := bldr.CreateString(reuse_test1) test2 := bldr.CreateString(reuse_test2) fred := bldr.CreateString(reuse_fred) example.MonsterStartInventoryVector(bldr, 5) bldr.PrependByte(4) bldr.PrependByte(3) bldr.PrependByte(2) bldr.PrependByte(1) bldr.PrependByte(0) inv := bldr.EndVector(5) example.MonsterStart(bldr) example.MonsterAddName(bldr, fred) mon2 := example.MonsterEnd(bldr) example.MonsterStartTest4Vector(bldr, 2) example.CreateTest(bldr, 10, 20) example.CreateTest(bldr, 30, 40) test4 := bldr.EndVector(2) example.MonsterStartTestarrayofstringVector(bldr, 2) bldr.PrependUOffsetT(test2) bldr.PrependUOffsetT(test1) testArrayOfString := bldr.EndVector(2) example.MonsterStart(bldr) pos := example.CreateVec3(bldr, 1.0, 2.0, 3.0, 3.0, 2, 5, 6) example.MonsterAddPos(bldr, pos) example.MonsterAddHp(bldr, 80) example.MonsterAddName(bldr, str) example.MonsterAddInventory(bldr, inv) example.MonsterAddTestType(bldr, 1) example.MonsterAddTest(bldr, mon2) example.MonsterAddTest4(bldr, test4) example.MonsterAddTestarrayofstring(bldr, testArrayOfString) mon := example.MonsterEnd(bldr) bldr.Finish(mon) } }
// CheckGeneratedBuild uses generated code to build the example Monster. func CheckGeneratedBuild(fail func(string, ...interface{})) ([]byte, flatbuffers.UOffsetT) { b := flatbuffers.NewBuilder(0) str := b.CreateString("MyMonster") example.MonsterStartInventoryVector(b, 5) b.PrependByte(4) b.PrependByte(3) b.PrependByte(2) b.PrependByte(1) b.PrependByte(0) inv := b.EndVector(5) example.MonsterStart(b) example.MonsterAddHp(b, int16(20)) mon2 := example.MonsterEnd(b) example.MonsterStartTest4Vector(b, 2) example.CreateTest(b, 10, 20) example.CreateTest(b, 30, 40) test4 := b.EndVector(2) example.MonsterStart(b) pos := example.CreateVec3(b, 1.0, 2.0, 3.0, 3.0, 4, 5, 6) example.MonsterAddPos(b, pos) example.MonsterAddHp(b, 80) example.MonsterAddName(b, str) example.MonsterAddInventory(b, inv) example.MonsterAddTestType(b, 1) example.MonsterAddTest(b, mon2) example.MonsterAddTest4(b, test4) mon := example.MonsterEnd(b) b.Finish(mon) return b.Bytes, b.Head() }