gfc_expr * gfc_class_null_initializer (gfc_typespec *ts) { gfc_expr *init; gfc_component *comp; init = gfc_get_structure_constructor_expr (ts->type, ts->kind, &ts->u.derived->declared_at); init->ts = *ts; for (comp = ts->u.derived->components; comp; comp = comp->next) { gfc_constructor *ctor = gfc_constructor_get(); ctor->expr = gfc_get_expr (); ctor->expr->expr_type = EXPR_NULL; ctor->expr->ts = comp->ts; gfc_constructor_append (&init->value.constructor, ctor); } return init; }
gfc_expr * gfc_class_null_initializer (gfc_typespec *ts) { gfc_expr *init; gfc_component *comp; init = gfc_get_structure_constructor_expr (ts->type, ts->kind, &ts->u.derived->declared_at); init->ts = *ts; for (comp = ts->u.derived->components; comp; comp = comp->next) { gfc_constructor *ctor = gfc_constructor_get(); if (strcmp (comp->name, "_vptr") == 0) ctor->expr = gfc_lval_expr_from_sym (gfc_find_derived_vtab (ts->u.derived)); else ctor->expr = gfc_get_null_expr (NULL); gfc_constructor_append (&init->value.constructor, ctor); } return init; }