macros to create mergesort implementations, 4 way top-down method
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_ALLOC_SIZE 0 |
|
#define | XT_SORT_EXTRA_ALLOC_SIZE_UNDEF |
|
#define | XT_SORT_EXTRA_ALLOC_DECL |
|
#define | XT_SORT_EXTRA_ALLOC_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_EXTRA_ARGS_INNER_DECL XT_SORT_EXTRA_ARGS_DECL |
|
#define | XT_SORT_EXTRA_ARGS_INNER_DECL_UNDEF |
|
#define | XT_SORT_EXTRA_ARGS_INNER_PASS(a, b) XT_SORT_EXTRA_ARGS_PASS |
|
#define | XT_SORT_EXTRA_ARGS_INNER_PASS_UNDEF |
|
#define | XT_SORT_ASSIGN(a, i, b, j) (a)[(i)] = (b)[(j)] |
|
#define | XT_SORT_ASSIGN_UNDEF |
|
#define | XT_SORT_EXTRA_ARGS_SWAP(i, j) |
|
#define | XT_SORT_EXTRA_ARGS_SWAP_UNDEF |
|
#define | XT_MERGESORT NAME_COMPOSE(xt_mergesort,SORT_TYPE_SUFFIX) |
|
#define | XT_MERGESORT_INNER NAME_COMPOSE(xt_mergesort_i,SORT_TYPE_SUFFIX) |
|
#define | XT_INSERTIONSORT NAME_COMPOSE(xt_insertionsort, SORT_TYPE_SUFFIX) |
|
#define | XT_MERGE NAME_COMPOSE(xt_merge, SORT_TYPE_SUFFIX) |
|
#define | SWAP(i, j) |
|
#define | XT_SORT_EXTRA_ALLOC ((void *)(w+n)) |
|
|
static void | XT_INSERTIONSORT (SORT_TYPE *restrict v, size_t start, size_t end XT_SORT_EXTRA_ARGS_INNER_DECL) |
|
static void | XT_MERGE (SORT_TYPE *restrict v, SORT_TYPE *restrict w, size_t start, size_t mid, size_t end XT_SORT_EXTRA_ARGS_INNER_DECL) |
|
static void | XT_MERGESORT_INNER (SORT_TYPE *restrict v, SORT_TYPE *restrict w, size_t start, size_t end XT_SORT_EXTRA_ARGS_INNER_DECL) |
|
XT_SORTFUNC_DECL void | XT_MERGESORT (SORT_TYPE *restrict a, size_t n XT_SORT_EXTRA_ARGS_DECL) |
|
◆ NAME_COMPOSE
◆ SWAP
Value: do { \
XT_SORT_EXTRA_ARGS_SWAP(i, j); \
} while (0)
Definition at line 132 of file xt_mergesort_base.h.
◆ TOKEN_PASTE
#define TOKEN_PASTE |
( |
| a, |
|
|
| b ) a##_##b |
◆ XT_INSERTIONSORT
◆ XT_MERGE
◆ XT_MERGESORT
◆ XT_MERGESORT_INNER
◆ XT_SORT_ASSIGN
#define XT_SORT_ASSIGN |
( |
| a, |
|
|
| i, |
|
|
| b, |
|
|
| j ) (a)[(i)] = (b)[(j)] |
◆ XT_SORT_ASSIGN_UNDEF
#define XT_SORT_ASSIGN_UNDEF |
◆ XT_SORT_EXTRA_ALLOC
#define XT_SORT_EXTRA_ALLOC ((void *)(w+n)) |
◆ XT_SORT_EXTRA_ALLOC_DECL
#define XT_SORT_EXTRA_ALLOC_DECL |
◆ XT_SORT_EXTRA_ALLOC_DECL_UNDEF
#define XT_SORT_EXTRA_ALLOC_DECL_UNDEF |
◆ XT_SORT_EXTRA_ALLOC_SIZE
#define XT_SORT_EXTRA_ALLOC_SIZE 0 |
◆ XT_SORT_EXTRA_ALLOC_SIZE_UNDEF
#define XT_SORT_EXTRA_ALLOC_SIZE_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_INNER_DECL
◆ XT_SORT_EXTRA_ARGS_INNER_DECL_UNDEF
#define XT_SORT_EXTRA_ARGS_INNER_DECL_UNDEF |
◆ XT_SORT_EXTRA_ARGS_INNER_PASS
◆ XT_SORT_EXTRA_ARGS_INNER_PASS_UNDEF
#define XT_SORT_EXTRA_ARGS_INNER_PASS_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_SORTFUNC_DECL
◆ XT_SORTFUNC_DECL_UNDEF
#define XT_SORTFUNC_DECL_UNDEF |
◆ XT_INSERTIONSORT()
static void XT_INSERTIONSORT |
( |
SORT_TYPE *restrict | v, |
|
|
size_t | start, |
|
|
size_t end | XT_SORT_EXTRA_ARGS_INNER_DECL ) |
|
inlinestatic |
◆ XT_MERGE()
static void XT_MERGE |
( |
SORT_TYPE *restrict | v, |
|
|
SORT_TYPE *restrict | w, |
|
|
size_t | start, |
|
|
size_t | mid, |
|
|
size_t end | XT_SORT_EXTRA_ARGS_INNER_DECL ) |
|
static |
◆ XT_MERGESORT()
◆ XT_MERGESORT_INNER()
static void XT_MERGESORT_INNER |
( |
SORT_TYPE *restrict | v, |
|
|
SORT_TYPE *restrict | w, |
|
|
size_t | start, |
|
|
size_t end | XT_SORT_EXTRA_ARGS_INNER_DECL ) |
|
static |