void deleteEdge(gctx_t *gctx, Agraph_t * g, Agedge_t *e) { char *hndl; hndl = obj2cmd(e); agdelete(gctx->g, e); /* delete edge from root graph */ Tcl_DeleteCommand(gctx->ictx->interp, hndl); }
static void myiddisc_idregister(void *state, int objtype, void *obj) { gctx_t *gctx = (gctx_t *)state; ictx_t *ictx = gctx->ictx; Tcl_Interp *interp = ictx->interp; Tcl_CmdProc *proc = NULL; switch (objtype) { case AGRAPH: proc=graphcmd; break; case AGNODE: proc=nodecmd; break; case AGINEDGE: case AGOUTEDGE: proc=edgecmd; break; } #ifndef TCLOBJ Tcl_CreateCommand(interp, obj2cmd(obj), proc, (ClientData) gctx, (Tcl_CmdDeleteProc *) NULL); #else Tcl_CreateObjCommand(interp, obj2cmd(obj), proc, (ClientData) gctx, (Tcl_CmdDeleteProc *) NULL); #endif }
void deleteNode(gctx_t * gctx, Agraph_t *g, Agnode_t *n) { char *hndl; deleteNodeEdges(gctx, gctx->g, n); /* delete all edges to/from node in root graph */ hndl = obj2cmd(n); agdelete(gctx->g, n); /* delete node from root graph */ Tcl_DeleteCommand(gctx->ictx->interp, hndl); }
void deleteGraph(gctx_t * gctx, Agraph_t *g) { Agraph_t *sg; char *hndl; for (sg = agfstsubg (g); sg; sg = agnxtsubg (sg)) { deleteGraph(gctx, sg); } deleteGraphNodes(gctx, g); hndl = obj2cmd(g); if (g == agroot(g)) { agclose(g); } else { agdelsubg(agroot(g), g); } Tcl_DeleteCommand(gctx->ictx->interp, hndl); }