src/graph_instance.[ch]: Implement "inst_compare".
[collection4.git] / src / graph.c
index 5c143b4..d3a8d6f 100644 (file)
@@ -299,8 +299,10 @@ int graph_add_def (graph_config_t *cfg, graph_def_t *def) /* {{{ */
 
 _Bool graph_matches_ident (graph_config_t *cfg, const graph_ident_t *ident) /* {{{ */
 {
+#if C4_DEBUG
   if ((cfg == NULL) || (ident == NULL))
     return (0);
+#endif
 
   return (ident_matches (cfg->select, ident));
 } /* }}} _Bool graph_matches_ident */
@@ -482,6 +484,26 @@ int graph_compare (graph_config_t *cfg, const graph_ident_t *ident) /* {{{ */
   return (ident_compare (cfg->select, ident));
 } /* }}} int graph_compare */
 
+static int graph_sort_instances_cb (const void *v0, const void *v1) /* {{{ */
+{
+  return (ident_compare (*(graph_ident_t * const *) v0,
+        *(graph_ident_t * const *) v1));
+} /* }}} int graph_sort_instances_cb */
+
+int graph_sort_instances (graph_config_t *cfg) /* {{{ */
+{
+  if (cfg == NULL)
+    return (EINVAL);
+
+  if (cfg->instances_num < 2)
+    return (0);
+
+  qsort (cfg->instances, cfg->instances_num, sizeof (*cfg->instances),
+      graph_sort_instances_cb);
+
+  return (0);
+} /* }}} int graph_sort_instances */
+
 int graph_clear_instances (graph_config_t *cfg) /* {{{ */
 {
   size_t i;