Add array and sequence "len" accessor
[babeltrace.git] / types / enum.c
index 67c23f0905983ad6bb5831b139d2eed9fc7e5a53..368c21a6910187dc8d6e9ce45dd80fc547b2757a 100644 (file)
@@ -23,7 +23,8 @@
 
 static
 struct definition *_enum_definition_new(struct declaration *declaration,
-                                       struct definition_scope *parent_scope);
+                                       struct definition_scope *parent_scope,
+                                       GQuark field_name, int index);
 static
 void _enum_definition_free(struct definition *definition);
 
@@ -370,7 +371,8 @@ void enum_copy(struct stream_pos *dest, const struct format *fdest,
         * now to test enum read and write code.
         */
        v = g_array_index(array, GQuark, 0);
-       return fdest->enum_write(dest, enum_declaration, v);
+       if (fdest)
+               fdest->enum_write(dest, enum_declaration, v);
 }
 
 static
@@ -391,7 +393,7 @@ void _enum_declaration_free(struct declaration *declaration)
 }
 
 struct declaration_enum *
-       _enum_declaration_new(const char *name, struct declaration_integer *integer_declaration)
+       enum_declaration_new(struct declaration_integer *integer_declaration)
 {
        struct declaration_enum *enum_declaration;
 
@@ -402,13 +404,12 @@ struct declaration_enum *
                                                            enum_val_free,
                                                            enum_range_set_free);
        CDS_INIT_LIST_HEAD(&enum_declaration->table.range_to_quark);
-       enum_declaration->table.quark_to_range_set = g_hash_table_new_full(g_int_hash,
-                                                       g_int_equal,
+       enum_declaration->table.quark_to_range_set = g_hash_table_new_full(g_direct_hash,
+                                                       g_direct_equal,
                                                        NULL, enum_range_set_free);
        declaration_ref(&integer_declaration->p);
        enum_declaration->integer_declaration = integer_declaration;
        enum_declaration->p.id = CTF_TYPE_ENUM;
-       enum_declaration->p.name = g_quark_from_string(name);
        enum_declaration->p.alignment = 1;
        enum_declaration->p.copy = enum_copy;
        enum_declaration->p.declaration_free = _enum_declaration_free;
@@ -421,7 +422,8 @@ struct declaration_enum *
 static
 struct definition *
        _enum_definition_new(struct declaration *declaration,
-                            struct definition_scope *parent_scope)
+                            struct definition_scope *parent_scope,
+                            GQuark field_name, int index)
 {
        struct declaration_enum *enum_declaration =
                container_of(declaration, struct declaration_enum, p);
@@ -433,10 +435,11 @@ struct definition *
        _enum->p.declaration = declaration;
        _enum->declaration = enum_declaration;
        _enum->p.ref = 1;
+       _enum->p.index = index;
        _enum->value = NULL;
        definition_integer_parent =
                enum_declaration->integer_declaration->p.definition_new(&enum_declaration->integer_declaration->p,
-                                                          parent_scope);
+                                       parent_scope, field_name, 0);
        _enum->integer = container_of(definition_integer_parent,
                                      struct definition_integer, p);
        return &_enum->p;
This page took 0.02439 seconds and 4 git commands to generate.