xref: /aosp_15_r20/external/flatbuffers/tests/monster_test.fbs (revision 890232f25432b36107d06881e0a25aaa6b473652)
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