1*890232f2SAndroid Build Coastguard Worker// test schema file 2*890232f2SAndroid Build Coastguard Worker 3*890232f2SAndroid Build Coastguard Workerinclude "include_test1.fbs"; 4*890232f2SAndroid Build Coastguard Worker 5*890232f2SAndroid Build Coastguard Workernamespace MyGame; 6*890232f2SAndroid Build Coastguard Worker 7*890232f2SAndroid Build Coastguard Workertable InParentNamespace {} 8*890232f2SAndroid Build Coastguard Worker 9*890232f2SAndroid Build Coastguard Workernamespace MyGame.Example2; 10*890232f2SAndroid Build Coastguard Worker 11*890232f2SAndroid Build Coastguard Workertable Monster {} // Test having same name as below, but in different namespace. 12*890232f2SAndroid Build Coastguard Worker 13*890232f2SAndroid Build Coastguard Workernamespace MyGame.Example; 14*890232f2SAndroid Build Coastguard Worker 15*890232f2SAndroid Build Coastguard Workerattribute "priority"; 16*890232f2SAndroid Build Coastguard Worker 17*890232f2SAndroid Build Coastguard Worker/// Composite components of Monster color. 18*890232f2SAndroid Build Coastguard Workerenum Color:ubyte (bit_flags) { 19*890232f2SAndroid Build Coastguard Worker Red = 0, // color Red = (1u << 0) 20*890232f2SAndroid Build Coastguard Worker /// \brief color Green 21*890232f2SAndroid Build Coastguard Worker /// Green is bit_flag with value (1u << 1) 22*890232f2SAndroid Build Coastguard Worker Green, 23*890232f2SAndroid Build Coastguard Worker /// \brief color Blue (1u << 3) 24*890232f2SAndroid Build Coastguard Worker Blue = 3, 25*890232f2SAndroid Build Coastguard Worker} 26*890232f2SAndroid Build Coastguard Worker 27*890232f2SAndroid Build Coastguard Workerenum Race:byte { 28*890232f2SAndroid Build Coastguard Worker None = -1, 29*890232f2SAndroid Build Coastguard Worker Human = 0, 30*890232f2SAndroid Build Coastguard Worker Dwarf, 31*890232f2SAndroid Build Coastguard Worker Elf, 32*890232f2SAndroid Build Coastguard Worker} 33*890232f2SAndroid Build Coastguard Worker 34*890232f2SAndroid Build Coastguard Workerenum LongEnum:ulong (bit_flags) { 35*890232f2SAndroid Build Coastguard Worker LongOne = 1, 36*890232f2SAndroid Build Coastguard Worker LongTwo = 2, 37*890232f2SAndroid Build Coastguard Worker // Because this is a bitflag, 40 will be out of range of a 32-bit integer, 38*890232f2SAndroid Build Coastguard Worker // allowing us to exercise any logic special to big numbers. 39*890232f2SAndroid Build Coastguard Worker LongBig = 40, 40*890232f2SAndroid Build Coastguard Worker} 41*890232f2SAndroid Build Coastguard Worker 42*890232f2SAndroid Build Coastguard Workerunion Any { Monster, TestSimpleTableWithEnum, MyGame.Example2.Monster } 43*890232f2SAndroid Build Coastguard Worker 44*890232f2SAndroid Build Coastguard Workerunion AnyUniqueAliases { M: Monster, TS: TestSimpleTableWithEnum, M2: MyGame.Example2.Monster } 45*890232f2SAndroid Build Coastguard Workerunion AnyAmbiguousAliases { M1: Monster, M2: Monster, M3: Monster } 46*890232f2SAndroid Build Coastguard Worker 47*890232f2SAndroid Build Coastguard Workerstruct Test { a:short; b:byte; } 48*890232f2SAndroid Build Coastguard Worker 49*890232f2SAndroid Build Coastguard Workertable TestSimpleTableWithEnum (csharp_partial, private) { 50*890232f2SAndroid Build Coastguard Worker color: Color = Green; 51*890232f2SAndroid Build Coastguard Worker} 52*890232f2SAndroid Build Coastguard Worker 53*890232f2SAndroid Build Coastguard Workerstruct Vec3 (force_align: 8) { 54*890232f2SAndroid Build Coastguard Worker x:float; 55*890232f2SAndroid Build Coastguard Worker y:float; 56*890232f2SAndroid Build Coastguard Worker z:float; 57*890232f2SAndroid Build Coastguard Worker test1:double; 58*890232f2SAndroid Build Coastguard Worker test2:Color; 59*890232f2SAndroid Build Coastguard Worker test3:Test; 60*890232f2SAndroid Build Coastguard Worker} 61*890232f2SAndroid Build Coastguard Worker 62*890232f2SAndroid Build Coastguard Workerstruct Ability { 63*890232f2SAndroid Build Coastguard Worker id:uint(key); 64*890232f2SAndroid Build Coastguard Worker distance:uint; 65*890232f2SAndroid Build Coastguard Worker} 66*890232f2SAndroid Build Coastguard Worker 67*890232f2SAndroid Build Coastguard Workerstruct StructOfStructs { 68*890232f2SAndroid Build Coastguard Worker a: Ability; 69*890232f2SAndroid Build Coastguard Worker b: Test; 70*890232f2SAndroid Build Coastguard Worker c: Ability; 71*890232f2SAndroid Build Coastguard Worker} 72*890232f2SAndroid Build Coastguard Worker 73*890232f2SAndroid Build Coastguard Workerstruct StructOfStructsOfStructs { 74*890232f2SAndroid Build Coastguard Worker a: StructOfStructs; 75*890232f2SAndroid Build Coastguard Worker} 76*890232f2SAndroid Build Coastguard Worker 77*890232f2SAndroid Build Coastguard Workertable Stat { 78*890232f2SAndroid Build Coastguard Worker id:string; 79*890232f2SAndroid Build Coastguard Worker val:long; 80*890232f2SAndroid Build Coastguard Worker count:ushort (key); 81*890232f2SAndroid Build Coastguard Worker} 82*890232f2SAndroid Build Coastguard Worker 83*890232f2SAndroid Build Coastguard Workertable Referrable { 84*890232f2SAndroid Build Coastguard Worker id:ulong(key, hash:"fnv1a_64"); 85*890232f2SAndroid Build Coastguard Worker} 86*890232f2SAndroid Build Coastguard Worker 87*890232f2SAndroid Build Coastguard Worker/// an example documentation comment: "monster object" 88*890232f2SAndroid Build Coastguard Workertable Monster { 89*890232f2SAndroid Build Coastguard Worker pos:Vec3 (id: 0); 90*890232f2SAndroid Build Coastguard Worker hp:short = 100 (id: 2); 91*890232f2SAndroid Build Coastguard Worker mana:short = 150 (id: 1); 92*890232f2SAndroid Build Coastguard Worker name:string (id: 3, key); 93*890232f2SAndroid Build Coastguard Worker color:Color = Blue (id: 6); 94*890232f2SAndroid Build Coastguard Worker inventory:[ubyte] (id: 5); 95*890232f2SAndroid Build Coastguard Worker friendly:bool = false (deprecated, priority: 1, id: 4); 96*890232f2SAndroid Build Coastguard Worker /// an example documentation comment: this will end up in the generated code 97*890232f2SAndroid Build Coastguard Worker /// multiline too 98*890232f2SAndroid Build Coastguard Worker testarrayoftables:[Monster] (id: 11); 99*890232f2SAndroid Build Coastguard Worker testarrayofstring:[string] (id: 10); 100*890232f2SAndroid Build Coastguard Worker testarrayofstring2:[string] (id: 28); 101*890232f2SAndroid Build Coastguard Worker testarrayofbools:[bool] (id: 24); 102*890232f2SAndroid Build Coastguard Worker testarrayofsortedstruct:[Ability] (id: 29); 103*890232f2SAndroid Build Coastguard Worker enemy:MyGame.Example.Monster (id:12); // Test referring by full namespace. 104*890232f2SAndroid Build Coastguard Worker test:Any (id: 8); 105*890232f2SAndroid Build Coastguard Worker test4:[Test] (id: 9); 106*890232f2SAndroid Build Coastguard Worker test5:[Test] (id: 31); 107*890232f2SAndroid Build Coastguard Worker testnestedflatbuffer:[ubyte] (id:13, nested_flatbuffer: "Monster"); 108*890232f2SAndroid Build Coastguard Worker testempty:Stat (id:14); 109*890232f2SAndroid Build Coastguard Worker testbool:bool (id:15); 110*890232f2SAndroid Build Coastguard Worker testhashs32_fnv1:int (id:16, hash:"fnv1_32"); 111*890232f2SAndroid Build Coastguard Worker testhashu32_fnv1:uint (id:17, hash:"fnv1_32"); 112*890232f2SAndroid Build Coastguard Worker testhashs64_fnv1:long (id:18, hash:"fnv1_64"); 113*890232f2SAndroid Build Coastguard Worker testhashu64_fnv1:ulong (id:19, hash:"fnv1_64"); 114*890232f2SAndroid Build Coastguard Worker testhashs32_fnv1a:int (id:20, hash:"fnv1a_32"); 115*890232f2SAndroid Build Coastguard Worker testhashu32_fnv1a:uint (id:21, hash:"fnv1a_32", cpp_type:"Stat"); 116*890232f2SAndroid Build Coastguard Worker testhashs64_fnv1a:long (id:22, hash:"fnv1a_64"); 117*890232f2SAndroid Build Coastguard Worker testhashu64_fnv1a:ulong (id:23, hash:"fnv1a_64"); 118*890232f2SAndroid Build Coastguard Worker testf:float = 3.14159 (id:25); 119*890232f2SAndroid Build Coastguard Worker testf2:float = 3 (id:26); 120*890232f2SAndroid Build Coastguard Worker testf3:float (id:27); 121*890232f2SAndroid Build Coastguard Worker flex:[ubyte] (id:30, flexbuffer); 122*890232f2SAndroid Build Coastguard Worker vector_of_longs:[long] (id:32); 123*890232f2SAndroid Build Coastguard Worker vector_of_doubles:[double] (id:33); 124*890232f2SAndroid Build Coastguard Worker parent_namespace_test:InParentNamespace (id:34); 125*890232f2SAndroid Build Coastguard Worker vector_of_referrables:[Referrable](id:35); 126*890232f2SAndroid Build Coastguard Worker single_weak_reference:ulong(id:36, hash:"fnv1a_64", cpp_type:"ReferrableT"); 127*890232f2SAndroid Build Coastguard Worker vector_of_weak_references:[ulong](id:37, hash:"fnv1a_64", cpp_type:"ReferrableT"); 128*890232f2SAndroid Build Coastguard Worker vector_of_strong_referrables:[Referrable](id:38, cpp_ptr_type:"default_ptr_type"); //was shared_ptr 129*890232f2SAndroid Build Coastguard Worker co_owning_reference:ulong(id:39, hash:"fnv1a_64", cpp_type:"ReferrableT", cpp_ptr_type:"naked"); //was shared_ptr as well 130*890232f2SAndroid Build Coastguard Worker vector_of_co_owning_references:[ulong](id:40, hash:"fnv1a_64", cpp_type:"ReferrableT", cpp_ptr_type:"default_ptr_type", cpp_ptr_type_get:".get()"); //was shared_ptr 131*890232f2SAndroid Build Coastguard Worker non_owning_reference:ulong(id:41, hash:"fnv1a_64", cpp_type:"ReferrableT", cpp_ptr_type:"naked", cpp_ptr_type_get:""); //was weak_ptr 132*890232f2SAndroid Build Coastguard Worker vector_of_non_owning_references:[ulong](id:42, hash:"fnv1a_64", cpp_type:"ReferrableT", cpp_ptr_type:"naked", cpp_ptr_type_get:""); //was weak_ptr 133*890232f2SAndroid Build Coastguard Worker any_unique:AnyUniqueAliases(id:44); 134*890232f2SAndroid Build Coastguard Worker any_ambiguous:AnyAmbiguousAliases (id:46); 135*890232f2SAndroid Build Coastguard Worker vector_of_enums:[Color] (id:47); 136*890232f2SAndroid Build Coastguard Worker signed_enum:Race = None (id:48); 137*890232f2SAndroid Build Coastguard Worker testrequirednestedflatbuffer:[ubyte] (id:49, nested_flatbuffer: "Monster"); 138*890232f2SAndroid Build Coastguard Worker scalar_key_sorted_tables:[Stat] (id: 50); 139*890232f2SAndroid Build Coastguard Worker native_inline:Test (id: 51, native_inline); 140*890232f2SAndroid Build Coastguard Worker // The default value of this enum will be a numeric zero, which isn't a valid 141*890232f2SAndroid Build Coastguard Worker // enum value. 142*890232f2SAndroid Build Coastguard Worker long_enum_non_enum_default:LongEnum (id: 52); 143*890232f2SAndroid Build Coastguard Worker long_enum_normal_default:LongEnum = LongOne (id: 53); 144*890232f2SAndroid Build Coastguard Worker} 145*890232f2SAndroid Build Coastguard Worker 146*890232f2SAndroid Build Coastguard Workertable TypeAliases { 147*890232f2SAndroid Build Coastguard Worker i8:int8; 148*890232f2SAndroid Build Coastguard Worker u8:uint8; 149*890232f2SAndroid Build Coastguard Worker i16:int16; 150*890232f2SAndroid Build Coastguard Worker u16:uint16; 151*890232f2SAndroid Build Coastguard Worker i32:int32; 152*890232f2SAndroid Build Coastguard Worker u32:uint32; 153*890232f2SAndroid Build Coastguard Worker i64:int64; 154*890232f2SAndroid Build Coastguard Worker u64:uint64; 155*890232f2SAndroid Build Coastguard Worker f32:float32; 156*890232f2SAndroid Build Coastguard Worker f64:float64; 157*890232f2SAndroid Build Coastguard Worker v8:[int8]; 158*890232f2SAndroid Build Coastguard Worker vf64:[float64]; 159*890232f2SAndroid Build Coastguard Worker} 160*890232f2SAndroid Build Coastguard Worker 161*890232f2SAndroid Build Coastguard Workerrpc_service MonsterStorage { 162*890232f2SAndroid Build Coastguard Worker Store(Monster):Stat (streaming: "none"); 163*890232f2SAndroid Build Coastguard Worker Retrieve(Stat):Monster (streaming: "server", idempotent); 164*890232f2SAndroid Build Coastguard Worker GetMaxHitPoint(Monster):Stat (streaming: "client"); 165*890232f2SAndroid Build Coastguard Worker GetMinMaxHitPoints(Monster):Stat (streaming: "bidi"); 166*890232f2SAndroid Build Coastguard Worker} 167*890232f2SAndroid Build Coastguard Worker 168*890232f2SAndroid Build Coastguard Workerroot_type Monster; 169*890232f2SAndroid Build Coastguard Worker 170*890232f2SAndroid Build Coastguard Workerfile_identifier "MONS"; 171*890232f2SAndroid Build Coastguard Workerfile_extension "mon"; 172