static void freeDerivedGraph(graph_t * g, graph_t ** cc) { graph_t *cg; node_t *dn; node_t *dnxt; edge_t *e; while ((cg = *cc++)) { freeGData(cg); agdelrec(cg, "Agraphinfo_t"); } if (PORTS(g)) free(PORTS(g)); freeGData(g); agdelrec(g, "Agraphinfo_t"); for (dn = agfstnode(g); dn; dn = dnxt) { dnxt = agnxtnode(g, dn); for (e = agfstout(g, dn); e; e = agnxtout(g, e)) { free (ED_to_virt(e)); agdelrec(e, "Agedgeinfo_t"); } freeDeriveNode(dn); } agclose(g); }
static void dot_cleanup_node(node_t * n) { free_list(ND_in(n)); free_list(ND_out(n)); free_list(ND_flat_out(n)); free_list(ND_flat_in(n)); free_list(ND_other(n)); free_label(ND_label(n)); free_label(ND_xlabel(n)); if (ND_shape(n)) ND_shape(n)->fns->freefn(n); agdelrec(n, "Agnodeinfo_t"); }
static void dot_cleanup_graph(graph_t * g) { int i; graph_t *subg; for (subg = agfstsubg(g); subg; subg = agnxtsubg(subg)) { dot_cleanup_graph(subg); } if (GD_clust(g)) free (GD_clust(g)); if (GD_rankleader(g)) free (GD_rankleader(g)); free_list(GD_comp(g)); if (GD_rank(g)) { for (i = GD_minrank(g); i <= GD_maxrank(g); i++) free(GD_rank(g)[i].av); if (GD_minrank(g) == -1) free(GD_rank(g)-1); else free(GD_rank(g)); } if (g != agroot(g)) agdelrec(g,"Agraphinfo_t"); }
static void freeDeriveNode(node_t * n) { free(ND_alg(n)); free(ND_pos(n)); agdelrec(n, "Agnodeinfo_t"); }