X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=include%2Fbabeltrace%2Fctf%2Fmetadata.h;h=a60f17763c239e4bac7023d51c8d436b622542ce;hp=aea04e8c76acbe2ef6c4a97f4a914765d320ea0b;hb=9e29e16ee50d03cf4fdc0cea0220832323939dc3;hpb=96513a7fdd4e81addb67df1a937236748aeee32a diff --git a/include/babeltrace/ctf/metadata.h b/include/babeltrace/ctf/metadata.h index aea04e8c..a60f1776 100644 --- a/include/babeltrace/ctf/metadata.h +++ b/include/babeltrace/ctf/metadata.h @@ -43,9 +43,16 @@ struct ctf_event; (ctf_trace)->(field); \ }) + struct ctf_trace { - struct declaration_scope *scope; /* root scope */ - GArray *streams; /* Array of struct ctf_stream */ + /* root scope */ + struct declaration_scope *root_declaration_scope; + /* root scope */ + struct definition_scope *root_definition_scope; + + struct declaration_scope *declaration_scope; + struct definition_scope *definition_scope; + GPtrArray *streams; /* Array of struct ctf_stream pointers*/ uint64_t major; uint64_t minor; @@ -77,13 +84,22 @@ struct ctf_trace { struct ctf_stream { struct ctf_trace *trace; - struct declaration_scope *scope; /* parent is trace scope */ - GArray *events_by_id; /* Array of struct ctf_event indexed by id */ + /* parent is lexical scope conaining the stream scope */ + struct declaration_scope *declaration_scope; + /* parent is trace scope */ + struct definition_scope *definition_scope; + GPtrArray *events_by_id; /* Array of struct ctf_event pointers indexed by id */ GHashTable *event_quark_to_id; /* GQuark to numeric id */ - struct declaration_struct *event_header; - struct declaration_struct *event_context; - struct declaration_struct *packet_context; + /* Declarations only used when parsing */ + struct declaration_struct *packet_context_decl; + struct declaration_struct *event_header_decl; + struct declaration_struct *event_context_decl; + + /* Definitions used afterward */ + struct definition_struct *packet_context; + struct definition_struct *event_header; + struct definition_struct *event_context; uint64_t stream_id; @@ -92,9 +108,8 @@ struct ctf_stream { } field_mask; }; -#define CTF_EVENT_SET_FIELD(ctf_event, field, value) \ +#define CTF_EVENT_SET_FIELD(ctf_event, field) \ do { \ - (ctf_event)->(field) = (value); \ (ctf_event)->field_mask |= CTF_EVENT_ ## field; \ } while (0) @@ -108,10 +123,20 @@ struct ctf_stream { }) struct ctf_event { - struct ctf_stream *stream; /* stream mapped by stream_id */ - struct declaration_scope *scope; /* parent is stream scope */ - struct declaration_struct *context; - struct declaration_struct *fields; + /* stream mapped by stream_id */ + struct ctf_stream *stream; + /* parent is lexical scope conaining the event scope */ + struct declaration_scope *declaration_scope; + /* parent is stream scope */ + struct definition_scope *definition_scope; + + /* Declarations only used when parsing */ + struct declaration_struct *context_decl; + struct declaration_struct *fields_decl; + + /* Definitions used afterward */ + struct definition_struct *context; + struct definition_struct *fields; GQuark name; uint64_t id; /* Numeric identifier within the stream */