Example #1
0
void g95_dump(g95_namespace *ns) {

    if (dump_file == NULL && getenv("G95_DUMP") != NULL)
	init_dump();

    if (dump_file != NULL)
	dump_ns(ns);
}
Example #2
0
        /*!
         Used to dump out a record to a std::ostream object.
         \param strm std::ostream to write to
         \param ptr Resource base object to dump
         */
        static void
        dump_record ( std::ostream& strm, dns::resource_base_t * ptr )
        {
          switch( ptr->rtype() )
          {
          case dns::type_a:
            dump_a(strm, ptr);
            break;

          case dns::type_ns:
            dump_ns(strm, ptr);
            break;

          case dns::type_cname:
            dump_cname(strm, ptr);
            break;

          case dns::type_soa:
            dump_soa(strm, ptr);
            break;

          case dns::type_ptr:
            dump_ptr(strm, ptr);
            break;

          case dns::type_hinfo:
            dump_hinfo(strm, ptr);
            break;

          case dns::type_mx:
            dump_mx(strm, ptr);
            break;

          case dns::type_txt:
            dump_text(strm, ptr);
            break;

          case dns::type_a6:
            dump_a6(strm, ptr);
            break;

          case dns::type_srv:
            dump_srv(strm, ptr);
            break;

          default:
            strm << "Unhandled record type!" << std::endl;
            break;
          }
        }
Example #3
0
static void dump_ns(g95_namespace *ns) {
g95_symbol *sym, *result;
g95_namespace *p, *save;
g95_locus *where;
g95_annot *a;
int m, rank;

    save = g95_current_ns; 
    g95_current_ns = ns;
  
    where = &ns->declared_at;
    sym = ns->proc_name;

    switch(ns->state) {
    case COMP_PROGRAM:
	if (ns->unit_name == NULL)
	    dumpf("program(None, %L)\n", where);
	else
	    dumpf("program(%S,%L)\n", ns->unit_name, where);

	break;

    case COMP_MODULE:
	dumpf("module(%S,%L,%L)\n", sym->name, where,
	      &ns->proc_name->declared_at);
	break;

    case COMP_SUBROUTINE:
	dumpf("subroutine(%S,%S,%L,", sym->name, sym->module,
	      &ns->proc_name->declared_at);
	dump_formal(ns->proc_name);
	dumpf(")\n");
	break;

    case COMP_FUNCTION:
	result = sym->result;
	rank = (result->as == NULL) ? 0 : result->as->rank;

	dumpf("function(%S,%S,%L,%S,%d,%d,", sym->name, sym->module,
	      &ns->proc_name->declared_at, g95_typename(&result->ts), rank,
	      result->attr.pointer);

	dump_formal(ns->proc_name);
	dumpf(")\n");
	break;

    case COMP_BLOCK_DATA:
	if (ns->proc_name->name == NULL)
	    dumpf("block_data(None,%L)\n", where);
	else
	    dumpf("block_data(%S,%L)\n", sym->name, where);

	break;

    case COMP_NONE:
	return;

    default:
	g95_internal_error("dump_ns(): Bad state");
    }

    g95_traverse_symtree(ns, g95_clear_sym_mark);
    g95_traverse_symtree(ns, dump_symtree);

    dump_common(ns->common_root);

    for(a=ns->annotation; a; a=a->next)
	switch(a->type) {
	case ANNOT_PARAMETER:
	    dumpf("parameter_use(%p,%L)\n", a->u.sym, &a->where);
	    break;

	case ANNOT_DERIVED:
	    dumpf("derived_use(%p,%L)\n", a->u.sym, &a->where);
	    break;

	case ANNOT_LABEL:
	    dumpf("label_use(%p,%L)\n", a->u.sym, &a->where);
	    break;

	case ANNOT_OPERATOR:
	    dumpf("operator_use(%p,%L)\n", a->u.sym, &a->where);
	    break;

	default:
	    g95_internal_error("init_dump(): Bad type");
	}

    m = dump_code(ns->code);
    dumpf("add_code(%C)\n", m);

    if (m != 0)
	dumpf("del %C\n", m);

    for(p=ns->contained; p; p=p->sibling)
	dump_ns(p);

    dumpf("end()\n");
    g95_current_ns = save;
}