Yet Another eXchange Tool 0.11.4
Loading...
Searching...
No Matches
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)
 
#define NAME_COMPOSE(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)
 

Functions

static size_t MED3 (const SORT_TYPE *a, size_t i, size_t j, size_t k XT_SORT_MED3_EXTRA_ARGS_DECL)
 
static void VECSWAP (SORT_TYPE *restrict a, size_t ia, size_t ib, size_t n XT_SORT_VECSWAP_EXTRA_ARGS_DECL)
 
static void XT_QUICKSORT_INNER (SORT_TYPE *restrict a, size_t n XT_SORT_EXTRA_ARGS_DECL)
 
XT_SORTFUNC_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 162 of file xt_quicksort_base.h.

◆ MIN

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

◆ NAME_COMPOSE

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

Definition at line 91 of file xt_quicksort_base.h.

◆ SWAP

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

Definition at line 179 of file xt_quicksort_base.h.

◆ TOKEN_PASTE

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

Definition at line 90 of file xt_quicksort_base.h.

◆ VECSWAP

#define VECSWAP   NAME_COMPOSE(vecswap,SORT_TYPE_SUFFIX)

Definition at line 163 of file xt_quicksort_base.h.

◆ XT_QUICKSORT

#define XT_QUICKSORT   NAME_COMPOSE(xt_quicksort,SORT_TYPE_SUFFIX)

Definition at line 164 of file xt_quicksort_base.h.

◆ XT_QUICKSORT_INNER

#define XT_QUICKSORT_INNER   NAME_COMPOSE(xt_qsort_i,SORT_TYPE_SUFFIX)

Definition at line 165 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_ADVANCE

#define XT_SORT_EXTRA_ARGS_ADVANCE ( adv)

Definition at line 158 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_ADVANCE_UNDEF

#define XT_SORT_EXTRA_ARGS_ADVANCE_UNDEF

Definition at line 159 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_DECL

#define XT_SORT_EXTRA_ARGS_DECL

Definition at line 121 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_DECL_UNDEF

#define XT_SORT_EXTRA_ARGS_DECL_UNDEF

Definition at line 122 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_PASS

#define XT_SORT_EXTRA_ARGS_PASS

Definition at line 128 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_PASS_UNDEF

#define XT_SORT_EXTRA_ARGS_PASS_UNDEF

Definition at line 129 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_SWAP

#define XT_SORT_EXTRA_ARGS_SWAP ( i,
j )

Definition at line 153 of file xt_quicksort_base.h.

◆ XT_SORT_EXTRA_ARGS_SWAP_UNDEF

#define XT_SORT_EXTRA_ARGS_SWAP_UNDEF

Definition at line 154 of file xt_quicksort_base.h.

◆ XT_SORT_MED3_EXTRA_ARGS_DECL

#define XT_SORT_MED3_EXTRA_ARGS_DECL   XT_SORT_EXTRA_ARGS_DECL

Definition at line 143 of file xt_quicksort_base.h.

◆ XT_SORT_MED3_EXTRA_ARGS_DECL_UNDEF

#define XT_SORT_MED3_EXTRA_ARGS_DECL_UNDEF

Definition at line 144 of file xt_quicksort_base.h.

◆ XT_SORT_MED3_EXTRA_ARGS_PASS

#define XT_SORT_MED3_EXTRA_ARGS_PASS   XT_SORT_EXTRA_ARGS_PASS

Definition at line 148 of file xt_quicksort_base.h.

◆ XT_SORT_MED3_EXTRA_ARGS_PASS_UNDEF

#define XT_SORT_MED3_EXTRA_ARGS_PASS_UNDEF

Definition at line 149 of file xt_quicksort_base.h.

◆ XT_SORT_VECSWAP_EXTRA_ARGS_DECL

#define XT_SORT_VECSWAP_EXTRA_ARGS_DECL   XT_SORT_EXTRA_ARGS_DECL

Definition at line 133 of file xt_quicksort_base.h.

◆ XT_SORT_VECSWAP_EXTRA_ARGS_DECL_UNDEF

#define XT_SORT_VECSWAP_EXTRA_ARGS_DECL_UNDEF

Definition at line 134 of file xt_quicksort_base.h.

◆ XT_SORT_VECSWAP_EXTRA_ARGS_PASS

#define XT_SORT_VECSWAP_EXTRA_ARGS_PASS   XT_SORT_EXTRA_ARGS_PASS

Definition at line 138 of file xt_quicksort_base.h.

◆ XT_SORT_VECSWAP_EXTRA_ARGS_PASS_UNDEF

#define XT_SORT_VECSWAP_EXTRA_ARGS_PASS_UNDEF

Definition at line 139 of file xt_quicksort_base.h.

◆ XT_SORTFUNC_DECL

#define XT_SORTFUNC_DECL

Definition at line 115 of file xt_quicksort_base.h.

◆ XT_SORTFUNC_DECL_UNDEF

#define XT_SORTFUNC_DECL_UNDEF

Definition at line 116 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_MED3_EXTRA_ARGS_DECL )
inlinestatic

Definition at line 168 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_VECSWAP_EXTRA_ARGS_DECL )
inlinestatic

Definition at line 186 of file xt_quicksort_base.h.

◆ XT_QUICKSORT()

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

Definition at line 276 of file xt_quicksort_base.h.

◆ XT_QUICKSORT_INNER()

static void XT_QUICKSORT_INNER ( SORT_TYPE *restrict a,
size_t n XT_SORT_EXTRA_ARGS_DECL )
static

Definition at line 193 of file xt_quicksort_base.h.