export lookup_definition
[babeltrace.git] / include / babeltrace / types.h
index 2aa45b8a0cdfbe6f33f0cd290bf50064ecaeae88..5523eb42987adcc7af24a6e3fe2702109f835269 100644 (file)
@@ -105,6 +105,7 @@ struct definition {
        GQuark name;            /* Field name in its container (or 0 if unset) */
        int ref;                /* number of references to the definition */
        GQuark path;
+       struct definition_scope *scope;
 };
 
 typedef int (*rw_dispatch)(struct stream_pos *pos,
@@ -129,6 +130,13 @@ int generic_rw(struct stream_pos *pos, struct definition *definition)
        return call(pos, definition);
 }
 
+enum ctf_string_encoding {
+       CTF_STRING_NONE = 0,
+       CTF_STRING_UTF8,
+       CTF_STRING_ASCII,
+       CTF_STRING_UNKNOWN,
+};
+
 /*
  * Because we address in bits, bitfields end up being exactly the same as
  * integers, except that their read/write functions must be able to deal with
@@ -140,6 +148,7 @@ struct declaration_integer {
        int byte_order;         /* byte order */
        int signedness;
        int base;               /* Base for pretty-printing: 2, 8, 10, 16 */
+       enum ctf_string_encoding encoding;
 };
 
 struct definition_integer {
@@ -167,7 +176,6 @@ struct definition_float {
        struct definition_integer *sign;
        struct definition_integer *mantissa;
        struct definition_integer *exp;
-       struct definition_scope *scope;
        /* Last values read */
        long double value;
 };
@@ -220,17 +228,10 @@ struct definition_enum {
        struct definition p;
        struct definition_integer *integer;
        struct declaration_enum *declaration;
-       struct definition_scope *scope;
        /* Last GQuark values read. Keeping a reference on the GQuark array. */
        GArray *value;
 };
 
-enum ctf_string_encoding {
-       CTF_STRING_UTF8 = 0,
-       CTF_STRING_ASCII,
-       CTF_STRING_UNKNOWN,
-};
-
 struct declaration_string {
        struct declaration p;
        enum ctf_string_encoding encoding;
@@ -258,7 +259,6 @@ struct declaration_struct {
 struct definition_struct {
        struct definition p;
        struct declaration_struct *declaration;
-       struct definition_scope *scope;
        GPtrArray *fields;              /* Array of pointers to struct definition */
 };
 
@@ -279,7 +279,6 @@ struct declaration_variant {
 struct definition_variant {
        struct definition p;
        struct declaration_variant *declaration;
-       struct definition_scope *scope;
        struct definition *enum_tag;
        GPtrArray *fields;              /* Array of pointers to struct definition */
        struct definition *current_field;       /* Last field read */
@@ -295,8 +294,8 @@ struct declaration_array {
 struct definition_array {
        struct definition p;
        struct declaration_array *declaration;
-       struct definition_scope *scope;
        GPtrArray *elems;               /* Array of pointers to struct definition */
+       GString *string;                /* String for encoded integer children */
 };
 
 struct declaration_sequence {
@@ -309,9 +308,9 @@ struct declaration_sequence {
 struct definition_sequence {
        struct definition p;
        struct declaration_sequence *declaration;
-       struct definition_scope *scope;
        struct definition_integer *length;
        GPtrArray *elems;               /* Array of pointers to struct definition */
+       GString *string;                /* String for encoded integer children */
 };
 
 int register_declaration(GQuark declaration_name,
@@ -353,9 +352,9 @@ void free_declaration_scope(struct declaration_scope *scope);
  * definition scopes.
  */
 struct definition *
-       lookup_definition(GArray *cur_path,     /* array of GQuark */
-                         GArray *lookup_path,  /* array of GQuark */
-                         struct definition_scope *scope);
+       lookup_path_definition(GArray *cur_path,        /* array of GQuark */
+                              GArray *lookup_path,     /* array of GQuark */
+                              struct definition_scope *scope);
 int register_field_definition(GQuark field_name,
                              struct definition *definition,
                              struct definition_scope *scope);
@@ -381,7 +380,7 @@ void definition_unref(struct definition *definition);
 
 struct declaration_integer *integer_declaration_new(size_t len, int byte_order,
                                  int signedness, size_t alignment,
-                                 int base);
+                                 int base, enum ctf_string_encoding encoding);
 
 /*
  * mantissa_len is the length of the number of bytes represented by the mantissa
@@ -408,7 +407,7 @@ GArray *enum_uint_to_quark_set(const struct declaration_enum *enum_declaration,
  * Caller must release the GArray with g_array_unref().
  */
 GArray *enum_int_to_quark_set(const struct declaration_enum *enum_declaration,
-                             uint64_t v);
+                             int64_t v);
 
 /*
  * Returns a GArray of struct enum_range or NULL.
@@ -510,4 +509,18 @@ int sequence_rw(struct stream_pos *pos, struct definition *definition);
  */
 void append_scope_path(const char *path, GArray *q);
 
+/*
+ * Lookup helpers.
+ */
+struct definition *lookup_definition(struct definition *definition,
+                                    const char *field_name);
+struct definition_integer *lookup_integer(struct definition *definition,
+                                         const char *field_name,
+                                         int signedness);
+struct definition_enum *lookup_enum(struct definition *definition,
+                                   const char *field_name,
+                                   int signedness);
+struct definition *lookup_variant(struct definition *definition,
+                                 const char *field_name);
+
 #endif /* _BABELTRACE_TYPES_H */
This page took 0.025042 seconds and 4 git commands to generate.