Yet Another eXchange Tool  0.9.0
Macros | Functions
xt_quicksort_base.h File Reference

macros to create quicksort implementations More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define TOKEN_PASTE(a, b)   a##_##b
 
#define NAME_COMPOSE(a, b)   TOKEN_PASTE(a,b)
 
#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_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 SWAP(i, j)
 
#define MIN(a, b)   (((a) < (b)) ? (a) : (b))
 

Functions

static size_t MED3 (const SORT_TYPE *a, size_t i, size_t j, size_t k XT_SORT_EXTRA_ARGS_DECL)
 
static void VECSWAP (SORT_TYPE *restrict a, size_t ia, size_t ib, size_t n XT_SORT_EXTRA_ARGS_DECL)
 
void XT_QUICKSORT (SORT_TYPE *restrict a, size_t n XT_SORT_EXTRA_ARGS_DECL)
 

Detailed Description

macros to create quicksort implementations

Author
Jörg Behrens behre.nosp@m.ns@d.nosp@m.krz.d.nosp@m.e Moritz Hanke hanke.nosp@m.@dkr.nosp@m.z.de Thomas Jahns jahns.nosp@m.@dkr.nosp@m.z.de

Definition in file xt_quicksort_base.h.

Macro Definition Documentation

◆ MED3

#define MED3   NAME_COMPOSE(med3,SORT_TYPE_SUFFIX)

Definition at line 137 of file xt_quicksort_base.h.

◆ MIN

#define MIN (   a,
 
)    (((a) < (b)) ? (a) : (b))

◆ NAME_COMPOSE

#define NAME_COMPOSE (   a,
 
)    TOKEN_PASTE(a,b)

Definition at line 91 of file xt_quicksort_base.h.

◆ SWAP

#define SWAP (   i,
 
)
Value:
do { \
SORT_TYPE t = a[i]; a[i] = a[j]; a[j] = t; \
XT_SORT_EXTRA_ARGS_SWAP(i, j); \
} while (0)

Definition at line 152 of file xt_quicksort_base.h.

◆ TOKEN_PASTE

#define TOKEN_PASTE (   a,
 
)    a##_##b

Definition at line 90 of file xt_quicksort_base.h.

◆ VECSWAP

#define VECSWAP   NAME_COMPOSE(vecswap,SORT_TYPE_SUFFIX)

Definition at line 138 of file xt_quicksort_base.h.

◆ XT_QUICKSORT

#define XT_QUICKSORT   NAME_COMPOSE(xt_quicksort,SORT_TYPE_SUFFIX)

Definition at line 139 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_ADVANCE

#define XT_SORT_EXTRA_ARGS_ADVANCE (   adv)

Definition at line 133 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_ADVANCE_UNDEF

#define XT_SORT_EXTRA_ARGS_ADVANCE_UNDEF

Definition at line 134 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_DECL

#define XT_SORT_EXTRA_ARGS_DECL

Definition at line 116 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_DECL_UNDEF

#define XT_SORT_EXTRA_ARGS_DECL_UNDEF

Definition at line 117 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_PASS

#define XT_SORT_EXTRA_ARGS_PASS

Definition at line 123 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_PASS_UNDEF

#define XT_SORT_EXTRA_ARGS_PASS_UNDEF

Definition at line 124 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_SWAP

#define XT_SORT_EXTRA_ARGS_SWAP (   i,
 
)

Definition at line 128 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_SWAP_UNDEF

#define XT_SORT_EXTRA_ARGS_SWAP_UNDEF

Definition at line 129 of file xt_quicksort_base.h.

Function Documentation

◆ MED3()

static size_t MED3 ( const SORT_TYPE a,
size_t  i,
size_t  j,
size_t k  XT_SORT_EXTRA_ARGS_DECL 
)
inlinestatic

Definition at line 142 of file xt_quicksort_base.h.

◆ VECSWAP()

static void VECSWAP ( SORT_TYPE *restrict  a,
size_t  ia,
size_t  ib,
size_t n  XT_SORT_EXTRA_ARGS_DECL 
)
inlinestatic

Definition at line 159 of file xt_quicksort_base.h.

◆ XT_QUICKSORT()

void XT_QUICKSORT ( SORT_TYPE *restrict  a,
size_t n  XT_SORT_EXTRA_ARGS_DECL 
)

Definition at line 165 of file xt_quicksort_base.h.