Scippy

GCG

Branch-and-Price & Column Generation for Everyone

gcgsorttpl.c File Reference

Detailed Description

template functions for sorting

Author
Michael Winkler
Tobias Achterberg
Tobias Oelschlaegel

Definition in file gcgsorttpl.c.

Go to the source code of this file.

Macros

#define GCG_DECL_SORTINDCOMP(x)   int x (void* userdata, void* dataptr, int ind1, int ind2)
 
#define GCG_DECL_SORTPTRCOMP(x)   int x (void* userdata, void* elem1, void* elem2)
 
#define GCGSORTTPL_SHELLSORTMAX   25
 
#define GCGSORTTPL_HASFIELD1(x)
 
#define GCGSORTTPL_HASFIELD1PAR(x)
 
#define GCGSORTTPL_HASFIELD2(x)
 
#define GCGSORTTPL_HASFIELD2PAR(x)
 
#define GCGSORTTPL_HASFIELD3(x)
 
#define GCGSORTTPL_HASFIELD3PAR(x)
 
#define GCGSORTTPL_HASFIELD4(x)
 
#define GCGSORTTPL_HASFIELD4PAR(x)
 
#define GCGSORTTPL_HASFIELD5(x)
 
#define GCGSORTTPL_HASFIELD5PAR(x)
 
#define GCGSORTTPL_HASFIELD6(x)
 
#define GCGSORTTPL_HASFIELD6PAR(x)
 
#define GCGSORTTPL_HASPTRCOMP(x)
 
#define GCGSORTTPL_HASPTRCOMPPAR(x)
 
#define GCGSORTTPL_HASINDCOMP(x)
 
#define GCGSORTTPL_HASINDCOMPPAR(x)
 
#define GCGSORTTPL_EXPANDNAME(method, methodname)   method ## methodname
 
#define GCGSORTTPL_NAME(method, methodname)   GCGSORTTPL_EXPANDNAME(method, methodname)
 
#define GCGSORTTPL_ISBETTER(x, y)   ((x) < (y))
 
#define GCGSORTTPL_ISWORSE(x, y)   ((x) > (y))
 
#define GCGSORTTPL_SWAP(T, x, y)
 

Functions

static void GCGSORTTPL_NAME (gcgsorttpl_shellSort, GCGSORTTPL_NAMEEXT)
 
static void GCGSORTTPL_NAME (gcgsorttpl_qSort, GCGSORTTPL_NAMEEXT)
 
static void GCGSORTTPL_NAME (gcgsorttpl_checkSort, GCGSORTTPL_NAMEEXT)
 
void GCGSORTTPL_NAME (GCGsort, GCGSORTTPL_NAMEEXT)
 

Macro Definition Documentation

◆ GCG_DECL_SORTINDCOMP

#define GCG_DECL_SORTINDCOMP (   x)    int x (void* userdata, void* dataptr, int ind1, int ind2)

compares two element indices result: < 0: ind1 comes before (is better than) ind2 = 0: both indices have the same value

0: ind2 comes after (is worse than) ind2

Definition at line 57 of file gcgsorttpl.c.

◆ GCG_DECL_SORTPTRCOMP

#define GCG_DECL_SORTPTRCOMP (   x)    int x (void* userdata, void* elem1, void* elem2)

compares two data element pointers result: < 0: elem1 comes before (is better than) elem2 = 0: both elements have the same value

0: elem2 comes after (is worse than) elem2

Definition at line 65 of file gcgsorttpl.c.

◆ GCGSORTTPL_SHELLSORTMAX

#define GCGSORTTPL_SHELLSORTMAX   25

Definition at line 68 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASFIELD1

#define GCGSORTTPL_HASFIELD1 (   x)

Definition at line 89 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASFIELD1PAR

#define GCGSORTTPL_HASFIELD1PAR (   x)

Definition at line 90 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASFIELD2

#define GCGSORTTPL_HASFIELD2 (   x)

Definition at line 96 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASFIELD2PAR

#define GCGSORTTPL_HASFIELD2PAR (   x)

Definition at line 97 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASFIELD3

#define GCGSORTTPL_HASFIELD3 (   x)

Definition at line 103 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASFIELD3PAR

#define GCGSORTTPL_HASFIELD3PAR (   x)

Definition at line 104 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASFIELD4

#define GCGSORTTPL_HASFIELD4 (   x)

Definition at line 110 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASFIELD4PAR

