const char *define = g_basename(state->basename);
const char *define = xpidl_basename(state->basename);
header_prolog(TreeState *state){    const char *define = g_basename(state->basename);    fprintf(state->file, "/*\n * DO NOT EDIT.  THIS FILE IS GENERATED FROM"            " %s.idl\n */\n", state->basename);    fprintf(state->file,            "\n#ifndef __gen_%s_h__\n"            "#define __gen_%s_h__\n",            define, define);    if (state->base_includes != NULL) {        guint len = g_slist_length(state->base_includes);        guint i;        fputc('\n', state->file);        for (i = 0; i < len; i++) {            char *ident, *dot;                        ident = (char *)g_slist_nth_data(state->base_includes, i);                        /* suppress any trailing .extension */                        /* XXX use g_basename instead ? ? */                        dot = strrchr(ident, '.');            if (dot != NULL)                *dot = '\0';                        /* begin include guard */                        fprintf(state->file,                    "\n#ifndef __gen_%s_h__\n",                     ident);            fprintf(state->file, "#include \"%s.h\"\n",                    (char *)g_slist_nth_data(state->base_includes, i));            fprintf(state->file, "#endif\n");                    }        if (i > 0)            fputc('\n', state->file);    }    /*     * Support IDL files that don't include a root IDL file that defines     * NS_NO_VTABLE.     */    fprintf(state->file,            "/* For IDL files that don't want to include root IDL files. */\n"            "#ifndef NS_NO_VTABLE\n"            "#define NS_NO_VTABLE\n"            "#endif\n");        return TRUE;}