X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Faga%2Faga.h;h=28fa539947146965068cbc3d19b37cc0a75f2d36;hb=22a03695fda586529bb1bba1206f2286f8658a7d;hp=7d6016ff70606765145fa9f90be5014ba918c757;hpb=be32f4df1263ad0d323d6d401f037a37a19d580f;p=ccan diff --git a/ccan/aga/aga.h b/ccan/aga/aga.h index 7d6016ff..28fa5399 100644 --- a/ccan/aga/aga.h +++ b/ccan/aga/aga.h @@ -107,13 +107,13 @@ * * - Errors are cleared on aga_finish(). */ - #include "config.h" #include #include #include #include +#include struct aga_graph; struct aga_node; @@ -145,6 +145,10 @@ struct aga_node { struct lstack_link parent; const void *edge; } dfs; + struct { + struct lqueue_link next; + const void *edge; + } bfs; } u; }; @@ -216,4 +220,15 @@ struct aga_node *aga_dfs_explore(struct aga_graph *g, struct aga_node *n); #define aga_dfs(_n, _g, _start) \ for ((_n) = (_start); ((_n) = aga_dfs_explore((_g), (_n))) != NULL; ) + +/* + * Breadth first search + */ + +int aga_bfs_start(struct aga_graph *g); +struct aga_node *aga_bfs_explore(struct aga_graph *g, struct aga_node *n); + +#define aga_bfs(_n, _g, _start) \ + for ((_n) = (_start) ; ((_n) = aga_bfs_explore((_g), (_n))) != NULL; ) + #endif /* CCAN_AGA_H */