xref: /aosp_15_r20/external/flatbuffers/dart/test/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 Workerunion Any { Monster, TestSimpleTableWithEnum, MyGame.Example2.Monster }
35*890232f2SAndroid Build Coastguard Worker
36*890232f2SAndroid Build Coastguard Workerunion AnyUniqueAliases { M: Monster, TS: TestSimpleTableWithEnum, M2: MyGame.Example2.Monster }
37*890232f2SAndroid Build Coastguard Workerunion AnyAmbiguousAliases { M1: Monster, M2: Monster, M3: Monster }
38*890232f2SAndroid Build Coastguard Worker
39*890232f2SAndroid Build Coastguard Workerstruct Test { a:short; b:byte; }
40*890232f2SAndroid Build Coastguard Worker
41*890232f2SAndroid Build Coastguard Workertable TestSimpleTableWithEnum (csharp_partial, private) {
42*890232f2SAndroid Build Coastguard Worker  color: Color = Green;
43*890232f2SAndroid Build Coastguard Worker}
44*890232f2SAndroid Build Coastguard Worker
45*890232f2SAndroid Build Coastguard Workerstruct Vec3 (force_align: 8) {
46*890232f2SAndroid Build Coastguard Worker  x:float;
47*890232f2SAndroid Build Coastguard Worker  y:float;
48*890232f2SAndroid Build Coastguard Worker  z:float;
49*890232f2SAndroid Build Coastguard Worker  test1:double;
50*890232f2SAndroid Build Coastguard Worker  test2:Color;
51*890232f2SAndroid Build Coastguard Worker  test3:Test;
52*890232f2SAndroid Build Coastguard Worker}
53*890232f2SAndroid Build Coastguard Worker
54*890232f2SAndroid Build Coastguard Workerstruct Ability {
55*890232f2SAndroid Build Coastguard Worker  id:uint(key);
56*890232f2SAndroid Build Coastguard Worker  distance:uint;
57*890232f2SAndroid Build Coastguard Worker}
58*890232f2SAndroid Build Coastguard Worker
59*890232f2SAndroid Build Coastguard Workerstruct StructOfStructs {
60*890232f2SAndroid Build Coastguard Worker  a: Ability;
61*890232f2SAndroid Build Coastguard Worker  b: Test;
62*890232f2SAndroid Build Coastguard Worker  c: Ability;
63*890232f2SAndroid Build Coastguard Worker}
64*890232f2SAndroid Build Coastguard Worker
65*890232f2SAndroid Build Coastguard Workertable Stat {
66*890232f2SAndroid Build Coastguard Worker  id:string;
67*890232f2SAndroid Build Coastguard Worker  val:long;
68*890232f2SAndroid Build Coastguard Worker  count:ushort (key);
69*890232f2SAndroid Build Coastguard Worker}
70*890232f2SAndroid Build Coastguard Worker
71*890232f2SAndroid Build Coastguard Workertable Referrable {
72*890232f2SAndroid Build Coastguard Worker  id:ulong(key, hash:"fnv1a_64");
73*890232f2SAndroid Build Coastguard Worker}
74*890232f2SAndroid Build Coastguard Worker
75*890232f2SAndroid Build Coastguard Worker/// an example documentation comment: "monster object"
76*890232f2SAndroid Build Coastguard Workertable Monster {
77*890232f2SAndroid Build Coastguard Worker  pos:Vec3 (id: 0);
78*890232f2SAndroid Build Coastguard Worker  hp:short = 100 (id: 2);
79*890232f2SAndroid Build Coastguard Worker  mana:short = 150 (id: 1);
80*890232f2SAndroid Build Coastguard Worker  name:string (id: 3, key);
81*890232f2SAndroid Build Coastguard Worker  color:Color = Blue (id: 6);
82*890232f2SAndroid Build Coastguard Worker  inventory:[ubyte] (id: 5);
83*890232f2SAndroid Build Coastguard Worker  friendly:bool = false (deprecated, priority: 1, id: 4);
84*890232f2SAndroid Build Coastguard Worker  /// an example documentation comment: this will end up in the generated code
85*890232f2SAndroid Build Coastguard Worker  /// multiline too
86*890232f2SAndroid Build Coastguard Worker  testarrayoftables:[Monster] (id: 11);
87*890232f2SAndroid Build Coastguard Worker  testarrayofstring:[string] (id: 10);
88*890232f2SAndroid Build Coastguard Worker  testarrayofstring2:[string] (id: 28);
89*890232f2SAndroid Build Coastguard Worker  testarrayofbools:[bool] (id: 24);
90*890232f2SAndroid Build Coastguard Worker  testarrayofsortedstruct:[Ability] (id: 29);
91*890232f2SAndroid Build Coastguard Worker  enemy:MyGame.Example.Monster (id:12);  // Test referring by full namespace.
92*890232f2SAndroid Build Coastguard Worker  test:Any (id: 8);
93*890232f2SAndroid Build Coastguard Worker  test4:[Test] (id: 9);
94*890232f2SAndroid Build Coastguard Worker  test5:[Test] (id: 31);
95*890232f2SAndroid Build Coastguard Worker  testnestedflatbuffer:[ubyte] (id:13, nested_flatbuffer: "Monster");
96*890232f2SAndroid Build Coastguard Worker  testempty:Stat (id:14);
97*890232f2SAndroid Build Coastguard Worker  testbool:bool (id:15);
98*890232f2SAndroid Build Coastguard Worker  testhashs32_fnv1:int (id:16, hash:"fnv1_32");
99*890232f2SAndroid Build Coastguard Worker  testhashu32_fnv1:uint (id:17, hash:"fnv1_32");
100*890232f2SAndroid Build Coastguard Worker  testhashs64_fnv1:long (id:18, hash:"fnv1_64");
101*890232f2SAndroid Build Coastguard Worker  testhashu64_fnv1:ulong (id:19, hash:"fnv1_64");
102*890232f2SAndroid Build Coastguard Worker  testhashs32_fnv1a:int (id:20, hash:"fnv1a_32");
103*890232f2SAndroid Build Coastguard Worker  testhashu32_fnv1a:uint (id:21, hash:"fnv1a_32", cpp_type:"Stat");
104*890232f2SAndroid Build Coastguard Worker  testhashs64_fnv1a:long (id:22, hash:"fnv1a_64");
105*890232f2SAndroid Build Coastguard Worker  testhashu64_fnv1a:ulong (id:23, hash:"fnv1a_64");
106*890232f2SAndroid Build Coastguard Worker  testf:float = 3.14159 (id:25);
107*890232f2SAndroid Build Coastguard Worker  testf2:float = 3 (id:26);
108*890232f2SAndroid Build Coastguard Worker  testf3:float (id:27);
109*890232f2SAndroid Build Coastguard Worker  flex:[ubyte] (id:30, flexbuffer);
110*890232f2SAndroid Build Coastguard Worker  vector_of_longs:[long] (id:32);
111*890232f2SAndroid Build Coastguard Worker  vector_of_doubles:[double] (id:33);
112*890232f2SAndroid Build Coastguard Worker  parent_namespace_test:InParentNamespace (id:34);
113*890232f2SAndroid Build Coastguard Worker  vector_of_referrables:[Referrable](id:35);
114*890232f2SAndroid Build Coastguard Worker  single_weak_reference:ulong(id:36, hash:"fnv1a_64", cpp_type:"ReferrableT");
115*890232f2SAndroid Build Coastguard Worker  vector_of_weak_references:[ulong](id:37, hash:"fnv1a_64", cpp_type:"ReferrableT");
116*890232f2SAndroid Build Coastguard Worker  vector_of_strong_referrables:[Referrable](id:38, cpp_ptr_type:"default_ptr_type");                 //was shared_ptr
117*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
118*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
119*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
120*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
121*890232f2SAndroid Build Coastguard Worker  any_unique:AnyUniqueAliases(id:44);
122*890232f2SAndroid Build Coastguard Worker  any_ambiguous:AnyAmbiguousAliases (id:46);
123*890232f2SAndroid Build Coastguard Worker  vector_of_enums:[Color] (id:47);
124*890232f2SAndroid Build Coastguard Worker  signed_enum:Race = None (id:48);
125*890232f2SAndroid Build Coastguard Worker  testrequirednestedflatbuffer:[ubyte] (id:49, nested_flatbuffer: "Monster");
126*890232f2SAndroid Build Coastguard Worker  scalar_key_sorted_tables:[Stat] (id: 50);
127*890232f2SAndroid Build Coastguard Worker}
128*890232f2SAndroid Build Coastguard Worker
129*890232f2SAndroid Build Coastguard Workertable TypeAliases {
130*890232f2SAndroid Build Coastguard Worker    i8:int8;
131*890232f2SAndroid Build Coastguard Worker    u8:uint8;
132*890232f2SAndroid Build Coastguard Worker    i16:int16;
133*890232f2SAndroid Build Coastguard Worker    u16:uint16;
134*890232f2SAndroid Build Coastguard Worker    i32:int32;
135*890232f2SAndroid Build Coastguard Worker    u32:uint32;
136*890232f2SAndroid Build Coastguard Worker    i64:int64;
137*890232f2SAndroid Build Coastguard Worker    u64:uint64;
138*890232f2SAndroid Build Coastguard Worker    f32:float32;
139*890232f2SAndroid Build Coastguard Worker    f64:float64;
140*890232f2SAndroid Build Coastguard Worker    v8:[int8];
141*890232f2SAndroid Build Coastguard Worker    vf64:[float64];
142*890232f2SAndroid Build Coastguard Worker}
143*890232f2SAndroid Build Coastguard Worker
144*890232f2SAndroid Build Coastguard Workerrpc_service MonsterStorage {
145*890232f2SAndroid Build Coastguard Worker  Store(Monster):Stat (streaming: "none");
146*890232f2SAndroid Build Coastguard Worker  Retrieve(Stat):Monster (streaming: "server", idempotent);
147*890232f2SAndroid Build Coastguard Worker  GetMaxHitPoint(Monster):Stat (streaming: "client");
148*890232f2SAndroid Build Coastguard Worker  GetMinMaxHitPoints(Monster):Stat (streaming: "bidi");
149*890232f2SAndroid Build Coastguard Worker}
150*890232f2SAndroid Build Coastguard Worker
151*890232f2SAndroid Build Coastguard Workerroot_type Monster;
152*890232f2SAndroid Build Coastguard Worker
153*890232f2SAndroid Build Coastguard Workerfile_identifier "MONS";
154*890232f2SAndroid Build Coastguard Workerfile_extension "mon";
155