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]; } root_type RootTable;