static void _dynar_map(const xbt_dynar_t dynar, void_f_pvoid_t const op)
{
- char elm[SIZEOF_MAX];
+ char *const data = (char *) dynar->data;
+ const unsigned long elmsize = dynar->elmsize;
const unsigned long used = dynar->used;
- unsigned long i = 0;
+ unsigned long i;
for (i = 0; i < used; i++) {
- _xbt_dynar_get_elm(elm, dynar, i);
+ char* elm = (char*) data + i * elmsize;
(*op) (elm);
}
}
_dynar_lock(dynar);
+#ifdef HAVE_MERGESORT
+ mergesort(dynar->data, dynar->used, dynar->elmsize, compar_fn);
+#else
qsort(dynar->data, dynar->used, dynar->elmsize, compar_fn);
-
+#endif
_dynar_unlock(dynar);
}