summaryrefslogtreecommitdiff
path: root/pikul.c
diff options
context:
space:
mode:
Diffstat (limited to 'pikul.c')
-rw-r--r--pikul.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/pikul.c b/pikul.c
index df1662e..2255081 100644
--- a/pikul.c
+++ b/pikul.c
@@ -174,6 +174,21 @@ static int servicecmp(const void *service1, const void *service2)
(*(struct pikul_service * const *)service2)->code);
}
+char **pikul_codes(const char *origin, const char *destination, double weight)
+{
+ char **codes = malloc(sizeof(char *));
+ codes[0] = NULL;
+ struct pikul_services *services = pikul_services(origin, destination, weight);
+ if (!services || !services->length)
+ return codes;
+ codes = realloc(codes, (services->length + 1) * sizeof(char *));
+ size_t i = 0;
+ for (i = 0; i < services->length; i++)
+ codes[i] = services->list[i]->code;
+ codes[i] = NULL;
+ return codes;
+}
+
double pikul_cost(const char *origin, const char *destination, double weight, const char *code)
{
struct pikul_services *services = pikul_services(origin, destination, weight);