52 for(i=0; i<n; i++, tmpi++, tmpo++) {
57 memcpy( output, input, n *
sizeof(
int) );
79#ifndef DOXYGEN_SHOULD_SKIP_THIS
80#define INTSORTNAME spmIntSort1Asc1
81#define INTSORTSIZE (sizeof (spm_int_t))
82#define INTSORTSWAP(p,q) do { \
84 t = *((spm_int_t *) (p)); \
85 *((spm_int_t *) (p)) = *((spm_int_t *) (q)); \
86 *((spm_int_t *) (q)) = t; \
88#define INTSORTCMP(p,q) (*((spm_int_t *) (p)) < *((spm_int_t *) (q)))
89#include "integer_sort.c"
114#ifndef DOXYGEN_SHOULD_SKIP_THIS
115#define INTSORTNAME spmIntSort2Asc1
116#define INTSORTSIZE (2 * sizeof (spm_int_t))
117#define INTSORTSWAP(p,q) do { \
119 t = *((spm_int_t *) (p)); \
120 u = *((spm_int_t *) (p) + 1); \
121 *((spm_int_t *) (p)) = *((spm_int_t *) (q)); \
122 *((spm_int_t *) (p) + 1) = *((spm_int_t *) (q) + 1); \
123 *((spm_int_t *) (q)) = t; \
124 *((spm_int_t *) (q) + 1) = u; \
126#define INTSORTCMP(p,q) (*((spm_int_t *) (p)) < *((spm_int_t *) (q)))
127#include "integer_sort.c"
155#ifndef DOXYGEN_SHOULD_SKIP_THIS
156#define INTSORTNAME spmIntSort3Asc1
157#define INTSORTSIZE (3 * sizeof (spm_int_t))
158#define INTSORTSWAP(p,q) do { \
160 t = *((spm_int_t *) (p)); \
161 u = *((spm_int_t *) (p) + 1); \
162 v = *((spm_int_t *) (p) + 2); \
163 *((spm_int_t *) (p)) = *((spm_int_t *) (q)); \
164 *((spm_int_t *) (p) + 1) = *((spm_int_t *) (q) + 1); \
165 *((spm_int_t *) (p) + 2) = *((spm_int_t *) (q) + 2); \
166 *((spm_int_t *) (q)) = t; \
167 *((spm_int_t *) (q) + 1) = u; \
168 *((spm_int_t *) (q) + 2) = v; \
170#define INTSORTCMP(p,q) (*((spm_int_t *) (p)) < *((spm_int_t *) (q)))
171#include "integer_sort.c"
195#ifndef DOXYGEN_SHOULD_SKIP_THIS
196#define INTSORTNAME spmIntSort2Asc2
197#define INTSORTSIZE (2 * sizeof (spm_int_t))
198#define INTSORTSWAP(p,q) do { \
200 t = *((spm_int_t *) (p)); \
201 u = *((spm_int_t *) (p) + 1); \
202 *((spm_int_t *) (p)) = *((spm_int_t *) (q)); \
203 *((spm_int_t *) (p) + 1) = *((spm_int_t *) (q) + 1); \
204 *((spm_int_t *) (q)) = t; \
205 *((spm_int_t *) (q) + 1) = u; \
207#define INTSORTCMP(p,q) ((*((spm_int_t *) (p)) < *((spm_int_t *) (q))) || ((*((spm_int_t *) (p)) == *((spm_int_t *) (q))) && (*((spm_int_t *) (p) + 1) < *((spm_int_t *) (q) + 1))))
208#include "integer_sort.c"
234#ifndef DOXYGEN_SHOULD_SKIP_THIS
235#define INTSORTNAME spmIntMSortIntAsc
236#define INTSORTSIZE(x) (sizeof (spm_int_t))
238#define INTSORTSWAP(p,q) do { \
240 long disp_p = (((spm_int_t*)p)-((spm_int_t*)base_ptr)); \
241 long disp_q = (((spm_int_t*)q)-((spm_int_t*)base_ptr)); \
242 spm_int_t * int2ptr = *(pbase+1); \
244 t = *((spm_int_t *) (p)); \
245 *((spm_int_t *) (p)) = *((spm_int_t *) (q)); \
246 *((spm_int_t *) (q)) = t; \
248 t = int2ptr[disp_p]; \
249 int2ptr[disp_p] = int2ptr[disp_q]; \
250 int2ptr[disp_q] = t; \
252#define INTSORTCMP(p,q) ((*((spm_int_t *) (p)) < *((spm_int_t *) (q))) || \
253 ((*((spm_int_t *) (p)) == *((spm_int_t *) (q))) && \
254 ((( spm_int_t *)(*(pbase+1)))[(((spm_int_t*)p)-((spm_int_t*)base_ptr))] < \
255 (( spm_int_t *)(*(pbase+1)))[(((spm_int_t*)q)-((spm_int_t*)base_ptr))])))
256#include "integer_sort_mtypes.c"
285#ifndef DOXYGEN_SHOULD_SKIP_THIS
286#define INTSORTNAME spmIntMSortSmallIntAsc
287#define INTSORTSIZE(x) (sizeof (int))
289#define INTSORTSWAP(p,q) do { \
291 long disp_p = (((int*)p)-((int*)base_ptr)); \
292 long disp_q = (((int*)q)-((int*)base_ptr)); \
293 int * int2ptr = *(pbase+1); \
295 t = *((int *) (p)); \
296 *((int *) (p)) = *((int *) (q)); \
297 *((int *) (q)) = t; \
299 t = int2ptr[disp_p]; \
300 int2ptr[disp_p] = int2ptr[disp_q]; \
301 int2ptr[disp_q] = t; \
303#define INTSORTCMP(p,q) ((*((int *) (p)) < *((int *) (q))) || \
304 ((*((int *) (p)) == *((int *) (q))) && \
305 ((( int *)(*(pbase+1)))[(((int*)p)-((int*)base_ptr))] < \
306 (( int *)(*(pbase+1)))[(((int*)q)-((int*)base_ptr))])))
307#include "integer_sort_mtypes.c"
void spmIntMSortSmallIntAsc(void **const pbase, const spm_int_t n)
Sort 2 arrays simultaneously, the first array is an array of spm_int_t and used as primary key for so...
void spmIntSort3Asc1(void *const pbase, const spm_int_t n)
Sorts in ascending order array of element composed of three spm_int_t by ascending order....
void spmIntConvert(spm_int_t n, const int *input, spm_int_t *output)
Convert integer array to spm_int_t format.
int spm_int_t
The main integer datatype used in spm arrays.