Go to the documentation of this file.
20 #if defined(_MSC_VER) || defined (__MNO_CYGWIN)
22 #define SRANDOM(seed) srand(seed)
23 #define RANDOM() rand()
25 #define SRANDOM(seed) srandom(seed)
26 #define RANDOM() random()
34 #define REMALLOC(ptr, ptrtype, oldsize, newsize, block_size) \
36 if (!ptr || (oldsize < newsize)){ \
38 oldsize = newsize + (int)(block_size); \
39 ptr = (ptrtype *) malloc((size_t)(oldsize) * sizeof(ptrtype)); \
46 #define REALLOC(ptr, ptrtype, oldsize, newsize, block_size) \
48 if (!ptr || (oldsize < newsize)){ \
49 oldsize = newsize + (int)(block_size); \
50 ptr = (ptrtype *) realloc((char *)ptr, (size_t) \
51 (oldsize * sizeof(ptrtype))); \
57 #define READ_INT_DESC(desc) \
59 receive_int_array(&(desc).size, 1); \
60 if ((desc).size > 0){ \
61 REMALLOC((desc).list, int, (desc).maxsize, (desc).size, BB_BUNCH); \
62 receive_int_array((desc).list, (desc).size); \
66 #define READ_CHAR_ARRAY_WITH_SIZE(cptr, cnum, maxcnum) \
68 receive_int_array(&cnum, 1); \
70 REMALLOC(cptr, char, maxcnum, cnum, BB_BUNCH); \
71 receive_char_array(cptr, cnum); \
75 #define READ_STR_LIST(snum, ssize, cptr, sptr) \
78 sptr = (char **) malloc(snum * sizeof(char *)); \
79 cptr = (char *) malloc(ssize * snum * CSIZE); \
80 receive_char_array(cptr, snum * ssize); \
81 for (i = 0; i < snum; i++) \
82 sptr[i] = cptr + i * ssize; \
89 #define READPAR_ERROR(x) \
91 (void) fprintf(stderr, "\nio: error reading parameter %s\n\n", x); \
95 #define READ_INT_PAR(par) \
96 if (sscanf(value, "%i", &(par)) != 1){ \
97 (void) fprintf(stderr, "\nio: error reading parameter %s\n\n", key); \
101 #define READ_STR_PAR(par) \
102 if (sscanf(value, "%s", par) != 1){ \
103 (void) fprintf(stderr, "\nio: error reading parameter %s\n\n", key); \
107 #define READ_DBL_PAR(par) \
108 if (sscanf(value, "%lf", &(par)) != 1){ \
109 (void) fprintf(stderr, "\nio: error reading parameter %s\n\n", key); \
113 #define READ_STRINT_PAR(par, str_array, array_size, value) \
115 for (i = array_size-1; i >= 0; i--){ \
116 if (! strcmp(str_array[i].str, value)){ \
117 par |= str_array[i].code; \
122 (void) fprintf(stderr, "\nio: error reading parameter %s\n\n", key); \
129 #define COPY_DBL_ARRAY_DESC(newad, oldad) \
130 if (newad.size > 0){ \
131 newad.stat = (int *) malloc(newad.size*ISIZE); \
132 memcpy((char *)newad.stat, (char *)oldad.stat, oldad.size*ISIZE); \
133 if (newad.type == WRT_PARENT){ \
134 newad.list = (int *) malloc(oldad.size*ISIZE); \
135 memcpy((char *)newad.list, (char *)oldad.list, oldad.size*ISIZE); \
139 #define COPY_STAT(newad, oldad) \
140 if (newad.size > 0){ \
141 newad.stat = (int *) malloc(newad.size*ISIZE); \
142 memcpy((char *)newad.stat, (char *)oldad.stat, oldad.size*ISIZE); \
145 #define COPY_ARRAY_DESC(newad, oldad) \
147 if (newad.size > 0){ \
148 newad.list = (int *) malloc(oldad.size*ISIZE); \
149 memcpy((char *)newad.list, (char *)oldad.list, oldad.size*ISIZE); \
154 #define CALL_USER_FUNCTION(f) \
157 printf("\n\n*********User error detected -- aborting***********\n\n"); \
158 return(ERROR__USER); \
165 #define CALL_WRAPPER_FUNCTION(f) \
166 if ((termcode = f) < 0) \
174 #define PRINT(a, b, c) \
175 if ((a) > (b)) printf c
180 #define FREE(p) if (p) {(void)free((char *)(p)); p = NULL;}
184 #define MIN(a,b) ((a) < (b) ? (a) : (b))
190 #define MAX(a,b) ((a) > (b) ? (a) : (b))
197 #ifdef ISSET_WITH_NBBY
201 # define isset(a, i) (((a)[(i)/NBBY] >> ((i) % NBBY)) & 1)
203 # define LOG_OF_BITS_PER_BYTE 3
204 # define BITS_PER_BYTE_LESS_ONE 7
205 # define isset(a, i) (((a)[(i) >> LOG_OF_BITS_PER_BYTE] >> \
206 ((i) & BITS_PER_BYTE_LESS_ONE)) & 1)
208 #define isclr(a, i) (! isset(a, i))
213 #ifdef ISSET_WITH_NBBY
217 # define setbit(a, i) ((a)[(i)/NBBY] |= (1 << ((i) % NBBY)))
219 # ifndef LOG_OF_BITS_PER_BYTE
220 # define LOG_OF_BITS_PER_BYTE 3
221 # define BITS_PER_BYTE_LESS_ONE 7
223 # define setbit(a, i) ((a)[(i) >> LOG_OF_BITS_PER_BYTE] |= \
224 (1 << ((i) & BITS_PER_BYTE_LESS_ONE)))
228 #if _OPENMP >= 201107
229 #define OPENMP_ATOMIC_WRITE _Pragma("omp atomic write")
231 #define OPENMP_ATOMIC_WRITE _Pragma("omp critical (atomic_write)")
234 #if _OPENMP >= 201107
235 #define OPENMP_ATOMIC_WRITE __pragma("omp atomic write")
237 #define OPENMP_ATOMIC_WRITE __pragma("omp critical (atomic_write)")
242 #if _OPENMP >= 201107
243 #define OPENMP_ATOMIC_UPDATE _Pragma("omp atomic update")
245 #define OPENMP_ATOMIC_UPDATE _Pragma("omp atomic")
248 #if _OPENMP >= 201107
249 #define OPENMP_ATOMIC_UPDATE __pragma("omp atomic update")
251 #define OPENMP_ATOMIC_UPDATE __pragma("omp atomic")