blob: 19b4a81d2aaa33ac4b02b5811fa46ce7ad9a940d [file] [log] [blame]
struct LeafStruct {
a:int;
b:double;
}
table WrapperTable {
// A normal 32-bit sized vector that could be very far away (64-bit address).
vector:[int8] (offset64);
}
table RootTable {
// A normal 32-bit sized vector, that could be very far away (64-bit address).
far_vector:[ubyte] (offset64);
// An inplace value just to check that vtable offsets are correct.
a:int;
// A normal 32-bit sized string, that could be very far away (64-bit address).
far_string:string (offset64);
// A big 64-bit sized vector, that could be very far away (64-bit address).
big_vector:[ubyte] (vector64);
// A normal 32-bit sized string that is no far away (32-bit address).
near_string:string;
// A big 64-bit sized vector that is a nested flatbuffers (64-bit address).
nested_root:[ubyte] (vector64, nested_flatbuffer: "RootTable");
// A normal 32-bit size vector of structs, that could be very far away
// (64-bit address)
far_struct_vector:[LeafStruct] (offset64);
// A big 64-bit size vector of structs that could be very far away
// (64-bit address)
big_struct_vector:[LeafStruct] (vector64);
// A normal 32-bit size vector of tables. Currently 64-bit vectors don't
// support tables as it would require serializing a table (32-bit) before the
// vector (64-bit), which is not allowed.
//
// This demonstrates how you could have many vectors in the buffer, by
// effectively having a vector of 64-bit vectors. The IDL doesn't support
// nested vecotrs (e.g.: [[type]] ), so going through a wrapper table allows
// this.
many_vectors:[WrapperTable];
// A vector that has force_align to test that the 32/64 bit region of the
// builder is respected.
forced_aligned_vector:[ubyte] (vector64, force_align:32);
}
root_type RootTable;