Yet Another eXchange Tool 0.11.4
Loading...
Searching...
No Matches
xt_mergesort_base.h File Reference

macros to create mergesort implementations, 4 way top-down method 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_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)
 
#define XT_SORT_EXTRA_ARGS_INNER_PASS_UNDEF
 
#define XT_SORT_ASSIGN(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))
 

Functions

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)
 

Detailed Description

macros to create mergesort implementations, 4 way top-down method

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_mergesort_base.h.

Macro Definition Documentation

◆ NAME_COMPOSE

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

Definition at line 50 of file xt_mergesort_base.h.

◆ SWAP

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

Definition at line 132 of file xt_mergesort_base.h.

◆ TOKEN_PASTE

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

Definition at line 49 of file xt_mergesort_base.h.

◆ XT_INSERTIONSORT

#define XT_INSERTIONSORT   NAME_COMPOSE(xt_insertionsort, SORT_TYPE_SUFFIX)

Definition at line 128 of file xt_mergesort_base.h.

◆ XT_MERGE

#define XT_MERGE   NAME_COMPOSE(xt_merge, SORT_TYPE_SUFFIX)

Definition at line 129 of file xt_mergesort_base.h.

◆ XT_MERGESORT

#define XT_MERGESORT   NAME_COMPOSE(xt_mergesort,SORT_TYPE_SUFFIX)

Definition at line 126 of file xt_mergesort_base.h.

◆ XT_MERGESORT_INNER

#define XT_MERGESORT_INNER   NAME_COMPOSE(xt_mergesort_i,SORT_TYPE_SUFFIX)

Definition at line 127 of file xt_mergesort_base.h.

◆ XT_SORT_ASSIGN

#define XT_SORT_ASSIGN ( a,
i,
b,
j )
Value:
(a)[(i)] = (b)[(j)]

Definition at line 117 of file xt_mergesort_base.h.

◆ XT_SORT_ASSIGN_UNDEF

#define XT_SORT_ASSIGN_UNDEF

Definition at line 118 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ALLOC

#define XT_SORT_EXTRA_ALLOC   ((void *)(w+n))

◆ XT_SORT_EXTRA_ALLOC_DECL

#define XT_SORT_EXTRA_ALLOC_DECL

Definition at line 84 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ALLOC_DECL_UNDEF

#define XT_SORT_EXTRA_ALLOC_DECL_UNDEF

Definition at line 85 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ALLOC_SIZE

#define XT_SORT_EXTRA_ALLOC_SIZE   0

Definition at line 79 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ALLOC_SIZE_UNDEF

#define XT_SORT_EXTRA_ALLOC_SIZE_UNDEF

Definition at line 80 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ARGS_DECL

#define XT_SORT_EXTRA_ARGS_DECL

Definition at line 90 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ARGS_DECL_UNDEF

#define XT_SORT_EXTRA_ARGS_DECL_UNDEF

Definition at line 91 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ARGS_INNER_DECL

#define XT_SORT_EXTRA_ARGS_INNER_DECL   XT_SORT_EXTRA_ARGS_DECL

Definition at line 104 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ARGS_INNER_DECL_UNDEF

#define XT_SORT_EXTRA_ARGS_INNER_DECL_UNDEF

Definition at line 105 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ARGS_INNER_PASS

#define XT_SORT_EXTRA_ARGS_INNER_PASS ( a,
b )
Value:

Definition at line 112 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ARGS_INNER_PASS_UNDEF

#define XT_SORT_EXTRA_ARGS_INNER_PASS_UNDEF

Definition at line 113 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ARGS_PASS

#define XT_SORT_EXTRA_ARGS_PASS

Definition at line 97 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ARGS_PASS_UNDEF

#define XT_SORT_EXTRA_ARGS_PASS_UNDEF

Definition at line 98 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ARGS_SWAP

#define XT_SORT_EXTRA_ARGS_SWAP ( i,
j )

Definition at line 122 of file xt_mergesort_base.h.

◆ XT_SORT_EXTRA_ARGS_SWAP_UNDEF

#define XT_SORT_EXTRA_ARGS_SWAP_UNDEF

Definition at line 123 of file xt_mergesort_base.h.

◆ XT_SORTFUNC_DECL

#define XT_SORTFUNC_DECL

Definition at line 74 of file xt_mergesort_base.h.

◆ XT_SORTFUNC_DECL_UNDEF

#define XT_SORTFUNC_DECL_UNDEF

Definition at line 75 of file xt_mergesort_base.h.

Function Documentation

◆ XT_INSERTIONSORT()

static void XT_INSERTIONSORT ( SORT_TYPE *restrict v,
size_t start,
size_t end XT_SORT_EXTRA_ARGS_INNER_DECL )
inlinestatic

Definition at line 141 of file xt_mergesort_base.h.

◆ 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

Definition at line 150 of file xt_mergesort_base.h.

◆ XT_MERGESORT()

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

Definition at line 201 of file xt_mergesort_base.h.

◆ 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

Definition at line 174 of file xt_mergesort_base.h.