84 for (i = lpos + 1; i <= rpos; i++) {
102 for (k = 0; (f =
ND_in(
left).list[k]); k++)
162 agerrorf(
"rebuild_vlists: lead is null for rank %d\n", r);
166 agerrorf(
"rebuild_vlists: rank lead %s not in order %d of rank %d\n",
173 for (i = 0; i <
GD_rank(g)[r].n; i++) {
207 int c, r, leftpos, rightpos;
213 for (r = 1;
GD_rank(g)[r + 1].n; r++) {
214 for (leftpos = 0; leftpos <
GD_rank(g)[r].n; leftpos++) {
218 for (rightpos = leftpos + 1; rightpos <
GD_rank(g)[r].n;
224 if (rightpos - leftpos > 1)
230 for (leftpos = 0; leftpos <
GD_rank(g)[r].n; leftpos++) {
234 for (rightpos = leftpos + 1; rightpos <
GD_rank(g)[r].n;
240 if (rightpos - leftpos > 1)
247 agerr(
AGPREV,
"concentrate=true may not work correctly.\n");
static int rebuild_vlists(graph_t *g)
static bool bothdowncandidates(node_t *u, node_t *v)
static bool downcandidate(node_t *v)
static bool upcandidate(node_t *v)
static bool bothupcandidates(node_t *u, node_t *v)
static void infuse(graph_t *g, node_t *n)
void dot_concentrate(graph_t *g)
static bool samedir(edge_t *e, edge_t *f)
static void mergevirtual(graph_t *g, int r, int lpos, int rpos, int dir)
Agraph_t * dot_root(void *p)
void delete_fast_node(Agraph_t *, Agnode_t *)
void dot_scan_ranks(graph_t *g)
Agedge_t * virtual_edge(Agnode_t *, Agnode_t *, Agedge_t *)
int portcmp(port p0, port p1)
void delete_fast_edge(Agedge_t *)
void merge_oneway(Agedge_t *, Agedge_t *)
#define ED_conc_opp_flag(e)
Agedge_t * agfstout(Agraph_t *g, Agnode_t *n)
Agedge_t * agnxtout(Agraph_t *g, Agedge_t *e)
void agwarningf(const char *fmt,...)
void agerrorf(const char *fmt,...)
int agerr(agerrlevel_t level, const char *fmt,...)
Agnode_t * agnxtnode(Agraph_t *g, Agnode_t *n)
Agnode_t * agfstnode(Agraph_t *g)
char * agnameof(void *)
returns a string descriptor for the object.
int agcontains(Agraph_t *, void *obj)
returns non-zero if obj is a member of (sub)graph