]> git.street.me.uk Git - andy/viking.git/commitdiff
Add function to return counts of available routing engines.
authorRob Norris <rw_norris@hotmail.com>
Sun, 15 Jan 2017 19:34:46 +0000 (19:34 +0000)
committerRob Norris <rw_norris@hotmail.com>
Sun, 22 Jan 2017 18:24:23 +0000 (18:24 +0000)
src/vikrouting.c
src/vikrouting.h

index 802260949f9b4a61ed75dc26970406617ebd0ce5..79e96e0ae13347842f7abfcf69882c8e264b4185 100644 (file)
@@ -305,3 +305,32 @@ vik_routing_ui_selector_get_nth (GtkWidget *combo, int pos)
 
   return engine;
 }
+
+// For simplicity a variable with visibility to multiple functions
+static guint engine_count = 0;
+
+static void
+count_engine_directions (gpointer data, gpointer user_data)
+{
+  VikRoutingEngine *engine = (VikRoutingEngine*) data;
+  if ( vik_routing_engine_supports_direction ( engine ) )
+    engine_count++;
+}
+
+/**
+ * vik_routing_number_of_engines:
+ *
+ * Returns: the number of engines available
+ */
+guint vik_routing_number_of_engines ( VikRoutingMethodType method )
+{
+  engine_count = 0;
+  if ( routing_engine_list ) {
+    if ( method == VIK_ROUTING_METHOD_DIRECTIONS )
+      vik_routing_foreach_engine ( count_engine_directions, NULL );
+    else
+      // ATM Every engine supports Lat/Lon requests
+      engine_count = g_list_length ( routing_engine_list );
+  }
+  return engine_count;
+}
index 870d1ecf4aec526fd0332beb4d19cf359d8b27ea..7ba4d8379d60f3589a5587acc444b751ecd4b6b3 100644 (file)
@@ -36,6 +36,13 @@ void vik_routing_register( VikRoutingEngine *engine );
 void vik_routing_unregister_all ();
 void vik_routing_foreach_engine ( GFunc func, gpointer user_data );
 
+/* How many are available ? */
+typedef enum {
+  VIK_ROUTING_METHOD_DIRECTIONS,
+  VIK_ROUTING_METHOD_LATLON
+} VikRoutingMethodType;
+guint vik_routing_number_of_engines ( VikRoutingMethodType method );
+
 /* UI */
 typedef gboolean (*Predicate)( gpointer data, gpointer user_data );
 GtkWidget *vik_routing_ui_selector_new ( Predicate func, gpointer user_data );