...
}
-4.2.2 Variants (Discriminated Unions)
+4.2.2 Variants (Discriminated/Tagged Unions)
A CTF variant is a selection between different types. A CTF variant must always
be defined within the scope of a structure or within fields contained within a
struct {
enum <uint2_t> { a, b, c } choice;
- variant example <choice> u[unsigned int];
+ variant example <choice> v[unsigned int];
}
Example of an unnamed variant:
uint32_t a;
uint64_t b;
short c;
- } u[10];
+ } v[10];
}
Example of a variant type definition within a structure, where the defined type
The metadata can be parsed by reading through the metadata strings, skipping
newlines and null-characters. Type names are made of a single identifier, and
can be surrounded by prefix/postfix. Text contained within "/*" and "*/", as
-well as within "//" and end of line, are treated as comments.
+well as within "//" and end of line, are treated as comments. Boolean values can
+be represented as true, TRUE, or 1 for true, and false, FALSE, or 0 for false.
The grammar representing the CTF metadata is presented in
Appendix C. CTF Metadata Grammar.
stream {
id = stream_id;
- event {
- header_alignment = value;
- /* Type 1 - Few event IDs; Type 2 - Many event IDs. See section 6.2. */
- header = event_header_1 OR event_header_2;
- context = struct {
- ...
- };
+ /* Type 1 - Few event IDs; Type 2 - Many event IDs. See section 6.2. */
+ event.header = event_header_1 OR event_header_2;
+ event.context = struct {
+ ...
};
- packet {
- context = struct {
- ...
- };
+ packet.context = struct {
+ ...
};
};