#define GCGSORTTPL_HASFIELD4PAR (   x)

Definition at line 111 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASFIELD5

#define GCGSORTTPL_HASFIELD5 (   x)

Definition at line 117 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASFIELD5PAR

#define GCGSORTTPL_HASFIELD5PAR (   x)

Definition at line 118 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASFIELD6

#define GCGSORTTPL_HASFIELD6 (   x)

Definition at line 124 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASFIELD6PAR

#define GCGSORTTPL_HASFIELD6PAR (   x)

Definition at line 125 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASPTRCOMP

#define GCGSORTTPL_HASPTRCOMP (   x)

Definition at line 131 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASPTRCOMPPAR

#define GCGSORTTPL_HASPTRCOMPPAR (   x)

Definition at line 132 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASINDCOMP

#define GCGSORTTPL_HASINDCOMP (   x)

Definition at line 138 of file gcgsorttpl.c.

◆ GCGSORTTPL_HASINDCOMPPAR

#define GCGSORTTPL_HASINDCOMPPAR (   x)

Definition at line 139 of file gcgsorttpl.c.

◆ GCGSORTTPL_EXPANDNAME

#define GCGSORTTPL_EXPANDNAME (   method,
  methodname 
)    method ## methodname

Definition at line 147 of file gcgsorttpl.c.

◆ GCGSORTTPL_NAME

#define GCGSORTTPL_NAME (   method,
  methodname 
)    GCGSORTTPL_EXPANDNAME(method, methodname)

Definition at line 149 of file gcgsorttpl.c.

◆ GCGSORTTPL_ISBETTER

#define GCGSORTTPL_ISBETTER (   x,
 
)    ((x) < (y))

Definition at line 175 of file gcgsorttpl.c.

◆ GCGSORTTPL_ISWORSE

#define GCGSORTTPL_ISWORSE (   x,
 
)    ((x) > (y))

Definition at line 176 of file gcgsorttpl.c.

◆ GCGSORTTPL_SWAP

#define GCGSORTTPL_SWAP (   T,
  x,
 
)
Value:
{ \
T temp = x; \
x = y; \
y = temp; \
}

Definition at line 182 of file gcgsorttpl.c.

Function Documentation

◆ GCGSORTTPL_NAME() [1/4]

static void GCGSORTTPL_NAME ( gcgsorttpl_shellSort  ,
GCGSORTTPL_NAMEEXT   
)
static

shell-sort an array of data elements; use it only for arrays smaller than 25 entries ending index

Definition at line 192 of file gcgsorttpl.c.

References GCGSORTTPL_FIELD1TYPE, GCGSORTTPL_HASFIELD1, GCGSORTTPL_HASFIELD2, GCGSORTTPL_HASFIELD3, GCGSORTTPL_HASFIELD4, GCGSORTTPL_HASFIELD5, GCGSORTTPL_HASFIELD6, GCGSORTTPL_ISBETTER, and GCGSORTTPL_KEYTYPE.

◆ GCGSORTTPL_NAME() [2/4]

static void GCGSORTTPL_NAME ( gcgsorttpl_qSort  ,
GCGSORTTPL_NAMEEXT   
)
static

◆ GCGSORTTPL_NAME() [3/4]

static void GCGSORTTPL_NAME ( gcgsorttpl_checkSort  ,
GCGSORTTPL_NAMEEXT   
)
static

verifies that an array is indeed sorted length of the array

Definition at line 440 of file gcgsorttpl.c.

References GCGSORTTPL_ISBETTER.

◆ GCGSORTTPL_NAME() [4/4]

void GCGSORTTPL_NAME ( GCGsort  ,
GCGSORTTPL_NAMEEXT   
)

SCIPsort...(): sorts array 'key' and performs the same permutations on the additional 'field' arrays userdata that is supplied to the comparator function length of arrays

Definition at line 460 of file gcgsorttpl.c.

References GCGSORTTPL_HASFIELD1PAR, GCGSORTTPL_HASFIELD2PAR, GCGSORTTPL_HASFIELD3PAR, GCGSORTTPL_HASFIELD4PAR, GCGSORTTPL_HASFIELD5PAR, GCGSORTTPL_HASFIELD6PAR, GCGSORTTPL_HASINDCOMPPAR, GCGSORTTPL_HASPTRCOMPPAR, GCGSORTTPL_NAME, GCGSORTTPL_NAMEEXT, and GCGSORTTPL_SHELLSORTMAX.