]> git.ozlabs.org Git - ccan/blobdiff - ccan/agar/agar.h
aga,agar: Rename aga_dijkstra_all_paths()
[ccan] / ccan / agar / agar.h
index d63615add7e9d4e53e90f52a441b9b8bb54ed5a6..274c9cc1f9a308136bfd982612c519c0412a0d91 100644 (file)
@@ -31,6 +31,9 @@ struct agar_graph {
        agar_next_edge_fn next_edge;
 };
 
        agar_next_edge_fn next_edge;
 };
 
+#define AGAR_INIT_GRAPH(fe, ne, ei) \
+       { (ei), (fe), (ne), }
+
 void agar_init_graph(struct agar_graph *gr,
                     agar_first_edge_fn first_edge,
                     agar_next_edge_fn next_edge,
 void agar_init_graph(struct agar_graph *gr,
                     agar_first_edge_fn first_edge,
                     agar_next_edge_fn next_edge,
@@ -71,4 +74,16 @@ bool agar_bfs_explore(struct agar_state *sr, const void *nr,
 #define agar_bfs(_nr, _sr, _startr)                                    \
        for ((_nr) = (_startr); agar_bfs_explore((_sr), (_nr), &(_nr)); )
 
 #define agar_bfs(_nr, _sr, _startr)                                    \
        for ((_nr) = (_startr); agar_bfs_explore((_sr), (_nr), &(_nr)); )
 
+/*
+ * Dijkstra's algorithm
+ */
+
+struct agar_state *agar_dijkstra_new(void *ctx, struct agar_graph *gr,
+                                    const void *nr);
+bool agar_dijkstra_step(struct agar_state *sr, const void **nextr);
+bool agar_dijkstra_path(struct agar_state *sr, const void *destr,
+                       aga_icost_t *total_cost,
+                       const void **prevr, const void **prevedge);
+void agar_dijkstra_complete(struct agar_state *sr);
+
 #endif /* CCAN_AGAR_H */
 #endif /* CCAN_AGAR_H */