- float_class = g_new(struct type_class_float, 1);
- float_class->p.name = g_quark_from_string(name);
- float_class->p.alignment = alignment;
- float_class->mantissa_len = mantissa_len;
- float_class->exp_len = exp_len;
- float_class->byte_order = byte_order;
- if (float_class->p.name) {
- ret = ctf_register_type(&float_class->p);
- if (ret) {
- g_free(float_class);
- return NULL;
- }
+ _float = g_new(struct definition_float, 1);
+ declaration_ref(&float_declaration->p);
+ _float->p.declaration = declaration;
+ _float->declaration = float_declaration;
+ _float->p.scope = new_definition_scope(parent_scope, field_name, root_name);
+ _float->p.path = new_definition_path(parent_scope, field_name, root_name);
+ if (float_declaration->byte_order == LITTLE_ENDIAN) {
+ tmp = float_declaration->mantissa->p.definition_new(&float_declaration->mantissa->p,
+ _float->p.scope, g_quark_from_static_string("mantissa"), 0, NULL);
+ _float->mantissa = container_of(tmp, struct definition_integer, p);
+ tmp = float_declaration->exp->p.definition_new(&float_declaration->exp->p,
+ _float->p.scope, g_quark_from_static_string("exp"), 1, NULL);
+ _float->exp = container_of(tmp, struct definition_integer, p);
+ tmp = float_declaration->sign->p.definition_new(&float_declaration->sign->p,
+ _float->p.scope, g_quark_from_static_string("sign"), 2, NULL);
+ _float->sign = container_of(tmp, struct definition_integer, p);
+ } else {
+ tmp = float_declaration->sign->p.definition_new(&float_declaration->sign->p,
+ _float->p.scope, g_quark_from_static_string("sign"), 0, NULL);
+ _float->sign = container_of(tmp, struct definition_integer, p);
+ tmp = float_declaration->exp->p.definition_new(&float_declaration->exp->p,
+ _float->p.scope, g_quark_from_static_string("exp"), 1, NULL);
+ _float->exp = container_of(tmp, struct definition_integer, p);
+ tmp = float_declaration->mantissa->p.definition_new(&float_declaration->mantissa->p,
+ _float->p.scope, g_quark_from_static_string("mantissa"), 2, NULL);
+ _float->mantissa = container_of(tmp, struct definition_integer, p);