X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fsorter%2Fs-fixint.h;h=9787a682010b1a8c88659acd4eb4543a6daca8bc;hb=7cf300f543b5023ad46a909ed6fde0feba5d1acd;hp=6eac13bb49780fc5c78c5d8daa4796d94fcc7ee6;hpb=0ce1209ffd78ede3a5d353393e281cc6a7995cd3;p=libucw.git diff --git a/lib/sorter/s-fixint.h b/lib/sorter/s-fixint.h index 6eac13bb..9787a682 100644 --- a/lib/sorter/s-fixint.h +++ b/lib/sorter/s-fixint.h @@ -12,7 +12,12 @@ #define ASORT_PREFIX(x) SORT_PREFIX(array_##x) #define ASORT_KEY_TYPE P(key) #define ASORT_LT(x,y) (P(compare)(&(x), &(y)) < 0) -#define ASORT_PAGE_ALIGNED +#ifdef SORT_INTERNAL_RADIX +# define ASORT_HASH(x) P(hash)(&(x)) +# ifdef SORT_LONG_HASH +# define ASORT_LONG_HASH +# endif +#endif #include "lib/sorter/array.h" /* @@ -30,7 +35,7 @@ static size_t P(internal_workspace)(void) #ifdef SORT_UNIFY workspace = sizeof(P(key) *); #endif -#ifdef SORT_HASH_BITS // FIXME: Another switch? +#ifdef SORT_INTERNAL_RADIX workspace = MAX(workspace, sizeof(P(key))); #endif return workspace; @@ -67,11 +72,9 @@ static int P(internal)(struct sort_context *ctx, struct sort_bucket *bin, struct stk_fsize(n * P(internal_workspace)())); timestamp_t timer; init_timer(&timer); - buf = P(array_sort)(buf, n, -#ifdef SORT_HASH_BITS - workspace, bin->hash_bits -#else - NULL, 0 + buf = P(array_sort)(buf, n +#ifdef SORT_INTERNAL_RADIX + , workspace, bin->hash_bits #endif ); ctx->total_int_time += get_timer(&timer);