sn_network_get_hashval(): Return a 64bit integer value.
[sort-networks.git] / src / sn_stage.c
index 1b564cc..1a7b2f9 100644 (file)
@@ -320,6 +320,24 @@ int sn_stage_shift (sn_stage_t *s, int sw, int inputs_num)
   return (0);
 } /* int sn_stage_shift */
 
+static int sn_stage_unify__qsort_callback (const void *p0, const void *p1) /* {{{ */
+{
+  return (sn_comparator_compare (p0, p1));
+} /* }}} int sn_stage_unify__qsort_callback */
+
+int sn_stage_unify (sn_stage_t *s) /* {{{ */
+{
+  if (s == NULL)
+    return (EINVAL);
+
+  qsort (s->comparators,
+      (size_t) s->comparators_num,
+      sizeof (*s->comparators),
+      sn_stage_unify__qsort_callback);
+
+  return (0);
+} /* }}} int sn_stage_unify */
+
 int sn_stage_swap (sn_stage_t *s, int con0, int con1)
 {
   int i;
@@ -608,20 +626,20 @@ sn_stage_t *sn_stage_unserialize (char **ret_buffer, size_t *ret_buffer_size)
   return (s);
 } /* sn_stage_t *sn_stage_unserialize */
 
-uint32_t sn_stage_get_hashval (const sn_stage_t *s) /* {{{ */
+uint64_t sn_stage_get_hashval (const sn_stage_t *s) /* {{{ */
 {
-  uint32_t hash;
+  uint64_t hash;
   int i;
 
   if (s == NULL)
     return (0);
 
-  hash = (uint32_t) s->depth;
+  hash = (uint64_t) s->depth;
 
   for (i = 0; i < s->comparators_num; i++)
     hash = (hash * 99991) + sn_comparator_get_hashval (s->comparators + i);
 
   return (hash);
-} /* }}} uint32_t sn_stage_get_hashval */
+} /* }}} uint64_t sn_stage_get_hashval */
 
 /* vim: set shiftwidth=2 softtabstop=2 expandtab fdm=marker : */