31 dot_init_subg(subg, droot);
53 char *tailgroup, *headgroup;
61 if (tailgroup[0] && (tailgroup == headgroup)) {
89 static void free_edge_list(
elist L)
94 for (i = 0; i < L.
size; i++) {
102 dot_cleanup_node(
node_t * n)
116 static void free_virtual_edge_list(
node_t * n)
121 for (i =
ND_in(n).size - 1; i >= 0; i--) {
122 e =
ND_in(n).list[i];
127 for (i =
ND_out(n).size - 1; i >= 0; i--) {
135 static void free_virtual_node_list(
node_t * vn)
141 free_virtual_edge_list(vn);
158 dot_cleanup_graph(subg);
185 free_virtual_node_list(
GD_nlist(g));
192 dot_cleanup_graph(g);
214 fprintf (stderr,
"[%d] :", i);
215 for (j = 0; j < rank[i].
n; j++) {
219 fprintf (stderr,
" %x", u);
221 fprintf (stderr,
" %s",
agnameof(u));
224 fprintf (stderr,
"\n");
226 fprintf (stderr,
"count %d rank count = %d\n", fastn(g), rcnt);
238 for (j = 0; j <
GD_rank(g)[rk].n; j++) {
241 for (j++; j <
GD_rank(g)[rk].n; j++) {
267 remove_from_rank (g, n);
268 dot_cleanup_node (n);
275 #define ag_xset(x,a,v) agxset(x,a,v)
276 #define agnodeattr(g,n,v) agattr(g,AGNODE,n,v)
279 attach_phase_attrs (
Agraph_t * g,
int maxphase)
288 sprintf(buf,
"%d",
ND_rank(n));
313 attach_phase_attrs (g, 1);
317 agerr(
AGWARN,
"dot does not support the aspect attribute for disconnected graphs or graphs with clusters\n");
323 attach_phase_attrs (g, 2);
328 attach_phase_attrs (g, 2);
408 for (j = 1; j <= nclust; j++) {
425 int j, i, nclust = 0;
429 for (i = 0; i < ncc; i++)
435 for (i = 0; i < ncc; i++) {
459 if ((mode ==
l_undef) && (Pack < 0)) {
480 for (i = 0; i < ncc; i++) {
488 copyClusterInfo (ncc, ccs, g);
498 for (i = 0; i < ncc; i++) {
500 dot_cleanup_graph(ccs[i]);
void dotneato_postprocess(Agraph_t *g)
void free_label(textlabel_t *p)
void delete_fast_node(Agraph_t *, Agnode_t *)
#define agnodeattr(g, n, v)
CGRAPH_API int agdelnode(Agraph_t *g, Agnode_t *arg_n)
void dot_sameports(Agraph_t *)
CGRAPH_API long agdelsubg(Agraph_t *g, Agraph_t *sub)
void dot_splines(Agraph_t *)
void common_init_node(node_t *n)
CGRAPH_API int agdelete(Agraph_t *g, void *obj)
#define alloc_elist(n, L)
int agerr(agerrlevel_t level, const char *fmt,...)
void delete_fast_edge(Agedge_t *)
void gv_cleanup_edge(Agedge_t *e)
Agraph_t ** cccomps(Agraph_t *g, int *ncc, char *pfx)
CGRAPH_API Agraph_t * agfstsubg(Agraph_t *g)
pack_mode getPackInfo(Agraph_t *g, pack_mode dflt, int dfltMargin, pack_info *pinfo)
CGRAPH_API Agraph_t * agroot(void *obj)
CGRAPH_API Agedge_t * agfstout(Agraph_t *g, Agnode_t *n)
#define PS2INCH(a_points)
char * agget(void *obj, char *name)
CGRAPH_API Agraph_t * agraphof(void *obj)
CGRAPH_API Agraph_t * agnxtsubg(Agraph_t *subg)
CGRAPH_API Agnode_t * agtail(Agedge_t *e)
CGRAPH_API Agraph_t * agsubg(Agraph_t *g, char *name, int cflag)
int rank(graph_t *g, int balance, int maxiter)
CGRAPH_API Agnode_t * agnxtnode(Agraph_t *g, Agnode_t *n)
CGRAPH_API Agnode_t * aghead(Agedge_t *e)
EXTERN Agsym_t * E_showboxes
pack_mode getPackModeInfo(Agraph_t *g, pack_mode dflt, pack_info *pinfo)
CGRAPH_API char * agnameof(void *)
#define INCH2PS(a_inches)
void dot_rank(Agraph_t *, aspect_t *)
CGRAPH_API Agnode_t * agfstnode(Agraph_t *g)
int late_int(void *obj, attrsym_t *attr, int def, int low)
EXTERN Agsym_t * E_minlen
Agraph_t * dot_root(void *p)
int packSubgraphs(int ng, Agraph_t **gs, Agraph_t *root, pack_info *info)
real cg(Operator Ax, Operator precond, int n, int dim, real *x0, real *rhs, real tol, int maxit, int *flag)
void dot_cleanup(graph_t *g)
CGRAPH_API int agdelrec(void *obj, char *name)
#define agfindgraphattr(g, a)
EXTERN Agsym_t * E_weight
void dot_init_node_edge(graph_t *g)
int getPack(Agraph_t *g, int not_def, int dflt)
void dot_layout(Agraph_t *g)
CGRAPH_API int agnnodes(Agraph_t *g)
void dot_compoundEdges(graph_t *g)
CGRAPH_API void * agbindrec(void *obj, char *name, unsigned int size, int move_to_front)
int common_init_edge(edge_t *e)
void setEdgeType(graph_t *g, int dflt)
void gv_nodesize(node_t *n, boolean flip)
char * late_string(void *obj, attrsym_t *attr, char *def)
CGRAPH_API Agedge_t * agnxtout(Agraph_t *g, Agedge_t *e)
void dot_position(Agraph_t *, aspect_t *)
aspect_t * setAspect(Agraph_t *g, aspect_t *adata)
Agraph_t * mapClust(Agraph_t *cl)
void dot_mincross(Agraph_t *, int)
int nonconstraint_edge(edge_t *e)