- int_class = &enum_class->p;
- int_class->p.name = g_quark_from_string(name);
- int_class->p.alignment = alignment;
- int_class->p.copy = enum_copy;
- int_class->p.class_free = _enum_type_class_free;
- int_class->p.type_new = _enum_type_new;
- int_class->p.type_free = _enum_type_free;
- int_class->p.ref = 1;
- int_class->len = len;
- int_class->byte_order = byte_order;
- int_class->signedness = signedness;
- if (int_class->p.name) {
- ret = register_type(&int_class->p);
- if (ret)
- goto register_error;
- }
- return enum_class;
-
-register_error:
- {
- struct enum_range_to_quark *iter, *tmp;
-
- cds_list_for_each_entry_safe(iter, tmp, &enum_class->table.range_to_quark, node) {
- cds_list_del(&iter->node);
- g_free(iter);
- }
- }
- g_hash_table_destroy(enum_class->table.value_to_quark_set);
- g_hash_table_destroy(enum_class->table.quark_to_range_set);
- g_free(enum_class);
- return NULL;
+ declaration_ref(&integer_declaration->p);
+ enum_declaration->integer_declaration = integer_declaration;
+ enum_declaration->p.id = CTF_TYPE_ENUM;
+ enum_declaration->p.alignment = 1;
+ enum_declaration->p.copy = enum_copy;
+ enum_declaration->p.declaration_free = _enum_declaration_free;
+ enum_declaration->p.definition_new = _enum_definition_new;
+ enum_declaration->p.definition_free = _enum_definition_free;
+ enum_declaration->p.ref = 1;
+ return enum_declaration;