byte_order = le;
uuid = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa";
packet.header := struct {
- uint32_t magic;
- };
+ uint32_t magic;
+ };
};
variant var {
/*
* TODO: Only an identifier is expected in the variant/sequence
* tag. It should be a dotted expression (a path).
+ *
*/
variant var <stream.event.header.a> b;
+
+ /*
+ * TODO
+ * The path lookup only allows lookup for a full path starting
+ * from the root or for a field within the current scope. The
+ * CTF spec allows defining a relative sub-scope for a preceding
+ * field.
+ */
+ struct {
+ enum select sel2;
+ } str2;
+ variant var2 <str2.sel2> b;
+
+ /*
+ * TODO: Deal with path name lookup conflict, e.g. if a field is
+ * named "stream", it conflicts with the stream dynamic scope.
+ * Local fields hide dynamic scopes.
+ */
+ struct {
+ enum select sel3
+ } stream;
+ variant var3 <stream.sel3> c;
+ /* But now the following lookup should fail: */
+ /* variant var4 <stream.event.header.a> d; */
+
+ /*
+ * TODO: support conflict-free local-scoped tags, starting with
+ * ".".
+ */
+ variant var5 <.stream.sel3> e;
};
};