/* cloneEdge: * Make a copy of e in e's graph but using ct and ch as nodes */ static edge_t *cloneEdge(edge_t * e, node_t * ct, node_t * ch) { graph_t *g = ct->graph; edge_t *ce = agedge(g, ct, ch); agcopyattr(e, ce); return ce; }
/* cloneEdge: * Make a copy of e in e's graph but using ct and ch as nodes */ static edge_t *cloneEdge(edge_t * e, node_t * ct, node_t * ch) { graph_t *g = agraphof(ct); edge_t *ce = agedge(g, ct, ch,NULL,1); agbindrec(ce, "Agedgeinfo_t", sizeof(Agedgeinfo_t), TRUE); agcopyattr(e, ce); return ce; }
/* addRevEdge: * Add a reversed version of e. The new edge has the same key. * We also copy the attributes, reversing the roles of head and * tail ports. * This assumes we've already checked that such an edge does not exist. */ static void addRevEdge(Agraph_t * g, Agedge_t * e) { Agsym_t* sym; Agedge_t* f = agedge (g, aghead(e), agtail(e), agnameof(e), 1); agcopyattr (e, f); num_rev++; sym = agattr (g, AGEDGE, TAILPORT_ID, 0); if (sym) agsafeset (f, HEADPORT_ID, agxget (e, sym), ""); sym = agattr (g, AGEDGE, HEADPORT_ID, 0); if (sym) agsafeset (f, TAILPORT_ID, agxget (e, sym), ""); }