#include <stdlib.h>
#include <string.h>
#ifdef HAVE_UNISTD_H
-#include <unistd.h>
+#include <unistd.h>
#endif
-#ifdef USE_CGRAPH
#include "cgraph.h"
#define degreeOf(n,I,O) (agdegree(n->root, n, I, O))
-#else
-#include "agraph.h"
-#define degreeOf(n,I,O) (agdegree(n, I, O))
-#endif
#include "ingraphs.h"
#ifdef HAVE_GETOPT_H
m_ix = bindedgeattr(g, "minlen");
s_ix = bindedgeattr(g, "style");
-#ifdef USE_CGRAPH
for (n = agfstnode(g); n; n = agnxtnode(g, n)) {
-#else
- for (n = agfstnode(g); n; n = agnxtnode(n)) {
-#endif
d = degreeOf(n, TRUE, TRUE);
if (d == 0) {
if (ChainLimit < 1)
continue;
if (ChainNode) {
-#ifdef USE_CGRAPH
e = agedge(g, ChainNode, n, "", TRUE);
-#else
- e = agedge(ChainNode, n, "", TRUE);
-#endif
agxset(e, s_ix, "invis");
ChainSize++;
if (ChainSize < ChainLimit)
if (MaxMinlen < 1)
continue;
cnt = 0;
-#ifdef USE_CGRAPH
for (e = agfstin(g, n); e; e = agnxtin(g, e)) {
-#else
- for (e = agfstin(n); e; e = agnxtin(e)) {
-#endif
if (isleaf(agtail(e))) {
str = agxget(e, m_ix);
if (str[0] == 0) {
}
cnt = 0;
-#ifdef USE_CGRAPH
for (e = agfstout(g, n); e; e = agnxtout(g, e)) {
-#else
- for (e = agfstout(n); e; e = agnxtout(e)) {
-#endif
if (isleaf(e->node) || (Do_fans && ischainnode(e->node))) {
str = agxget(e, m_ix);
if (str[0] == 0)
#include "compat_getopt.h"
#endif
-#ifdef USE_CGRAPH
#include "cgraph.h"
-#else
-#include "agraph.h"
-#endif
#include "ingraphs.h"
-
#include "generic_list.h"
/* structure to hold an attribute specified on the commandline */
} else {
MARK(node); /* Avoid cycles */
/* Iterate over all outgoing edges */
-#ifdef USE_CGRAPH
for (edge = agfstout(graph, node); edge; edge = nexte) {
nexte = agnxtout(graph, edge);
if (aghead(edge) != node) { /* non-loop edges */
agdelete(graph, edge);
}
}
-#else
- for (edge = agfstout(node); edge; edge = nexte) {
- nexte = agnxtout(edge);
- if (aghead(edge) != node) { /* non-loop edges */
- if (verbose == 1)
- fprintf(stderr, "Processing descendant: %s\n",
- agnameof(aghead(edge)));
- remove_child(graph, aghead(edge));
- agdelete(graph, edge);
- }
- }
-#endif
UNMARK(node); /* Unmark so that it can be removed in later passes */
/* Change attribute (e.g. border style) to show that node has been pruneed */
MARK(node);
/* Skip nodes with more than one parent */
-#ifdef USE_CGRAPH
edge = agfstin(graph, node);
if (edge && (agnxtin(graph, edge) != NULL)) {
-#else
- edge = agfstin(node);
- if (edge && (agnxtin(edge) != NULL)) {
-#endif
UNMARK(node);
return;
}
/* recursively remove children */
-#ifdef USE_CGRAPH
for (edge = agfstout(graph, node); edge; edge = nexte) {
nexte = agnxtout(graph, edge);
if (aghead(edge) != node) {
}
agdelnode(graph, node);
-#else
- for (edge = agfstout(node); edge; edge = nexte) {
- nexte = agnxtout(edge);
- if (aghead(edge) != node) {
- if (verbose)
- fprintf(stderr, "Processing descendant: %s\n",
- agnameof(aghead(edge)));
- remove_child(graph, aghead(edge));
- agdeledge(edge);
- }
- }
-
- agdelnode(node);
-#endif
return;
}