c->min = min;
c->max = max;
+ c->user_data = NULL;
+ c->free_func = NULL;
return (c);
} /* sn_comparator_t *sn_comparator_create */
void sn_comparator_destroy (sn_comparator_t *c)
{
+ if (c->free_func != NULL)
+ c->free_func (c->user_data);
+
if (c != NULL)
free (c);
} /* void sn_comparator_destroy */
}
} /* void sn_comparator_swap */
-int sn_comparator_compare (const void *v0, const void *v1)
+int sn_comparator_compare (const sn_comparator_t *c0,
+ const sn_comparator_t *c1)
{
- sn_comparator_t *c0 = (sn_comparator_t *) v0;
- sn_comparator_t *c1 = (sn_comparator_t *) v1;
-
if (SN_COMP_LEFT (c0) < SN_COMP_LEFT (c1))
return (-1);
else if (SN_COMP_LEFT (c0) > SN_COMP_LEFT (c1))