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;
return (s);
} /* sn_stage_t *sn_stage_unserialize */
-uint32_t sn_stage_get_hashval (const sn_stage_t *s) /* {{{ */
+int sn_stage_compare (const sn_stage_t *s0, const sn_stage_t *s1) /* {{{ */
+{
+ int status;
+ int i;
+
+ if (s0 == s1)
+ return (0);
+ else if (s0 == NULL)
+ return (-1);
+ else if (s1 == NULL)
+ return (1);
+
+ if (s0->comparators_num < s1->comparators_num)
+ return (-1);
+ else if (s0->comparators_num > s1->comparators_num)
+ return (1);
+
+ for (i = 0; i < s0->comparators_num; i++)
+ {
+ status = sn_comparator_compare (s0->comparators + i, s1->comparators + i);
+ if (status != 0)
+ return (status);
+ }
+
+ return (0);
+} /* }}} int sn_stage_compare */
+
+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 : */