Beispiel #1
0
gfc_constructor *
gfc_constructor_append_expr (gfc_constructor_base *base,
			     gfc_expr *e, locus *where)
{
  gfc_constructor *c = gfc_constructor_get ();
  c->expr = e;
  if (where)
    c->where = *where;

  return gfc_constructor_append (base, c);
}
Beispiel #2
0
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;
}