You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.1 KiB
92 lines
2.1 KiB
// This schema defines objects that represent a parsed schema, like |
|
// the binary version of a .fbs file. |
|
// This could be used to operate on unknown FlatBuffers at runtime. |
|
// It can even ... represent itself (!) |
|
|
|
namespace reflection; |
|
|
|
// These must correspond to the enum in idl.h. |
|
enum BaseType : byte { |
|
None, |
|
UType, |
|
Bool, |
|
Byte, |
|
UByte, |
|
Short, |
|
UShort, |
|
Int, |
|
UInt, |
|
Long, |
|
ULong, |
|
Float, |
|
Double, |
|
String, |
|
Vector, |
|
Obj, // Used for tables & structs. |
|
Union |
|
} |
|
|
|
table Type { |
|
base_type:BaseType; |
|
element:BaseType = None; // Only if base_type == Vector. |
|
index:int = -1; // If base_type == Object, index into "objects" below. |
|
// If base_type == Union, UnionType, or integral derived |
|
// from an enum, index into "enums" below. |
|
} |
|
|
|
table KeyValue { |
|
key:string (required, key); |
|
value:string; |
|
} |
|
|
|
table EnumVal { |
|
name:string (required); |
|
value:long (key); |
|
object:Object; // Only if part of a union. |
|
} |
|
|
|
table Enum { |
|
name:string (required, key); |
|
values:[EnumVal] (required); // In order of their values. |
|
is_union:bool = false; |
|
underlying_type:Type (required); |
|
attributes:[KeyValue]; |
|
documentation:[string]; |
|
} |
|
|
|
table Field { |
|
name:string (required, key); |
|
type:Type (required); |
|
id:ushort; |
|
offset:ushort; // Offset into the vtable for tables, or into the struct. |
|
default_integer:long = 0; |
|
default_real:double = 0.0; |
|
deprecated:bool = false; |
|
required:bool = false; |
|
key:bool = false; |
|
attributes:[KeyValue]; |
|
documentation:[string]; |
|
} |
|
|
|
table Object { // Used for both tables and structs. |
|
name:string (required, key); |
|
fields:[Field] (required); // Sorted. |
|
is_struct:bool = false; |
|
minalign:int; |
|
bytesize:int; // For structs. |
|
attributes:[KeyValue]; |
|
documentation:[string]; |
|
} |
|
|
|
table Schema { |
|
objects:[Object] (required); // Sorted. |
|
enums:[Enum] (required); // Sorted. |
|
file_ident:string; |
|
file_ext:string; |
|
root_table:Object; |
|
} |
|
|
|
root_type Schema; |
|
|
|
file_identifier "BFBS"; |
|
file_extension "bfbs";
|
|
|