61static void push(node_stack_t *sp,
node_t *np) {
87 while ((n =
pop(stk))) {
92 for (
size_t c = 0; c <
sizeof(vec) /
sizeof(vec[0]); ++c) {
93 if (vec[c].list && vec[c].size != 0) {
94 for (
size_t i = vec[c].size - 1; i !=
SIZE_MAX; i--) {
96 if ((other =
aghead(e)) == n)
110 node_stack_t stk = {0};
117 if (pass > 0 && (subg =
ND_clust(v)))
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 node_t * Last_node
static gstack_t * push(gstack_t *s, Agraph_t *subg)
Agnode_t * agnxtnode(Agraph_t *g, Agnode_t *n)
Agnode_t * agfstnode(Agraph_t *g)
type-generic dynamically expanding list
#define LIST_POP_BACK(list)
#define LIST_IS_EMPTY(list)
#define LIST_PUSH_BACK(list, item)