macros to create quicksort implementations
More...
Go to the source code of this file.
|
#define | TOKEN_PASTE(a, b) a##_##b |
|
#define | NAME_COMPOSE(a, b) TOKEN_PASTE(a,b) |
|
#define | XT_SORTFUNC_DECL |
|
#define | XT_SORTFUNC_DECL_UNDEF |
|
#define | XT_SORT_EXTRA_ARGS_DECL |
|
#define | XT_SORT_EXTRA_ARGS_DECL_UNDEF |
|
#define | XT_SORT_EXTRA_ARGS_PASS |
|
#define | XT_SORT_EXTRA_ARGS_PASS_UNDEF |
|
#define | XT_SORT_VECSWAP_EXTRA_ARGS_DECL XT_SORT_EXTRA_ARGS_DECL |
|
#define | XT_SORT_VECSWAP_EXTRA_ARGS_DECL_UNDEF |
|
#define | XT_SORT_VECSWAP_EXTRA_ARGS_PASS XT_SORT_EXTRA_ARGS_PASS |
|
#define | XT_SORT_VECSWAP_EXTRA_ARGS_PASS_UNDEF |
|
#define | XT_SORT_MED3_EXTRA_ARGS_DECL XT_SORT_EXTRA_ARGS_DECL |
|
#define | XT_SORT_MED3_EXTRA_ARGS_DECL_UNDEF |
|
#define | XT_SORT_MED3_EXTRA_ARGS_PASS XT_SORT_EXTRA_ARGS_PASS |
|
#define | XT_SORT_MED3_EXTRA_ARGS_PASS_UNDEF |
|
#define | XT_SORT_EXTRA_ARGS_SWAP(i, j) |
|
#define | XT_SORT_EXTRA_ARGS_SWAP_UNDEF |
|
#define | XT_SORT_EXTRA_ARGS_ADVANCE(adv) |
|
#define | XT_SORT_EXTRA_ARGS_ADVANCE_UNDEF |
|
#define | MED3 NAME_COMPOSE(med3,SORT_TYPE_SUFFIX) |
|
#define | VECSWAP NAME_COMPOSE(vecswap,SORT_TYPE_SUFFIX) |
|
#define | XT_QUICKSORT NAME_COMPOSE(xt_quicksort,SORT_TYPE_SUFFIX) |
|
#define | XT_QUICKSORT_INNER NAME_COMPOSE(xt_qsort_i,SORT_TYPE_SUFFIX) |
|
#define | SWAP(i, j) |
|
#define | MIN(a, b) (((a) < (b)) ? (a) : (b)) |
|
◆ MED3
◆ MIN
#define MIN |
( |
| a, |
|
|
| b ) (((a) < (b)) ? (a) : (b)) |
◆ NAME_COMPOSE
◆ SWAP
Value: do { \
XT_SORT_EXTRA_ARGS_SWAP(i, j); \
} while (0)
Definition at line 179 of file xt_quicksort_base.h.
◆ TOKEN_PASTE
#define TOKEN_PASTE |
( |
| a, |
|
|
| b ) a##_##b |
◆ VECSWAP
◆ XT_QUICKSORT
◆ XT_QUICKSORT_INNER
◆ XT_SORT_EXTRA_ARGS_ADVANCE
#define XT_SORT_EXTRA_ARGS_ADVANCE |
( |
| adv | ) |
|
◆ XT_SORT_EXTRA_ARGS_ADVANCE_UNDEF
#define XT_SORT_EXTRA_ARGS_ADVANCE_UNDEF |
◆ XT_SORT_EXTRA_ARGS_DECL
#define XT_SORT_EXTRA_ARGS_DECL |
◆ XT_SORT_EXTRA_ARGS_DECL_UNDEF
#define XT_SORT_EXTRA_ARGS_DECL_UNDEF |
◆ XT_SORT_EXTRA_ARGS_PASS
#define XT_SORT_EXTRA_ARGS_PASS |
◆ XT_SORT_EXTRA_ARGS_PASS_UNDEF
#define XT_SORT_EXTRA_ARGS_PASS_UNDEF |
◆ XT_SORT_EXTRA_ARGS_SWAP
#define XT_SORT_EXTRA_ARGS_SWAP |
( |
| i, |
|
|
| j ) |
◆ XT_SORT_EXTRA_ARGS_SWAP_UNDEF
#define XT_SORT_EXTRA_ARGS_SWAP_UNDEF |
◆ XT_SORT_MED3_EXTRA_ARGS_DECL
◆ XT_SORT_MED3_EXTRA_ARGS_DECL_UNDEF
#define XT_SORT_MED3_EXTRA_ARGS_DECL_UNDEF |
◆ XT_SORT_MED3_EXTRA_ARGS_PASS
◆ XT_SORT_MED3_EXTRA_ARGS_PASS_UNDEF
#define XT_SORT_MED3_EXTRA_ARGS_PASS_UNDEF |
◆ XT_SORT_VECSWAP_EXTRA_ARGS_DECL
◆ XT_SORT_VECSWAP_EXTRA_ARGS_DECL_UNDEF
#define XT_SORT_VECSWAP_EXTRA_ARGS_DECL_UNDEF |
◆ XT_SORT_VECSWAP_EXTRA_ARGS_PASS
◆ XT_SORT_VECSWAP_EXTRA_ARGS_PASS_UNDEF
#define XT_SORT_VECSWAP_EXTRA_ARGS_PASS_UNDEF |
◆ XT_SORTFUNC_DECL
◆ XT_SORTFUNC_DECL_UNDEF
#define XT_SORTFUNC_DECL_UNDEF |
◆ MED3()
static size_t MED3 |
( |
const SORT_TYPE * | a, |
|
|
size_t | i, |
|
|
size_t | j, |
|
|
size_t k | XT_SORT_MED3_EXTRA_ARGS_DECL ) |
|
inlinestatic |
◆ VECSWAP()
static void VECSWAP |
( |
SORT_TYPE *restrict | a, |
|
|
size_t | ia, |
|
|
size_t | ib, |
|
|
size_t n | XT_SORT_VECSWAP_EXTRA_ARGS_DECL ) |
|
inlinestatic |
◆ XT_QUICKSORT()
◆ XT_QUICKSORT_INNER()
static void XT_QUICKSORT_INNER |
( |
SORT_TYPE *restrict | a, |
|
|
size_t n | XT_SORT_EXTRA_ARGS_DECL ) |
|
static |