MALOC  0.1
maloc_base.h
Go to the documentation of this file.
1 
44 #ifndef _MALOC_BASE_H_
45 #define _MALOC_BASE_H_
46 
47 /*
48  * ***************************************************************************
49  * Proper ISO-C header setup (with a slight "signals" tweek for setjmp)
50  * ***************************************************************************
51  */
52 
53 /* Get the fifteen ISO-C headers (CAREFUL: POSIX/BSD flags delicate...) */
54 
55 /* Some compilers don't set this for you; GCC does with -ansi */
56 /*
57  * if !defined(__STDC__)
58  * define __STDC__ 1
59  * endif
60  */
61 
62 /* Old Sparc compilers need this to give you prototypes */
63 /*
64  * if !defined(__USE_FIXED_PROTOTYPES__)
65  * define __USE_FIXED_PROTOTYPES__
66  * endif
67  */
68 
69 /* Include 14 of the 15 ISO-C headers (postponing setjmp.h) */
70 #include <assert.h>
71 #include <ctype.h>
72 #include <errno.h>
73 #include <float.h>
74 #include <limits.h>
75 #include <locale.h>
76 #include <math.h>
77 #include <signal.h>
78 #include <stdarg.h>
79 #include <stddef.h>
80 #include <stdio.h>
81 #include <stdlib.h>
82 #include <string.h>
83 #include <time.h>
84 
88 #if !defined(CLOCKS_PER_SEC)
89 # define CLOCKS_PER_SEC 60
90 #endif
91 
115 #define __FAVOR_BSD
116 
140 #define _BSD_SIGNALS
141 
142 /* Now finally include the 15th header, setjmp.h */
143 #include <setjmp.h>
144 
145 #if defined(__cplusplus)
147 # define VCXX
149 # define extern "C"
150 #else
152 # define VCC
154 # define extern
155 #endif
156 
157 /*
158  * ***************************************************************************
159  * Private and Public type modifier simulation
160  * ***************************************************************************
161  */
162 
163 #define VPRIVATE static
164 #define VPUBLIC /*empty*/
168 #define VWARN1(file, lineno) (fprintf(stderr,"VWARN: ASSERTION FAILURE! filename %s, line %u\n", (file), (lineno)), 0)
170 #define VASSERT1(file, lineno) (fprintf(stderr,"VASSERT: ASSERTION FAILURE! filename %s, line %u\n", (file), (lineno)), exit(1), 0)
172 #define VASSERT2(file, lineno) (fprintf(stderr,"VASSERT: ASSERTION FAILURE! filename %s, line %u\n", (file), (lineno)), abort(), 0)
174 #define VASSERT3(file, lineno, ex) (fprintf(stderr,"VASSERT: ASSERTION FAILURE! filename %s, line %u, (%s)\n", (file), (lineno), (#ex)), abort(), 0)
175 
177 #define VWARN(ex) ((void) ((ex) ? 0 : VWARN1(__FILE__, __LINE__)))
179 #define VASSERT(ex) ((void) ((ex) ? 0 : VASSERT3(__FILE__, __LINE__, ex)))
180 
181 
183 #define VJMPERR0(x) if (!(x)) goto VERROR0
185 #define VJMPERR1(x) if (!(x)) goto VERROR1
187 #define VJMPERR2(x) if (!(x)) goto VERROR2
189 #define VJMPERR3(x) if (!(x)) goto VERROR3
191 #define VJMPERR4(x) if (!(x)) goto VERROR4
193 #define VJMPERR5(x) if (!(x)) goto VERROR5
195 #define VJMPERR6(x) if (!(x)) goto VERROR6
197 #define VJMPERR7(x) if (!(x)) goto VERROR7
199 #define VJMPERR8(x) if (!(x)) goto VERROR8
201 #define VJMPERR9(x) if (!(x)) goto VERROR9
202 
203 /*
204  * ***************************************************************************
205  * Global constants
206  * ***************************************************************************
207  */
208 
210 #define VPI 3.14159265358979323846
212 #define VLARGE 1.0e+9
214 #define VSMALL 1.0e-9
216 #define VVLARGE 1.0e+15
218 #define VVSMALL 1.0e-15
220 #define VPRTKEY 10000
221 
223 #define VPTRSIZE 4
225 #define VMAX_ARGNUM 50
227 #define VMAX_ARGLEN 1024
229 #define VMAX_BUFSIZE 8192
230 
231 /*
232  * #define VMAX_OBJECTS 16777216 //(1<<24) = 2^24
233  * #define VBLOCK_POWER 12
234  */
235 
237 #define VMAX_OBJECTS 1073741824 /* (1<<31) = 2^31 */
239 #define VBLOCK_POWER 14
240 
242 #define VNULL NULL
244 #define VINULL -1
246 #define VTRUE 1
248 #define VFALSE 0
250 #define VSTDMODE 0600
251 
253 #define VNULL_STRING "\0"
255 #define VBLANK_STRING " "
257 #define VNEWLINE_STRING "\n"
258 
260 #define VNULL_SYMBOL '\0'
262 #define VBLANK_SYMBOL ' '
264 #define VNEWLINE_SYMBOL '\n'
266 #define VRDIN_SYMBOL '<'
268 #define VRDOUT_SYMBOL '>'
270 #define VPIPE_SYMBOL '|'
272 #define VDELIM_SET " ><|&"
273 
274 
276 #define VABS(x) ((x) >= 0 ? (x) : -(x))
278 #define VMIN2(x,y) ((x) <= (y) ? (x) : (y))
280 #define VMAX2(x,y) ((x) >= (y) ? (x) : (y))
282 #define VSIGN(x,y) ((y) >= 0 ? (VABS(x)) : (-VABS(x)))
283 
285 #define VODD(x) ((x)&1)
287 #define VEVEN(x) (!((x)&1))
289 #define VZERO(x) ((x)==0)
291 #define VPOS(x) ((x)>0)
293 #define VNEG(x) ((x)<0)
295 #define VEVENP(x) (VEVEN(x) && VPOS(x))
297 #define VEVENN(x) (VEVEN(x) && VNEG(x))
298 
300 #define VSQRT(x) (sqrt(x))
302 #define VSQR(x) ((x)*(x))
304 #define VSIN(x) (sin(x))
306 #define VCOS(x) (cos(x))
308 #define VTAN(x) (tan(x))
310 #define VASIN(x) (asin(x))
312 #define VACOS(x) (acos(x))
314 #define VATAN(x) (atan(x))
316 #define VSINH(x) (sinh(x))
318 #define VCOSH(x) (cosh(x))
320 #define VTANH(x) (tanh(x))
322 #define VEXP(x) (exp(x))
324 #define VLOG(x) (log(x))
326 #define VPOW(x,y) (pow(x,y))
328 #define VRINT(x) ((int)(floor((x)+0.5)))
329 
331 #define VRAND (rand())
333 #define VRANDMAX (RAND_MAX)
334 
338 #if 1
339 # define VINLINE_MALOC
340 #endif
341 
342 #endif /* _MALOC_BASE_H_ */
343