CreateNewInterfaceHolder(iface, name_space, iid);
CreateNewInterfaceHolder(iface, name_space, iid, (gboolean) node_type == IDLN_FORWARD_DCL);
add_interface_maybe(IDL_tree_func_data *tfd, gpointer user_data){    TreeState *state = user_data;    IDL_tree up;    if (IDL_NODE_TYPE(tfd->tree) == IDLN_IDENT) {        if ((IDL_NODE_TYPE((up = IDL_NODE_UP(tfd->tree))) == IDLN_INTERFACE)) {            char *iface = IDL_IDENT(tfd->tree).str;            if (!g_hash_table_lookup(IFACE_MAP(state), iface)) {                /* XXX should we parse here and store a struct nsID *? */                char *iid = (char *)IDL_tree_property_get(tfd->tree, "uuid");                char *name_space = (char *)                            IDL_tree_property_get(tfd->tree, "namespace");                NewInterfaceHolder *holder =                        CreateNewInterfaceHolder(iface, name_space, iid);                if(!holder)                    return FALSE;                g_hash_table_insert(IFACE_MAP(state),                                    holder->full_name, holder);                IFACES(state)++;#ifdef DEBUG_shaver_ifaces                fprintf(stderr, "adding interface #%d: %s/%s\n", IFACES(state),                        iface, iid[0] ? iid : "<unresolved>");#endif            }        } else {#ifdef DEBUG_shaver_ifaces            fprintf(stderr, "ident %s isn't an interface (%s)\n",                    IDL_IDENT(tfd->tree).str, IDL_NODE_TYPE_NAME(up));#endif        }    }    return TRUE;}