Ejemplo n.º 1
0
void path_slicert::get_suffixes(
    const std::string &base,
    const typet &type,
    string_sett &s)
{
    const irep_idt &type_id=ns.follow(type).id();

    if(type_id==ID_struct || type_id==ID_union)
    {
        s.insert(base);

        const struct_typet &struct_type=to_struct_type(ns.follow(type));

        for(struct_typet::componentst::const_iterator
                c_it=struct_type.components().begin();
                c_it!=struct_type.components().end();
                c_it++)
        {
            const typet &subtype=c_it->type();
            const irep_idt &name=c_it->get(ID_name);
            get_suffixes(base+"."+id2string(name), subtype, s);
        }
    }
    else if(type_id==ID_array)
    {
        s.insert(base);
        get_suffixes(base+"[]", ns.follow(type).subtype(), s);
    }
    else
    {
        // no suffixes
        s.insert(base);
    }
}
static void server_browse_entry_expand(GqBrowserNode *e,
				       int error_context,
				       GQTreeWidget *ctree, GQTreeWidgetNode *node,
				       GqTab *tab)
{
     GList *suffixes = NULL, *next;
     GqBrowserNodeServer *entry;

     g_assert(GQ_IS_BROWSER_NODE_SERVER(e));
     entry = GQ_BROWSER_NODE_SERVER(e);

     if (!entry->once_expanded) {
/*	  printf("expanding %s\n", entry->server->name); */

	  gq_tree_remove_children (ctree, node);
	  entry->once_expanded = 1;

	  suffixes = get_suffixes(error_context, entry->server);

	  gtk_clist_freeze(GTK_CLIST(ctree));

	  for (next = suffixes ; next ; next = g_list_next(next) ) {
	       add_suffix(entry, ctree, node, next->data);
	       g_free(next->data);
	       next->data = NULL;
	  }

	  gtk_clist_thaw(GTK_CLIST(ctree));

	  g_list_free(suffixes);
     }
}
static void dump_server(GtkWidget *widget, GqTab *tab)
{
     GQTreeWidget *ctree;
     GQTreeWidgetNode *node;
     GqBrowserNode *e;
     GqServer *server;
     GList *bases = NULL;
     GList *to_export = NULL, *I;
     struct dn_on_server *dos;
     int error_context;

     ctree = GQ_TAB_BROWSE(tab)->ctreeroot;
     node = GQ_TAB_BROWSE(tab)->tree_row_popped_up;
     e = GQ_BROWSER_NODE(gq_tree_get_node_data (ctree, node));

     g_assert(GQ_IS_BROWSER_NODE_SERVER(e));

     server = server_from_node(ctree, node);

     if (e == NULL || server == NULL)
	  return;

     error_context = error_new_context(_("Exporting server to LDIF"),
				       tab->win->mainwin);

     bases = get_suffixes(error_context, GQ_BROWSER_NODE_SERVER(e)->server);

     /* turn suffixes list into a list of dn_on_server objects
	(impedance match) */
     for (I = g_list_first(bases) ; I ; I = g_list_next(I) ) {
	  dos = new_dn_on_server(I->data, server);
	  dos->flags = LDAP_SCOPE_SUBTREE; /* default is LDAP_SCOPE_BASE */
	  to_export = g_list_append(to_export, dos);
	  g_free(I->data);
	  I->data = NULL;
     }
     g_list_free(bases);

     export_many(error_context, tab->win->mainwin, to_export);

     error_flush(error_context);
}
Ejemplo n.º 4
0
bool path_slicert::depends_lhs(
    const exprt &expr,
    string_sett &dependencies)
{
    string_sett suffixes;
    get_suffixes("", expr.type(), suffixes);

    string_sett new_dependencies;

    bool result=
        depends_lhs_rec(
            expr,
            suffixes, // R
            suffixes, // W
            dependencies,
            new_dependencies);

    if(result)
        dependencies.insert(
            new_dependencies.begin(),
            new_dependencies.end());

    return result;
}