[GCC-XML]extra tags needed

Michael Santy mike.santy at dynetics.com
Tue Feb 12 11:03:00 EST 2002

Let me first say that the GCC-XML work has a lot of potential.  We are
planning on using it on production code in the company I work for.  However,
the XML output lacks a few attributes that we were needing.  The first thing
that was lacking was access information for fields in classes.  To enable
this output, change the print_variable_begin_tag to:

static void
print_variable_begin_tag (FILE* file, unsigned long indent, tree vd)
  const char* name = xml_get_encoded_string (DECL_NAME (vd));

  const char* access;
  int is_protected = TREE_PROTECTED(vd),
      is_private   = TREE_PRIVATE(vd);
  //TREE_PUBLIC(vd) always returns true for some reason, so we ignore it
  if(!is_protected && !is_private) {
    access = "public";
  else if(is_private) {
    access = "private";
  else if(is_protected) {
    access = "protected";

  print_indent (file, indent);
  fprintf (file,
           "<Variable name=\"%s\" access=\"%s\">\n",

The second attribute that we were lacking involves retrieving values from
enumeration instances.  Suppose I have declared:

enum foo_enum { ITEM1=10, ITEM2=20, ITEM3=100 };

I want to be able to retrieve the values for ITEM1, ITEM2, and ITEM3,
instead of assuming that the elements are 0, 1, and 2, respectively.  I have
looked through gcc's "tree.h" and have found no way to access these values.
Does anybody have any suggestions.

Thanks a bunch,

Mike Santy

More information about the gccxml mailing list