+
+error_register:
+ type_class_unref(&float_class->exp->p);
+error_exp:
+ type_class_unref(&float_class->mantissa->p);
+error_mantissa:
+ type_class_unref(&float_class->sign->p);
+error_sign:
+ g_free(float_class);
+ return NULL;
+}
+
+static
+struct type_float *_float_type_new(struct type_class *type_class,
+ struct declaration_scope *parent_scope)
+{
+ struct type_class_float *float_class =
+ container_of(type_class, struct type_class_float, p);
+ struct type_float *_float;
+
+ _float = g_new(struct type_float, 1);
+ type_class_ref(&_float_class->p);
+ _float->p._class = _float_class;
+ _float->p.ref = 1;
+ _float->value = 0.0;
+ return &_float->p;