Austin Schuh | 2dd86a9 | 2022-09-14 21:19:23 -0700 | [diff] [blame^] | 1 | namespace AnnotatedBinary; |
2 | |||||
3 | enum Food : byte { | ||||
4 | None = 0, | ||||
5 | Apple = 1, | ||||
6 | Banana = 2, | ||||
7 | Kiwi = 3, | ||||
8 | } | ||||
9 | |||||
10 | table Baz { | ||||
11 | meal:Food = Banana; | ||||
12 | } | ||||
13 | |||||
14 | table Bar { | ||||
15 | a:double = 3.14; | ||||
16 | b:float = 1.68; | ||||
17 | c:Baz; | ||||
18 | } | ||||
19 | |||||
20 | union BarBaz { | ||||
21 | Bar, Baz | ||||
22 | } | ||||
23 | |||||
24 | union Measurement { | ||||
25 | Tolerance, Dimension | ||||
26 | } | ||||
27 | |||||
28 | struct Tolerance { | ||||
29 | width:uint8; | ||||
30 | } | ||||
31 | |||||
32 | union Any { | ||||
33 | Bar, Tolerance | ||||
34 | } | ||||
35 | |||||
36 | struct Dimension { | ||||
37 | values:[int:3]; | ||||
38 | tolerances:[Tolerance:3]; | ||||
39 | } | ||||
40 | |||||
41 | struct Building { | ||||
42 | floors:int; | ||||
43 | doors:int; | ||||
44 | windows:int; | ||||
45 | dimensions:Dimension; | ||||
46 | } | ||||
47 | |||||
48 | struct Location { | ||||
49 | latitude:double; | ||||
50 | longitude:double; | ||||
51 | } | ||||
52 | |||||
53 | table Foo { | ||||
54 | counter:int; | ||||
55 | healthy:bool; | ||||
56 | level:long = 99; | ||||
57 | meal:Food = Apple; | ||||
58 | bar:Bar; | ||||
59 | home:Building; | ||||
60 | name:string; | ||||
61 | // Vector of tables | ||||
62 | bars:[Bar]; | ||||
63 | // Union of tables | ||||
64 | bar_baz:BarBaz; | ||||
65 | // Vector of Scalars | ||||
66 | accounts:[uint16]; | ||||
67 | bob:string; | ||||
68 | alice:string; | ||||
69 | // Optional Scalars | ||||
70 | maybe_i32: int32 = null; | ||||
71 | default_i32: int32 = 42; | ||||
72 | just_i32: int32; | ||||
73 | // Vector of strings | ||||
74 | names:[string]; | ||||
75 | // Vector of structs | ||||
76 | points_of_interest:[Location]; | ||||
77 | // Vector of unions | ||||
78 | foobars:[BarBaz]; | ||||
79 | // Union of structs | ||||
80 | measurement:Measurement; | ||||
81 | // Union of struct/table | ||||
82 | anything:Any; | ||||
83 | // Default floating point | ||||
84 | temperature:float=98.6; | ||||
85 | // Not present object | ||||
86 | teetotaler:Bar; | ||||
87 | charlie:string; | ||||
88 | } | ||||
89 | |||||
90 | file_identifier "ANNO"; | ||||
91 | |||||
92 | root_type Foo; |