X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Faga%2Fdfs.c;h=b8714686e87bde3e8da4f4c901245a06344c271d;hb=8967bc9e1bdd68f2dc33e9d80bbf0f944fb7e772;hp=638481c539cb84448856982066d5dfd703be1d19;hpb=be32f4df1263ad0d323d6d401f037a37a19d580f;p=ccan diff --git a/ccan/aga/dfs.c b/ccan/aga/dfs.c index 638481c5..b8714686 100644 --- a/ccan/aga/dfs.c +++ b/ccan/aga/dfs.c @@ -12,25 +12,27 @@ * Depth first search */ -static bool dfs_push(struct aga_graph *g, struct lstack *stack, +typedef LSTACK(struct aga_node, u.dfs.parent) dfs_stack; + +static bool dfs_push(struct aga_graph *g, dfs_stack *stack, struct aga_node *n) { if (!aga_update_node(g, n)) return false; - lstack_push(stack, n, u.dfs.parent); + lstack_push(stack, n); n->u.dfs.edge = aga_first_edge(g, n); return true; } -static void dfs_pop(struct lstack *stack) +static void dfs_pop(dfs_stack *stack) { - lstack_pop(stack, struct aga_node, u.dfs.parent); + (void) lstack_pop(stack); } -static struct aga_node *dfs_top(struct lstack *stack) +static struct aga_node *dfs_top(dfs_stack *stack) { - return lstack_top(stack, struct aga_node, u.dfs.parent); + return lstack_top(stack); } int aga_dfs_start(struct aga_graph *g) @@ -46,7 +48,7 @@ int aga_dfs_start(struct aga_graph *g) struct aga_node *aga_dfs_explore(struct aga_graph *g, struct aga_node *n) { - LSTACK(stack); + dfs_stack stack = LSTACK_INIT; if (!aga_check_state(g)) return NULL; @@ -57,7 +59,7 @@ struct aga_node *aga_dfs_explore(struct aga_graph *g, struct aga_node *n) if (dfs_push(g, &stack, n)) return n; - lstack_init_from_top(&stack, n, u.dfs.parent); + lstack_init_from_top(&stack, n); while ((n = dfs_top(&stack))) { const void *e = n->u.dfs.edge;