Add embedded metadata examples
[babeltrace.git] / formats / ctf / metadata / ctf-ast.h
index 54ad14d5b5f21c0cf9be7f65edf9d99544eccc09..c12d09a97910dc43faf08237efee70bcd3a4f45a 100644 (file)
@@ -152,6 +152,7 @@ struct ctf_node {
                                TYPESPEC_UNSIGNED,
                                TYPESPEC_BOOL,
                                TYPESPEC_COMPLEX,
+                               TYPESPEC_IMAGINARY,
                                TYPESPEC_CONST,
                                TYPESPEC_ID_TYPE,
                        } type;
@@ -172,8 +173,11 @@ struct ctf_node {
                                struct {
                                        /* typedec has no pointer list */
                                        struct ctf_node *type_declarator;
-                                       /* value or first node of declaration specifier list */
-                                       struct ctf_node *length;
+                                       /*
+                                        * unary expression (value) or
+                                        * declaration specifiers.
+                                        */
+                                       struct cds_list_head length;
                                        /* for abstract type declarator */
                                        unsigned int abstract_array;
                                } nested;
@@ -194,14 +198,21 @@ struct ctf_node {
                } string;
                struct {
                        char *id;
-                       /* range list or single value node */
+                       /*
+                        * Range list or single value node. Contains unary
+                        * expressions.
+                        */
                        struct cds_list_head values;
                } enumerator;
                struct {
                        char *enum_id;
-                       /* NULL, value or declaration specifier */
-                       struct ctf_node *container_type;
+                       /*
+                        * Either empty, contains unary expression or
+                        * declaration specifiers.
+                        */
+                       struct cds_list_head container_type;
                        struct cds_list_head enumerator_list;
+                       int has_body;
                } _enum;
                struct {
                        struct cds_list_head declaration_specifier;
@@ -212,11 +223,13 @@ struct ctf_node {
                        char *choice;
                        /* list of typedef, typealias and declarations */
                        struct cds_list_head declaration_list;
+                       int has_body;
                } variant;
                struct {
                        char *name;
                        /* list of typedef, typealias and declarations */
                        struct cds_list_head declaration_list;
+                       int has_body;
                } _struct;
        } u;
 };
@@ -226,6 +239,14 @@ struct ctf_ast {
        struct cds_list_head allocated_nodes;
 };
 
+const char *node_type(struct ctf_node *node);
+
+struct ctf_trace;
+
 int ctf_visitor_print_xml(FILE *fd, int depth, struct ctf_node *node);
+int ctf_visitor_semantic_check(FILE *fd, int depth, struct ctf_node *node);
+int ctf_visitor_parent_links(FILE *fd, int depth, struct ctf_node *node);
+int ctf_visitor_construct_metadata(FILE *fd, int depth, struct ctf_node *node,
+                       struct ctf_trace *trace, int byte_order);
 
 #endif /* _CTF_PARSER_H */
This page took 0.024647 seconds and 4 git commands to generate.