genometools merge sort adapted for ScalES-PPM
More...
#include <sys/types.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include "core/msort.h"
|
|
#define | NATURAL |
| |
|
#define | THRESHOLD 16 /* Best choice for natural merge cut-off. */ |
| |
|
#define | ISIZE sizeof (int) |
| |
|
#define | PSIZE sizeof (u_char *) |
| |
| #define | ICOPY_LIST(src, dst, last) |
| |
| #define | ICOPY_ELT(src, dst, i) |
| |
| #define | CCOPY_LIST(src, dst, last) |
| |
| #define | CCOPY_ELT(src, dst, i) |
| |
| #define | msort_swap(a, b) |
| |
| #define | reverse(bot, top) |
| |
| #define | EVAL(p) |
| |
|
|
typedef unsigned char | u_char |
| |
|
|
void | PPM_msort_r (void *base, size_t nmemb, size_t size, void *comparinfo, PPM_CompareWithData compar) |
| |
|
void | PPM_msort (void *base, size_t nmemb, size_t size, PPM_Compare compar) |
| |
genometools merge sort adapted for ScalES-PPM
- Copyright
- Copyright (C) 2012 Thomas Jahns jahns.nosp@m.@dkr.nosp@m.z.de
- Version
- 1.0
- Author
- Thomas Jahns jahns.nosp@m.@dkr.nosp@m.z.de
◆ CCOPY_ELT
| #define CCOPY_ELT |
( |
| src, |
|
|
| dst, |
|
|
| i ) |
Value: do \
*dst++ = *src++; \
while (i -= 1)
◆ CCOPY_LIST
| #define CCOPY_LIST |
( |
| src, |
|
|
| dst, |
|
|
| last ) |
Value: do \
*dst++ = *src++; \
while (src < last)
◆ EVAL
Value: (u_char **)\
((u_char *)0 +\
((size_t)((u_char *)p + PSIZE - 1 - (u_char *) 0) & ~(PSIZE - 1)))
◆ ICOPY_ELT
| #define ICOPY_ELT |
( |
| src, |
|
|
| dst, |
|
|
| i ) |
Value: do \
*(int*) dst = *(int*) src, src += ISIZE, dst += ISIZE; \
while (i -= ISIZE)
◆ ICOPY_LIST
| #define ICOPY_LIST |
( |
| src, |
|
|
| dst, |
|
|
| last ) |
Value: do \
*(int*)dst = *(int*)src, src += ISIZE, dst += ISIZE; \
while (src < last)
◆ msort_swap
| #define msort_swap |
( |
| a, |
|
|
| b ) |
Value: { \
s = b; \
size_t i = size; \
do { \
__typeof (*a) tmp = *a; *a++ = *s; *s++ = tmp; \
} while (--i); \
a -= size; \
}
◆ reverse
| #define reverse |
( |
| bot, |
|
|
| top ) |
Value: { \
s = top; \
do { \
size_t i = size; \
do { \
__typeof (*bot) tmp = *bot; *bot++ = *s; *s++ = tmp; \
} while (--i); \
s -= size2; \
} while (bot < s); \
}
Das diesem Bericht zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung, und Forschung unter dem Förderkennzeichen 01IH08004E gefördert. Die Verantwortung für den Inhalt dieser Veröffentlichung liegt beim Autor.