63 node_stack_push_back(sp, np);
68 if (node_stack_is_empty(sp)) {
72 return node_stack_pop_back(sp);
86 while ((n =
pop(stk))) {
91 for (
size_t c = 0; c <
sizeof(vec) /
sizeof(vec[0]); ++c) {
92 if (vec[c].list && vec[c].size != 0) {
93 for (
size_t i = vec[c].size - 1; i !=
SIZE_MAX; i--) {
95 if ((other =
aghead(e)) == n)
109 node_stack_t stk = {0};
116 if (pass > 0 && (subg =
ND_clust(v)))
126 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)