return b.EndVector(len(x))
}
+// CreateByteVector writes a ubyte vector
+func (b *Builder) CreateByteVector(v []byte) UOffsetT {
+ b.Prep(int(SizeUOffsetT), len(v)*SizeByte)
+
+ l := UOffsetT(len(v))
+
+ b.head -= l
+ copy(b.Bytes[b.head:b.head+l], v)
+
+ return b.EndVector(len(v))
+}
+
func (b *Builder) notNested() {
// Check that no other objects are being built while making this
// object. If not, panic:
// some sanity checks:
CheckDocExample(generated, off, t.Fatalf)
+ // Check Builder.CreateByteVector
+ CheckCreateByteVector(t.Fatalf)
+
// If the filename of the FlatBuffers file generated by the Java test
// is given, check that Go code can read it, and that Go code
// generates an identical buffer when used to create the example data:
_ = example.MonsterEnd(builder)
}
+func CheckCreateByteVector(fail func(string, ...interface{})) {
+ raw := [30]byte{}
+ for i := 0; i < len(raw); i++ {
+ raw[i] = byte(i)
+ }
+
+ for size := 0; size < len(raw); size++ {
+ b1 := flatbuffers.NewBuilder(0)
+ b2 := flatbuffers.NewBuilder(0)
+ b1.StartVector(1, size, 1)
+ for i := size - 1; i >= 0; i-- {
+ b1.PrependByte(raw[i])
+ }
+ b1.EndVector(size)
+ b2.CreateByteVector(raw[:size])
+ CheckByteEquality(b1.Bytes, b2.Bytes, fail)
+ }
+}
+
// Include simple random number generator to ensure results will be the
// same cross platform.
// http://en.wikipedia.org/wiki/Park%E2%80%93Miller_random_number_generator