#ifndef DIJKSTRASEARCH_H #define DIJKSTRASEARCH_H #include "dijkstragraph.h" #define DIJKSTRA_SEARCH_MAX_ITERATIONS 5000 #define DIJKSTRA_ACCESS_PENALTY 300.0 struct dijkstra_state { struct dijkstra_path *cheapest_path; dijkstra_cost cost; int visited; }; struct dijkstra_search { struct dijkstra_solver *solver; struct dijkstra_state **states; unsigned int node_count; struct dijkstra_node *start; GList *active_nodes; }; struct dijkstra_search *dijkstra_search_new(struct dijkstra_solver *solver); void dijkstra_search_free(struct dijkstra_search *search); void dijkstra_search_set_start(struct dijkstra_search *search, struct dijkstra_node *start); int dijkstra_search_find_path(struct dijkstra_search *search, struct dijkstra_node *destination); GList *dijkstra_search_get_route(struct dijkstra_search *search, struct dijkstra_node *destination); /* Debugging functions */ void dijkstra_print_path(struct dijkstra_search *search, struct dijkstra_node *destination); void dijkstra_print_nodes(struct dijkstra_search *search); int dijkstra_search_route_to_geojson(struct dijkstra_search *search, GList *route, char **buf); #endif // DIJKSTRASEARCH_H