63 node_stack_push_back(sp, np);
68 if (node_stack_is_empty(sp)) {
72 return node_stack_pop_back(sp);
91 while ((n =
pop(stk))) {
99 for (c = 3; c >= 0; c--) {
100 if (vec[c].list && vec[c].size != 0) {
102 for (i = vec[c].size - 1, ep = vec[c].list + i; i !=
SIZE_MAX; i--, ep--) {
104 if ((other =
aghead(e)) == n)
118 node_stack_t stk = {0};
125 if ((pass > 0) && (subg =
ND_clust(v)))
135 node_stack_free(&stk);
Memory allocation wrappers that exit on failure.
static void * gv_recalloc(void *ptr, size_t old_nmemb, size_t new_nmemb, size_t size)
node_t * UF_find(node_t *n)
static void begin_component(graph_t *g)
void decompose(graph_t *g, int pass)
static void add_to_component(graph_t *g, node_t *n)
static void end_component(graph_t *g)
static void search_component(node_stack_t *stk, graph_t *g, node_t *n)
static void push(node_stack_t *sp, node_t *np)
static node_t * Last_node
Agnode_t * agnxtnode(Agraph_t *g, Agnode_t *n)
Agnode_t * agfstnode(Agraph_t *g)
#define DEFINE_LIST(name, type)