+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) /* {{{ */
+{
+ uint64_t hash;
+ int i;
+
+ if (s == NULL)
+ return (0);
+
+ 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);
+} /* }}} uint64_t sn_stage_get_hashval */
+
+/* vim: set shiftwidth=2 softtabstop=2 expandtab fdm=marker : */