Definition scope: update
[babeltrace.git] / types / float.c
index a945fd290e73308f2f093819ab44c9b485b7a4d9..eef123c8d05593c611ad527f929b383797618757 100644 (file)
 #include <babeltrace/format.h>
 
 static
-struct declaration *_float_declaration_new(struct type *type,
-                                  struct declaration_scope *parent_scope);
+struct definition *_float_definition_new(struct declaration *declaration,
+                                  struct definition_scope *parent_scope,
+                                  GQuark field_name, int index);
 static
-void _float_declaration_free(struct declaration *declaration);
+void _float_definition_free(struct definition *definition);
 
 void float_copy(struct stream_pos *destp,
                const struct format *fdest,
                struct stream_pos *srcp,
                const struct format *fsrc,
-               struct declaration *declaration)
+               struct definition *definition)
 {
-       struct declaration_float *_float =
-               container_of(declaration, struct declaration_float, p);
-       struct type_float *float_type = _float->type;
+       struct definition_float *_float =
+               container_of(definition, struct definition_float, p);
+       struct declaration_float *float_declaration = _float->declaration;
 
        if (fsrc->float_copy == fdest->float_copy) {
-               fsrc->float_copy(destp, srcp, float_type);
+               fsrc->float_copy(destp, srcp, float_declaration);
        } else {
                double v;
 
-               v = fsrc->double_read(srcp, float_type);
-               fdest->double_write(destp, float_type, v);
+               v = fsrc->double_read(srcp, float_declaration);
+               fdest->double_write(destp, float_declaration, v);
        }
 }
 
 static
-void _float_type_free(struct type *type)
+void _float_declaration_free(struct declaration *declaration)
 {
-       struct type_float *float_type =
-               container_of(type, struct type_float, p);
+       struct declaration_float *float_declaration =
+               container_of(declaration, struct declaration_float, p);
 
-       type_unref(&float_type->exp->p);
-       type_unref(&float_type->mantissa->p);
-       type_unref(&float_type->sign->p);
-       g_free(float_type);
+       declaration_unref(&float_declaration->exp->p);
+       declaration_unref(&float_declaration->mantissa->p);
+       declaration_unref(&float_declaration->sign->p);
+       g_free(float_declaration);
 }
 
-struct type_float *
-       float_type_new(const char *name, size_t mantissa_len,
+struct declaration_float *
+       float_declaration_new(const char *name, size_t mantissa_len,
                       size_t exp_len, int byte_order, size_t alignment)
 {
-       struct type_float *float_type;
-       struct type *type;
-       int ret;
-
-       float_type = g_new(struct type_float, 1);
-       type = &float_type->p;
-       type->name = g_quark_from_string(name);
-       type->alignment = alignment;
-       type->copy = float_copy;
-       type->type_free = _float_type_free;
-       type->declaration_new = _float_declaration_new;
-       type->declaration_free = _float_declaration_free;
-       type->ref = 1;
-       float_type->byte_order = byte_order;
-
-       float_type->sign = integer_type_new(NULL, 1,
+       struct declaration_float *float_declaration;
+       struct declaration *declaration;
+
+       float_declaration = g_new(struct declaration_float, 1);
+       declaration = &float_declaration->p;
+       declaration->id = CTF_TYPE_FLOAT;
+       declaration->name = g_quark_from_string(name);
+       declaration->alignment = alignment;
+       declaration->copy = float_copy;
+       declaration->declaration_free = _float_declaration_free;
+       declaration->definition_new = _float_definition_new;
+       declaration->definition_free = _float_definition_free;
+       declaration->ref = 1;
+       float_declaration->byte_order = byte_order;
+
+       float_declaration->sign = integer_declaration_new(NULL, 1,
                                            byte_order, false, 1);
-       if (!float_type->mantissa)
-               goto error_sign;
-       float_type->mantissa = integer_type_new(NULL, mantissa_len - 1,
+       float_declaration->mantissa = integer_declaration_new(NULL, mantissa_len - 1,
                                                byte_order, false, 1);
-       if (!float_type->mantissa)
-               goto error_mantissa;
-       float_type->exp = integer_type_new(NULL, exp_len,
+       float_declaration->exp = integer_declaration_new(NULL, exp_len,
                                           byte_order, true, 1);
-       if (!float_type->exp)
-               goto error_exp;
-
-       if (float_type->p.name) {
-               ret = register_type(&float_type->p);
-               if (ret)
-                       goto error_register;
-       }
-       return float_type;
-
-error_register:
-       type_unref(&float_type->exp->p);
-error_exp:
-       type_unref(&float_type->mantissa->p);
-error_mantissa:
-       type_unref(&float_type->sign->p);
-error_sign:
-       g_free(float_type);
-       return NULL;
+       return float_declaration;
 }
 
 static
-struct declaration *
-       _float_declaration_new(struct type *type,
-                              struct declaration_scope *parent_scope)
+struct definition *
+       _float_definition_new(struct declaration *declaration,
+                             struct definition_scope *parent_scope,
+                             GQuark field_name, int index)
 {
-       struct type_float *float_type =
-               container_of(type, struct type_float, p);
-       struct declaration_float *_float;
+       struct declaration_float *float_declaration =
+               container_of(declaration, struct declaration_float, p);
+       struct definition_float *_float;
 
-       _float = g_new(struct declaration_float, 1);
-       type_ref(&_float_type->p);
-       _float->p.type= _float_type;
+       _float = g_new(struct definition_float, 1);
+       declaration_ref(&float_declaration->p);
+       _float->p.declaration = declaration;
+       _float->declaration = float_declaration;
        _float->p.ref = 1;
+       _float->p.index = index;
        _float->value = 0.0;
        return &_float->p;
 }
 
 static
-void _float_declaration_free(struct declaration *declaration)
+void _float_definition_free(struct definition *definition)
 {
-       struct declaration_float *_float =
-               container_of(declaration, struct declaration_float, p);
+       struct definition_float *_float =
+               container_of(definition, struct definition_float, p);
 
-       type_unref(_float->p.type);
+       declaration_unref(_float->p.declaration);
        g_free(_float);
 }
This page took 0.025764 seconds and 4 git commands to generate.