57 char *tailgroup, *headgroup;
65 if (tailgroup[0] && (tailgroup == headgroup)) {
76 if (showboxes > UCHAR_MAX) {
77 showboxes = UCHAR_MAX;
118 e =
ND_in(n).list[i];
158 if (!
agbindrec(g,
"Agraphinfo_t", 0,
true))
return;
211 fprintf (stderr,
"[%d] :", i);
212 for (j = 0; j <
rank[i].n; j++) {
216 fprintf (stderr,
" %x", u);
218 fprintf (stderr,
" %s",
agnameof(u));
221 fprintf (stderr,
"\n");
223 fprintf (stderr,
"count %d rank count = %d\n", fastn(g), rcnt);
235 for (j = 0; j <
GD_rank(g)[rk].n; j++) {
238 for (j++; j <
GD_rank(g)[rk].n; j++) {
272#define agnodeattr(g,n,v) agattr(g,AGNODE,n,v)
393 for (j = 1; j <= nclust; j++) {
412 for (
size_t i = 0; i < ncc; i++)
418 for (
size_t i = 0; i < ncc; i++) {
463 for (
size_t i = 0; i < ncc; i++) {
481 for (
size_t i = 0; i < ncc; i++) {
static void agxbfree(agxbuf *xb)
free any malloced resources
static int agxbprint(agxbuf *xb, const char *fmt,...)
Printf-style output to an agxbuf.
static WUR char * agxbuse(agxbuf *xb)
Memory allocation wrappers that exit on failure.
static void * gv_calloc(size_t nmemb, size_t size)
static void * gv_alloc(size_t size)
void setAspect(Agraph_t *g)
bool nonconstraint_edge(edge_t *e)
bool mapbool(const char *p)
void setEdgeType(graph_t *g, int defaultValue)
char * late_string(void *obj, attrsym_t *attr, char *defaultValue)
int late_int(void *obj, attrsym_t *attr, int defaultValue, int minimum)
void common_init_node(node_t *n)
void common_init_edge(edge_t *e)
void gv_nodesize(node_t *n, bool flip)
void dot_compoundEdges(graph_t *g)
static void dot_init_subg(graph_t *g, graph_t *droot)
static void dotLayout(Agraph_t *g)
static void dot_cleanup_node(node_t *n)
Agraph_t * dot_root(void *p)
static void free_virtual_edge_list(node_t *n)
static void attach_phase_attrs(Agraph_t *g, int maxphase)
static void removeFill(Agraph_t *g)
static void dot_init_node(node_t *n)
static void copyClusterInfo(size_t ncc, Agraph_t **ccs, Agraph_t *root)
void dot_layout(Agraph_t *g)
void dot_init_node_edge(graph_t *g)
static void dot_cleanup_graph(graph_t *g)
static void resetCoord(Agraph_t *g)
static void free_virtual_node_list(node_t *vn)
static void doDot(Agraph_t *g)
void dot_cleanup(graph_t *g)
static void initSubg(Agraph_t *sg, Agraph_t *g)
static void copyCluster(Agraph_t *scl, Agraph_t *cl)
#define agnodeattr(g, n, v)
static void attachPos(Agraph_t *g)
static void dot_init_edge(edge_t *e)
static void remove_from_rank(Agraph_t *g, Agnode_t *n)
void delete_fast_node(Agraph_t *, Agnode_t *)
void dot_mincross(Agraph_t *)
void dot_sameports(Agraph_t *)
void dot_splines(Agraph_t *)
void dot_rank(Agraph_t *)
void delete_fast_edge(Agedge_t *)
void dot_position(Agraph_t *)
#define PS2INCH(a_points)
#define INCH2PS(a_inches)
static int cnt(Dict_t *d, Dtlink_t **set)
int agnnodes(Agraph_t *g)
int agxset(void *obj, Agsym_t *sym, const char *value)
char * agget(void *obj, char *name)
Agedge_t * agfstout(Agraph_t *g, Agnode_t *n)
Agedge_t * agnxtout(Agraph_t *g, Agedge_t *e)
#define agfindgraphattr(g, a)
Agnode_t * agnxtnode(Agraph_t *g, Agnode_t *n)
Agnode_t * agfstnode(Agraph_t *g)
int agdelnode(Agraph_t *g, Agnode_t *arg_n)
removes a node from a graph or subgraph.
Agraph_t * agraphof(void *obj)
char * agnameof(void *)
returns a string descriptor for the object.
int agdelete(Agraph_t *g, void *obj)
deletes object. Equivalent to agclose, agdelnode, and agdeledge for obj being a graph,...
Agraph_t * agroot(void *obj)
void * agbindrec(void *obj, const char *name, unsigned int recsize, int move_to_front)
attaches a new record of the given size to the object
int agdelrec(void *obj, const char *name)
deletes a named record from one object
Agraph_t * agfstsubg(Agraph_t *g)
Agraph_t * agnxtsubg(Agraph_t *subg)
Agraph_t * agsubg(Agraph_t *g, char *name, int cflag)
int agdelsubg(Agraph_t *g, Agraph_t *sub)
void free_label(textlabel_t *p)
Agraph_t ** cccomps(Agraph_t *g, size_t *ncc, char *pfx)
Agraph_t * mapClust(Agraph_t *cl)
int rank(graph_t *g, int balance, int maxiter)
pack_mode getPackModeInfo(Agraph_t *g, pack_mode dflt, pack_info *pinfo)
int packSubgraphs(size_t ng, Agraph_t **gs, Agraph_t *root, pack_info *info)
int getPack(Agraph_t *g, int not_def, int dflt)
pack_mode getPackInfo(Agraph_t *g, pack_mode dflt, int dfltMargin, pack_info *pinfo)
support for connected components
void dotneato_postprocess(Agraph_t *g)
void gv_cleanup_edge(Agedge_t *e)
static double cg(SparseMatrix A, const double *precond, int n, int dim, double *x0, double *rhs, double tol, double maxit)
static bool streq(const char *a, const char *b)
are a and b equal?
Agrec_t * data
stores programmer-defined data, access with AGDATA
bool doSplines
use splines in constructing graph shape
#define alloc_elist(n, L)