From: erg Date: Wed, 9 Jan 2008 22:36:19 +0000 (+0000) Subject: Commit version of gvpr using the cgraph library. The relevant X-Git-Tag: LAST_LIBGRAPH~32^2~4884 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a266f845c23a1919c3a7649a2fc638552726b2ff;p=graphviz Commit version of gvpr using the cgraph library. The relevant code is wrapped in #ifdef USE_CGRAPH. --- diff --git a/cmd/gvpr/gvpr.c b/cmd/gvpr/gvpr.c index cc2a4f611..1421ece4f 100644 --- a/cmd/gvpr/gvpr.c +++ b/cmd/gvpr/gvpr.c @@ -28,7 +28,11 @@ #include #endif #include +#ifdef USE_CGRAPH +#include +#else #include +#endif #include #include #include @@ -371,7 +375,11 @@ static Agnode_t *nextNode(Gpr_t * state, nodestream * nodes) if (state->tvroot != nodes->oldroot) { np = nodes->oldroot = state->tvroot; } else if (nodes->prev) { +#ifdef USE_CGRAPH + np = nodes->prev = agnxtnode(state->curgraph, nodes->prev); +#else np = nodes->prev = agnxtnode(nodes->prev); +#endif } else { np = nodes->prev = agfstnode(state->curgraph); } @@ -384,8 +392,13 @@ static Agnode_t *nextNode(Gpr_t * state, nodestream * nodes) #define PUSH(x) (((x)->iu.integer)|=2) #define POP(x) (((x)->iu.integer)&=(~2)) +#ifdef USE_CGRAPH +typedef Agedge_t *(*fstedgefn_t) (Agraph_t*, Agnode_t *); +typedef Agedge_t *(*nxttedgefn_t) (Agraph_t*, Agedge_t *, Agnode_t *); +#else typedef Agedge_t *(*fstedgefn_t) (Agnode_t *); typedef Agedge_t *(*nxttedgefn_t) (Agedge_t *, Agnode_t *); +#endif typedef struct { fstedgefn_t fstedge; @@ -403,6 +416,9 @@ static void travBFS(Gpr_t * state, comp_prog * xprog) ndata *nd; Agnode_t *n; Agedge_t *cure; +#ifdef USE_CGRAPH + Agraph_t* g = state->curgraph; +#endif q = mkQueue(); nodes.oldroot = 0; @@ -418,7 +434,11 @@ static void travBFS(Gpr_t * state, comp_prog * xprog) MARK(nd); POP(nd); evalNode(state, xprog, n); +#ifdef USE_CGRAPH + for (cure = agfstedge(g, n); cure; cure = agnxtedge(g, cure, n)) { +#else for (cure = agfstedge(n); cure; cure = agnxtedge(cure, n)) { +#endif nd = nData(cure->node); if (MARKED(nd)) continue; evalEdge(state, xprog, cure); @@ -461,10 +481,17 @@ static void travDFS(Gpr_t * state, comp_prog * xprog, trav_fns * fns) evalNode(state, xprog, n); more = 1; while (more) { +#ifdef USE_CGRAPH + if (cure) + cure = fns->nxtedge(state->curgraph, cure, curn); + else + cure = fns->fstedge(state->curgraph, curn); +#else if (cure) cure = fns->nxtedge(cure, curn); else cure = fns->fstedge(curn); +#endif if (cure) { if (entry == agopp(cure)) continue; @@ -500,8 +527,12 @@ static void travDFS(Gpr_t * state, comp_prog * xprog, trav_fns * fns) static void travNodes(Gpr_t * state, comp_prog * xprog) { Agnode_t *n; - +#ifdef USE_CGRAPH + Agraph_t* g = state->curgraph; + for (n = agfstnode(g); n; n = agnxtnode(g, n)) { +#else for (n = agfstnode(state->curgraph); n; n = agnxtnode(n)) { +#endif evalNode(state, xprog, n); } } @@ -510,9 +541,14 @@ static void travEdges(Gpr_t * state, comp_prog * xprog) { Agnode_t *n; Agedge_t *e; - +#ifdef USE_CGRAPH + Agraph_t* g = state->curgraph; + for (n = agfstnode(g); n; n = agnxtnode(g, n)) { + for (e = agfstout(g, n); e; e = agnxtout(g, e)) { +#else for (n = agfstnode(state->curgraph); n; n = agnxtnode(n)) { for (e = agfstout(n); e; e = agnxtout(e)) { +#endif evalEdge(state, xprog, e); } } @@ -522,11 +558,19 @@ static void travFlat(Gpr_t * state, comp_prog * xprog) { Agnode_t *n; Agedge_t *e; - +#ifdef USE_CGRAPH + Agraph_t* g = state->curgraph; + for (n = agfstnode(g); n; n = agnxtnode(g, n)) { +#else for (n = agfstnode(state->curgraph); n; n = agnxtnode(n)) { +#endif evalNode(state, xprog, n); if (xprog->n_estmts > 0) { +#ifdef USE_CGRAPH + for (e = agfstout(g, n); e; e = agnxtout(g, e)) { +#else for (e = agfstout(n); e; e = agnxtout(e)) { +#endif evalEdge(state, xprog, e); } }