30 #if defined(__MINGW32__) || defined(_MSC_VER)
42 #include "../../common/src/pgr_alloc.hpp"
43 #include "./../../common/src/pgr_types.h"
54 int64_t *start_vidsArr,
55 size_t size_start_vidsArr,
57 size_t size_end_vidsArr,
63 std::ostringstream log;
67 std::deque< Path >paths;
68 log <<
"Inserting vertices into a c++ vector structure\n";
70 s_start_vertices(start_vidsArr, start_vidsArr + size_start_vidsArr);
72 s_end_vertices(end_vidsArr, end_vidsArr + size_end_vidsArr);
74 std::vector< int64_t > start_vertices(s_start_vertices.begin(), s_start_vertices.end());
75 std::vector< int64_t > end_vertices(s_end_vertices.begin(), s_end_vertices.end());
77 log <<
"Working with directed Graph\n";
80 pgr_dijkstra(digraph, paths, start_vertices, end_vertices, only_cost);
82 log <<
"Working with Undirected Graph\n";
85 pgr_dijkstra(undigraph, paths, start_vertices, end_vertices, only_cost);
91 count = count_tuples(paths);
94 (*return_tuples) = NULL;
97 "No paths found between Starting and any of the Ending vertices\n";
98 *err_msg = strdup(log.str().c_str());
102 (*return_tuples) =
pgr_alloc(count, (*return_tuples));
103 log <<
"Converting a set of paths into the tuples\n";
104 (*return_count) = (collapse_paths(return_tuples, paths));
108 *err_msg = strdup(
"OK");
110 *err_msg = strdup(log.str().c_str());
115 log <<
"Caught unknown exception!\n";
116 *err_msg = strdup(log.str().c_str());
void pgr_dijkstra(G &graph, Path &path, int64_t source, int64_t target, bool only_cost=false)
T * pgr_alloc(std::size_t size, T *ptr)
allocates memory
void do_pgr_many_to_many_dijkstra(pgr_edge_t *data_edges, size_t total_tuples, int64_t *start_vidsArr, size_t size_start_vidsArr, int64_t *end_vidsArr, size_t size_end_vidsArr, bool directed, bool only_cost, General_path_element_t **return_tuples, size_t *return_count, char **err_msg)
void graph_insert_data(const T *edges, int64_t count)
Inserts count edges of type T into the graph.