Commit | Line | Data |
---|---|---|
5eda3dc2 | 1 | /* TSDL */ |
ff34a255 MD |
2 | typealias integer { size = 8; align = 8; signed = false; base = hex; } := uint8_t; |
3 | typealias integer { size = 32; align = 8; signed = false; base = hex; } := uint32_t; | |
4 | ||
5 | trace { | |
6 | major = 1; | |
7 | minor = 2; | |
8 | byte_order = le; | |
9 | uuid = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"; | |
10 | packet.header := struct { | |
25c7b1ae MD |
11 | uint32_t magic; |
12 | }; | |
ff34a255 MD |
13 | }; |
14 | ||
15 | variant var { | |
16 | uint8_t small; | |
17 | uint32_t big; | |
18 | }; | |
19 | ||
20 | enum select : uint8_t { small = 0, big = 1 }; | |
21 | ||
22 | stream { | |
23 | event.header := struct { | |
24 | enum select a; | |
25 | }; | |
26 | }; | |
27 | ||
28 | event { | |
29 | name = event1; | |
30 | fields := struct { | |
31 | /* | |
32 | * TODO: Only an identifier is expected in the variant/sequence | |
33 | * tag. It should be a dotted expression (a path). | |
25c7b1ae | 34 | * |
ff34a255 MD |
35 | */ |
36 | variant var <stream.event.header.a> b; | |
25c7b1ae MD |
37 | |
38 | /* | |
39 | * TODO | |
40 | * The path lookup only allows lookup for a full path starting | |
41 | * from the root or for a field within the current scope. The | |
42 | * CTF spec allows defining a relative sub-scope for a preceding | |
43 | * field. | |
44 | */ | |
45 | struct { | |
46 | enum select sel2; | |
47 | } str2; | |
48 | variant var2 <str2.sel2> b; | |
7fb16836 MD |
49 | |
50 | /* | |
51 | * TODO: Deal with path name lookup conflict, e.g. if a field is | |
52 | * named "stream", it conflicts with the stream dynamic scope. | |
8a9a5dfe | 53 | * Local fields hide dynamic scopes. |
7fb16836 MD |
54 | */ |
55 | struct { | |
56 | enum select sel3 | |
57 | } stream; | |
8a9a5dfe MD |
58 | variant var3 <stream.sel3> c; |
59 | /* But now the following lookup should fail: */ | |
60 | /* variant var4 <stream.event.header.a> d; */ | |
7fb16836 MD |
61 | |
62 | /* | |
63 | * TODO: support conflict-free local-scoped tags, starting with | |
64 | * ".". | |
65 | */ | |
8a9a5dfe | 66 | variant var5 <.stream.sel3> e; |
ff34a255 MD |
67 | }; |
68 | }; |