hdt: Adding Silent mode
[syslinux.git] / lzo / src / miniacc.h
blob315a20b205de525fe78243d63cc41ca00f619638
1 /* ACC --- Automatic Compiler Configuration
3 This file is part of the LZO real-time data compression library.
5 Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
6 Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
7 Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
8 Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
9 Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
10 Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
11 Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
12 Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
13 Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
14 Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
15 Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
16 Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
17 Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
18 All Rights Reserved.
20 The LZO library is free software; you can redistribute it and/or
21 modify it under the terms of the GNU General Public License as
22 published by the Free Software Foundation; either version 2 of
23 the License, or (at your option) any later version.
25 The LZO library is distributed in the hope that it will be useful,
26 but WITHOUT ANY WARRANTY; without even the implied warranty of
27 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 GNU General Public License for more details.
30 You should have received a copy of the GNU General Public License
31 along with the LZO library; see the file COPYING.
32 If not, write to the Free Software Foundation, Inc.,
33 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
35 Markus F.X.J. Oberhumer
36 <markus@oberhumer.com>
37 http://www.oberhumer.com/opensource/lzo/
41 #ifndef __ACC_H_INCLUDED
42 #define __ACC_H_INCLUDED 1
43 #define ACC_VERSION 20080430L
44 #if defined(__CYGWIN32__) && !defined(__CYGWIN__)
45 # define __CYGWIN__ __CYGWIN32__
46 #endif
47 #if defined(__IBMCPP__) && !defined(__IBMC__)
48 # define __IBMC__ __IBMCPP__
49 #endif
50 #if defined(__ICL) && defined(_WIN32) && !defined(__INTEL_COMPILER)
51 # define __INTEL_COMPILER __ICL
52 #endif
53 #if 1 && defined(__INTERIX) && defined(__GNUC__) && !defined(_ALL_SOURCE)
54 # define _ALL_SOURCE 1
55 #endif
56 #if defined(__mips__) && defined(__R5900__)
57 # if !defined(__LONG_MAX__)
58 # define __LONG_MAX__ 9223372036854775807L
59 # endif
60 #endif
61 #if defined(__INTEL_COMPILER) && defined(__linux__)
62 # pragma warning(disable: 193)
63 #endif
64 #if defined(__KEIL__) && defined(__C166__)
65 # pragma warning disable = 322
66 #elif 0 && defined(__C251__)
67 # pragma warning disable = 322
68 #endif
69 #if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__)
70 # if (_MSC_VER >= 1300)
71 # pragma warning(disable: 4668)
72 # endif
73 #endif
74 #if defined(__POCC__) && defined(_WIN32)
75 # if (__POCC__ >= 400)
76 # pragma warn(disable: 2216)
77 # endif
78 #endif
79 #if 0 && defined(__WATCOMC__)
80 # if (__WATCOMC__ >= 1050) && (__WATCOMC__ < 1060)
81 # pragma warning 203 9
82 # endif
83 #endif
84 #if defined(__BORLANDC__) && defined(__MSDOS__) && !defined(__FLAT__)
85 # pragma option -h
86 #endif
87 #if defined(ACC_CFG_NO_CONFIG_HEADER)
88 #elif defined(ACC_CFG_CONFIG_HEADER)
89 # include ACC_CFG_CONFIG_HEADER
90 #else
91 #endif
92 #if defined(ACC_CFG_NO_LIMITS_H)
93 #elif defined(ACC_LIBC_NAKED) || defined(ACC_BROKEN_LIMITS_H)
94 #ifndef __ACC_FALLBACK_LIMITS_H_INCLUDED
95 #define __ACC_FALLBACK_LIMITS_H_INCLUDED
96 #undef CHAR_BIT
97 #define CHAR_BIT 8
98 #ifndef MB_LEN_MAX
99 #define MB_LEN_MAX 1
100 #endif
101 #ifndef __SCHAR_MAX__
102 #define __SCHAR_MAX__ 127
103 #endif
104 #ifndef __SHRT_MAX__
105 #define __SHRT_MAX__ 32767
106 #endif
107 #ifndef __INT_MAX__
108 #define __INT_MAX__ 2147483647
109 #endif
110 #ifndef __LONG_MAX__
111 #if defined(__alpha__) || defined(_LP64) || defined(__MIPS_PSX2__)
112 #define __LONG_MAX__ 9223372036854775807L
113 #else
114 #define __LONG_MAX__ 2147483647L
115 #endif
116 #endif
117 #undef SCHAR_MIN
118 #undef SCHAR_MAX
119 #undef UCHAR_MAX
120 #define SCHAR_MIN (-1 - SCHAR_MAX)
121 #define SCHAR_MAX (__SCHAR_MAX__)
122 #define UCHAR_MAX (SCHAR_MAX * 2 + 1)
123 #undef SHRT_MIN
124 #undef SHRT_MAX
125 #undef USHRT_MAX
126 #define SHRT_MIN (-1 - SHRT_MAX)
127 #define SHRT_MAX (__SHRT_MAX__)
128 #if ((__INT_MAX__) == (__SHRT_MAX__))
129 #define USHRT_MAX (SHRT_MAX * 2U + 1U)
130 #else
131 #define USHRT_MAX (SHRT_MAX * 2 + 1)
132 #endif
133 #undef INT_MIN
134 #undef INT_MAX
135 #undef UINT_MAX
136 #define INT_MIN (-1 - INT_MAX)
137 #define INT_MAX (__INT_MAX__)
138 #define UINT_MAX (INT_MAX * 2U + 1U)
139 #undef LONG_MIN
140 #undef LONG_MAX
141 #undef ULONG_MAX
142 #define LONG_MIN (-1L - LONG_MAX)
143 #define LONG_MAX ((__LONG_MAX__) + 0L)
144 #define ULONG_MAX (LONG_MAX * 2UL + 1UL)
145 #undef CHAR_MIN
146 #undef CHAR_MAX
147 #if defined(__CHAR_UNSIGNED__) || defined(_CHAR_UNSIGNED)
148 #define CHAR_MIN 0
149 #define CHAR_MAX UCHAR_MAX
150 #else
151 #define CHAR_MIN SCHAR_MIN
152 #define CHAR_MAX SCHAR_MAX
153 #endif
154 #endif
155 #else
156 # include <limits.h>
157 #endif
158 #if 0
159 #define ACC_0xffffL 0xfffful
160 #define ACC_0xffffffffL 0xfffffffful
161 #else
162 #define ACC_0xffffL 65535ul
163 #define ACC_0xffffffffL 4294967295ul
164 #endif
165 #if (ACC_0xffffL == ACC_0xffffffffL)
166 # error "your preprocessor is broken 1"
167 #endif
168 #if (16ul * 16384ul != 262144ul)
169 # error "your preprocessor is broken 2"
170 #endif
171 #if 0
172 #if (32767 >= 4294967295ul)
173 # error "your preprocessor is broken 3"
174 #endif
175 #if (65535u >= 4294967295ul)
176 # error "your preprocessor is broken 4"
177 #endif
178 #endif
179 #if (UINT_MAX == ACC_0xffffL)
180 #if defined(__ZTC__) && defined(__I86__) && !defined(__OS2__)
181 # if !defined(MSDOS)
182 # define MSDOS 1
183 # endif
184 # if !defined(_MSDOS)
185 # define _MSDOS 1
186 # endif
187 #elif 0 && defined(__VERSION) && defined(MB_LEN_MAX)
188 # if (__VERSION == 520) && (MB_LEN_MAX == 1)
189 # if !defined(__AZTEC_C__)
190 # define __AZTEC_C__ __VERSION
191 # endif
192 # if !defined(__DOS__)
193 # define __DOS__ 1
194 # endif
195 # endif
196 #endif
197 #endif
198 #if defined(_MSC_VER) && defined(M_I86HM) && (UINT_MAX == ACC_0xffffL)
199 # define ptrdiff_t long
200 # define _PTRDIFF_T_DEFINED
201 #endif
202 #if (UINT_MAX == ACC_0xffffL)
203 # undef __ACC_RENAME_A
204 # undef __ACC_RENAME_B
205 # if defined(__AZTEC_C__) && defined(__DOS__)
206 # define __ACC_RENAME_A 1
207 # elif defined(_MSC_VER) && defined(MSDOS)
208 # if (_MSC_VER < 600)
209 # define __ACC_RENAME_A 1
210 # elif (_MSC_VER < 700)
211 # define __ACC_RENAME_B 1
212 # endif
213 # elif defined(__TSC__) && defined(__OS2__)
214 # define __ACC_RENAME_A 1
215 # elif defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0410)
216 # define __ACC_RENAME_A 1
217 # elif defined(__PACIFIC__) && defined(DOS)
218 # if !defined(__far)
219 # define __far far
220 # endif
221 # if !defined(__near)
222 # define __near near
223 # endif
224 # endif
225 # if defined(__ACC_RENAME_A)
226 # if !defined(__cdecl)
227 # define __cdecl cdecl
228 # endif
229 # if !defined(__far)
230 # define __far far
231 # endif
232 # if !defined(__huge)
233 # define __huge huge
234 # endif
235 # if !defined(__near)
236 # define __near near
237 # endif
238 # if !defined(__pascal)
239 # define __pascal pascal
240 # endif
241 # if !defined(__huge)
242 # define __huge huge
243 # endif
244 # elif defined(__ACC_RENAME_B)
245 # if !defined(__cdecl)
246 # define __cdecl _cdecl
247 # endif
248 # if !defined(__far)
249 # define __far _far
250 # endif
251 # if !defined(__huge)
252 # define __huge _huge
253 # endif
254 # if !defined(__near)
255 # define __near _near
256 # endif
257 # if !defined(__pascal)
258 # define __pascal _pascal
259 # endif
260 # elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__)
261 # if !defined(__cdecl)
262 # define __cdecl cdecl
263 # endif
264 # if !defined(__pascal)
265 # define __pascal pascal
266 # endif
267 # endif
268 # undef __ACC_RENAME_A
269 # undef __ACC_RENAME_B
270 #endif
271 #if (UINT_MAX == ACC_0xffffL)
272 #if defined(__AZTEC_C__) && defined(__DOS__)
273 # define ACC_BROKEN_CDECL_ALT_SYNTAX 1
274 #elif defined(_MSC_VER) && defined(MSDOS)
275 # if (_MSC_VER < 600)
276 # define ACC_BROKEN_INTEGRAL_CONSTANTS 1
277 # endif
278 # if (_MSC_VER < 700)
279 # define ACC_BROKEN_INTEGRAL_PROMOTION 1
280 # define ACC_BROKEN_SIZEOF 1
281 # endif
282 #elif defined(__PACIFIC__) && defined(DOS)
283 # define ACC_BROKEN_INTEGRAL_CONSTANTS 1
284 #elif defined(__TURBOC__) && defined(__MSDOS__)
285 # if (__TURBOC__ < 0x0150)
286 # define ACC_BROKEN_CDECL_ALT_SYNTAX 1
287 # define ACC_BROKEN_INTEGRAL_CONSTANTS 1
288 # define ACC_BROKEN_INTEGRAL_PROMOTION 1
289 # endif
290 # if (__TURBOC__ < 0x0200)
291 # define ACC_BROKEN_SIZEOF 1
292 # endif
293 # if (__TURBOC__ < 0x0400) && defined(__cplusplus)
294 # define ACC_BROKEN_CDECL_ALT_SYNTAX 1
295 # endif
296 #elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__)
297 # define ACC_BROKEN_CDECL_ALT_SYNTAX 1
298 # define ACC_BROKEN_SIZEOF 1
299 #endif
300 #endif
301 #if defined(__WATCOMC__) && (__WATCOMC__ < 900)
302 # define ACC_BROKEN_INTEGRAL_CONSTANTS 1
303 #endif
304 #if defined(_CRAY) && defined(_CRAY1)
305 # define ACC_BROKEN_SIGNED_RIGHT_SHIFT 1
306 #endif
307 #define ACC_PP_STRINGIZE(x) #x
308 #define ACC_PP_MACRO_EXPAND(x) ACC_PP_STRINGIZE(x)
309 #define ACC_PP_CONCAT2(a,b) a ## b
310 #define ACC_PP_CONCAT3(a,b,c) a ## b ## c
311 #define ACC_PP_CONCAT4(a,b,c,d) a ## b ## c ## d
312 #define ACC_PP_CONCAT5(a,b,c,d,e) a ## b ## c ## d ## e
313 #define ACC_PP_ECONCAT2(a,b) ACC_PP_CONCAT2(a,b)
314 #define ACC_PP_ECONCAT3(a,b,c) ACC_PP_CONCAT3(a,b,c)
315 #define ACC_PP_ECONCAT4(a,b,c,d) ACC_PP_CONCAT4(a,b,c,d)
316 #define ACC_PP_ECONCAT5(a,b,c,d,e) ACC_PP_CONCAT5(a,b,c,d,e)
317 #if 1
318 #define ACC_CPP_STRINGIZE(x) #x
319 #define ACC_CPP_MACRO_EXPAND(x) ACC_CPP_STRINGIZE(x)
320 #define ACC_CPP_CONCAT2(a,b) a ## b
321 #define ACC_CPP_CONCAT3(a,b,c) a ## b ## c
322 #define ACC_CPP_CONCAT4(a,b,c,d) a ## b ## c ## d
323 #define ACC_CPP_CONCAT5(a,b,c,d,e) a ## b ## c ## d ## e
324 #define ACC_CPP_ECONCAT2(a,b) ACC_CPP_CONCAT2(a,b)
325 #define ACC_CPP_ECONCAT3(a,b,c) ACC_CPP_CONCAT3(a,b,c)
326 #define ACC_CPP_ECONCAT4(a,b,c,d) ACC_CPP_CONCAT4(a,b,c,d)
327 #define ACC_CPP_ECONCAT5(a,b,c,d,e) ACC_CPP_CONCAT5(a,b,c,d,e)
328 #endif
329 #define __ACC_MASK_GEN(o,b) (((((o) << ((b)-1)) - (o)) << 1) + (o))
330 #if 1 && defined(__cplusplus)
331 # if !defined(__STDC_CONSTANT_MACROS)
332 # define __STDC_CONSTANT_MACROS 1
333 # endif
334 # if !defined(__STDC_LIMIT_MACROS)
335 # define __STDC_LIMIT_MACROS 1
336 # endif
337 #endif
338 #if defined(__cplusplus)
339 # define ACC_EXTERN_C extern "C"
340 #else
341 # define ACC_EXTERN_C extern
342 #endif
343 #if !defined(__ACC_OS_OVERRIDE)
344 #if defined(ACC_OS_FREESTANDING)
345 # define ACC_INFO_OS "freestanding"
346 #elif defined(ACC_OS_EMBEDDED)
347 # define ACC_INFO_OS "embedded"
348 #elif 1 && defined(__IAR_SYSTEMS_ICC__)
349 # define ACC_OS_EMBEDDED 1
350 # define ACC_INFO_OS "embedded"
351 #elif defined(__CYGWIN__) && defined(__GNUC__)
352 # define ACC_OS_CYGWIN 1
353 # define ACC_INFO_OS "cygwin"
354 #elif defined(__EMX__) && defined(__GNUC__)
355 # define ACC_OS_EMX 1
356 # define ACC_INFO_OS "emx"
357 #elif defined(__BEOS__)
358 # define ACC_OS_BEOS 1
359 # define ACC_INFO_OS "beos"
360 #elif defined(__Lynx__)
361 # define ACC_OS_LYNXOS 1
362 # define ACC_INFO_OS "lynxos"
363 #elif defined(__OS400__)
364 # define ACC_OS_OS400 1
365 # define ACC_INFO_OS "os400"
366 #elif defined(__QNX__)
367 # define ACC_OS_QNX 1
368 # define ACC_INFO_OS "qnx"
369 #elif defined(__BORLANDC__) && defined(__DPMI32__) && (__BORLANDC__ >= 0x0460)
370 # define ACC_OS_DOS32 1
371 # define ACC_INFO_OS "dos32"
372 #elif defined(__BORLANDC__) && defined(__DPMI16__)
373 # define ACC_OS_DOS16 1
374 # define ACC_INFO_OS "dos16"
375 #elif defined(__ZTC__) && defined(DOS386)
376 # define ACC_OS_DOS32 1
377 # define ACC_INFO_OS "dos32"
378 #elif defined(__OS2__) || defined(__OS2V2__)
379 # if (UINT_MAX == ACC_0xffffL)
380 # define ACC_OS_OS216 1
381 # define ACC_INFO_OS "os216"
382 # elif (UINT_MAX == ACC_0xffffffffL)
383 # define ACC_OS_OS2 1
384 # define ACC_INFO_OS "os2"
385 # else
386 # error "check your limits.h header"
387 # endif
388 #elif defined(__WIN64__) || defined(_WIN64) || defined(WIN64)
389 # define ACC_OS_WIN64 1
390 # define ACC_INFO_OS "win64"
391 #elif defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__WINDOWS_386__)
392 # define ACC_OS_WIN32 1
393 # define ACC_INFO_OS "win32"
394 #elif defined(__MWERKS__) && defined(__INTEL__)
395 # define ACC_OS_WIN32 1
396 # define ACC_INFO_OS "win32"
397 #elif defined(__WINDOWS__) || defined(_WINDOWS) || defined(_Windows)
398 # if (UINT_MAX == ACC_0xffffL)
399 # define ACC_OS_WIN16 1
400 # define ACC_INFO_OS "win16"
401 # elif (UINT_MAX == ACC_0xffffffffL)
402 # define ACC_OS_WIN32 1
403 # define ACC_INFO_OS "win32"
404 # else
405 # error "check your limits.h header"
406 # endif
407 #elif defined(__DOS__) || defined(__MSDOS__) || defined(_MSDOS) || defined(MSDOS) || (defined(__PACIFIC__) && defined(DOS))
408 # if (UINT_MAX == ACC_0xffffL)
409 # define ACC_OS_DOS16 1
410 # define ACC_INFO_OS "dos16"
411 # elif (UINT_MAX == ACC_0xffffffffL)
412 # define ACC_OS_DOS32 1
413 # define ACC_INFO_OS "dos32"
414 # else
415 # error "check your limits.h header"
416 # endif
417 #elif defined(__WATCOMC__)
418 # if defined(__NT__) && (UINT_MAX == ACC_0xffffL)
419 # define ACC_OS_DOS16 1
420 # define ACC_INFO_OS "dos16"
421 # elif defined(__NT__) && (__WATCOMC__ < 1100)
422 # define ACC_OS_WIN32 1
423 # define ACC_INFO_OS "win32"
424 # elif defined(__linux__) || defined(__LINUX__)
425 # define ACC_OS_POSIX 1
426 # define ACC_INFO_OS "posix"
427 # else
428 # error "please specify a target using the -bt compiler option"
429 # endif
430 #elif defined(__palmos__)
431 # define ACC_OS_PALMOS 1
432 # define ACC_INFO_OS "palmos"
433 #elif defined(__TOS__) || defined(__atarist__)
434 # define ACC_OS_TOS 1
435 # define ACC_INFO_OS "tos"
436 #elif defined(macintosh) && !defined(__ppc__)
437 # define ACC_OS_MACCLASSIC 1
438 # define ACC_INFO_OS "macclassic"
439 #elif defined(__VMS)
440 # define ACC_OS_VMS 1
441 # define ACC_INFO_OS "vms"
442 #elif ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
443 # define ACC_OS_CONSOLE 1
444 # define ACC_OS_CONSOLE_PS2 1
445 # define ACC_INFO_OS "console"
446 # define ACC_INFO_OS_CONSOLE "ps2"
447 #elif (defined(__mips__) && defined(__psp__))
448 # define ACC_OS_CONSOLE 1
449 # define ACC_OS_CONSOLE_PSP 1
450 # define ACC_INFO_OS "console"
451 # define ACC_INFO_OS_CONSOLE "psp"
452 #else
453 # define ACC_OS_POSIX 1
454 # define ACC_INFO_OS "posix"
455 #endif
456 #if (ACC_OS_POSIX)
457 # if defined(_AIX) || defined(__AIX__) || defined(__aix__)
458 # define ACC_OS_POSIX_AIX 1
459 # define ACC_INFO_OS_POSIX "aix"
460 # elif defined(__FreeBSD__)
461 # define ACC_OS_POSIX_FREEBSD 1
462 # define ACC_INFO_OS_POSIX "freebsd"
463 # elif defined(__hpux__) || defined(__hpux)
464 # define ACC_OS_POSIX_HPUX 1
465 # define ACC_INFO_OS_POSIX "hpux"
466 # elif defined(__INTERIX)
467 # define ACC_OS_POSIX_INTERIX 1
468 # define ACC_INFO_OS_POSIX "interix"
469 # elif defined(__IRIX__) || defined(__irix__)
470 # define ACC_OS_POSIX_IRIX 1
471 # define ACC_INFO_OS_POSIX "irix"
472 # elif defined(__linux__) || defined(__linux) || defined(__LINUX__)
473 # define ACC_OS_POSIX_LINUX 1
474 # define ACC_INFO_OS_POSIX "linux"
475 # elif defined(__APPLE__) || defined(__MACOS__)
476 # define ACC_OS_POSIX_MACOSX 1
477 # define ACC_INFO_OS_POSIX "macosx"
478 # elif defined(__minix__) || defined(__minix)
479 # define ACC_OS_POSIX_MINIX 1
480 # define ACC_INFO_OS_POSIX "minix"
481 # elif defined(__NetBSD__)
482 # define ACC_OS_POSIX_NETBSD 1
483 # define ACC_INFO_OS_POSIX "netbsd"
484 # elif defined(__OpenBSD__)
485 # define ACC_OS_POSIX_OPENBSD 1
486 # define ACC_INFO_OS_POSIX "openbsd"
487 # elif defined(__osf__)
488 # define ACC_OS_POSIX_OSF 1
489 # define ACC_INFO_OS_POSIX "osf"
490 # elif defined(__solaris__) || defined(__sun)
491 # if defined(__SVR4) || defined(__svr4__)
492 # define ACC_OS_POSIX_SOLARIS 1
493 # define ACC_INFO_OS_POSIX "solaris"
494 # else
495 # define ACC_OS_POSIX_SUNOS 1
496 # define ACC_INFO_OS_POSIX "sunos"
497 # endif
498 # elif defined(__ultrix__) || defined(__ultrix)
499 # define ACC_OS_POSIX_ULTRIX 1
500 # define ACC_INFO_OS_POSIX "ultrix"
501 # elif defined(_UNICOS)
502 # define ACC_OS_POSIX_UNICOS 1
503 # define ACC_INFO_OS_POSIX "unicos"
504 # else
505 # define ACC_OS_POSIX_UNKNOWN 1
506 # define ACC_INFO_OS_POSIX "unknown"
507 # endif
508 #endif
509 #endif
510 #if (ACC_OS_DOS16 || ACC_OS_OS216 || ACC_OS_WIN16)
511 # if (UINT_MAX != ACC_0xffffL)
512 # error "this should not happen"
513 # endif
514 # if (ULONG_MAX != ACC_0xffffffffL)
515 # error "this should not happen"
516 # endif
517 #endif
518 #if (ACC_OS_DOS32 || ACC_OS_OS2 || ACC_OS_WIN32 || ACC_OS_WIN64)
519 # if (UINT_MAX != ACC_0xffffffffL)
520 # error "this should not happen"
521 # endif
522 # if (ULONG_MAX != ACC_0xffffffffL)
523 # error "this should not happen"
524 # endif
525 #endif
526 #if defined(CIL) && defined(_GNUCC) && defined(__GNUC__)
527 # define ACC_CC_CILLY 1
528 # define ACC_INFO_CC "Cilly"
529 # if defined(__CILLY__)
530 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__CILLY__)
531 # else
532 # define ACC_INFO_CCVER "unknown"
533 # endif
534 #elif 0 && defined(SDCC) && defined(__VERSION__) && !defined(__GNUC__)
535 # define ACC_CC_SDCC 1
536 # define ACC_INFO_CC "sdcc"
537 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(SDCC)
538 #elif defined(__PATHSCALE__) && defined(__PATHCC_PATCHLEVEL__)
539 # define ACC_CC_PATHSCALE (__PATHCC__ * 0x10000L + __PATHCC_MINOR__ * 0x100 + __PATHCC_PATCHLEVEL__)
540 # define ACC_INFO_CC "Pathscale C"
541 # define ACC_INFO_CCVER __PATHSCALE__
542 #elif defined(__INTEL_COMPILER)
543 # define ACC_CC_INTELC 1
544 # define ACC_INFO_CC "Intel C"
545 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__INTEL_COMPILER)
546 # if defined(_WIN32) || defined(_WIN64)
547 # define ACC_CC_SYNTAX_MSC 1
548 # else
549 # define ACC_CC_SYNTAX_GNUC 1
550 # endif
551 #elif defined(__POCC__) && defined(_WIN32)
552 # define ACC_CC_PELLESC 1
553 # define ACC_INFO_CC "Pelles C"
554 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__POCC__)
555 #elif defined(__llvm__) && defined(__GNUC__) && defined(__VERSION__)
556 # if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
557 # define ACC_CC_LLVM (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
558 # else
559 # define ACC_CC_LLVM (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
560 # endif
561 # define ACC_INFO_CC "llvm-gcc"
562 # define ACC_INFO_CCVER __VERSION__
563 #elif defined(__GNUC__) && defined(__VERSION__)
564 # if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
565 # define ACC_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
566 # elif defined(__GNUC_MINOR__)
567 # define ACC_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
568 # else
569 # define ACC_CC_GNUC (__GNUC__ * 0x10000L)
570 # endif
571 # define ACC_INFO_CC "gcc"
572 # define ACC_INFO_CCVER __VERSION__
573 #elif defined(__ACK__) && defined(_ACK)
574 # define ACC_CC_ACK 1
575 # define ACC_INFO_CC "Amsterdam Compiler Kit C"
576 # define ACC_INFO_CCVER "unknown"
577 #elif defined(__AZTEC_C__)
578 # define ACC_CC_AZTECC 1
579 # define ACC_INFO_CC "Aztec C"
580 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__AZTEC_C__)
581 #elif defined(__BORLANDC__)
582 # define ACC_CC_BORLANDC 1
583 # define ACC_INFO_CC "Borland C"
584 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__BORLANDC__)
585 #elif defined(_CRAYC) && defined(_RELEASE)
586 # define ACC_CC_CRAYC 1
587 # define ACC_INFO_CC "Cray C"
588 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(_RELEASE)
589 #elif defined(__DMC__) && defined(__SC__)
590 # define ACC_CC_DMC 1
591 # define ACC_INFO_CC "Digital Mars C"
592 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__DMC__)
593 #elif defined(__DECC)
594 # define ACC_CC_DECC 1
595 # define ACC_INFO_CC "DEC C"
596 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__DECC)
597 #elif defined(__HIGHC__)
598 # define ACC_CC_HIGHC 1
599 # define ACC_INFO_CC "MetaWare High C"
600 # define ACC_INFO_CCVER "unknown"
601 #elif defined(__IAR_SYSTEMS_ICC__)
602 # define ACC_CC_IARC 1
603 # define ACC_INFO_CC "IAR C"
604 # if defined(__VER__)
605 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__VER__)
606 # else
607 # define ACC_INFO_CCVER "unknown"
608 # endif
609 #elif defined(__IBMC__)
610 # define ACC_CC_IBMC 1
611 # define ACC_INFO_CC "IBM C"
612 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__IBMC__)
613 #elif defined(__KEIL__) && defined(__C166__)
614 # define ACC_CC_KEILC 1
615 # define ACC_INFO_CC "Keil C"
616 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__C166__)
617 #elif defined(__LCC__) && defined(_WIN32) && defined(__LCCOPTIMLEVEL)
618 # define ACC_CC_LCCWIN32 1
619 # define ACC_INFO_CC "lcc-win32"
620 # define ACC_INFO_CCVER "unknown"
621 #elif defined(__LCC__)
622 # define ACC_CC_LCC 1
623 # define ACC_INFO_CC "lcc"
624 # if defined(__LCC_VERSION__)
625 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__LCC_VERSION__)
626 # else
627 # define ACC_INFO_CCVER "unknown"
628 # endif
629 #elif defined(_MSC_VER)
630 # define ACC_CC_MSC 1
631 # define ACC_INFO_CC "Microsoft C"
632 # if defined(_MSC_FULL_VER)
633 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(_MSC_VER) "." ACC_PP_MACRO_EXPAND(_MSC_FULL_VER)
634 # else
635 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(_MSC_VER)
636 # endif
637 #elif defined(__MWERKS__)
638 # define ACC_CC_MWERKS 1
639 # define ACC_INFO_CC "Metrowerks C"
640 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__MWERKS__)
641 #elif (defined(__NDPC__) || defined(__NDPX__)) && defined(__i386)
642 # define ACC_CC_NDPC 1
643 # define ACC_INFO_CC "Microway NDP C"
644 # define ACC_INFO_CCVER "unknown"
645 #elif defined(__PACIFIC__)
646 # define ACC_CC_PACIFICC 1
647 # define ACC_INFO_CC "Pacific C"
648 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__PACIFIC__)
649 #elif defined(__PGI) && (defined(__linux__) || defined(__WIN32__))
650 # define ACC_CC_PGI 1
651 # define ACC_INFO_CC "Portland Group PGI C"
652 # define ACC_INFO_CCVER "unknown"
653 #elif defined(__PUREC__) && defined(__TOS__)
654 # define ACC_CC_PUREC 1
655 # define ACC_INFO_CC "Pure C"
656 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__PUREC__)
657 #elif defined(__SC__) && defined(__ZTC__)
658 # define ACC_CC_SYMANTECC 1
659 # define ACC_INFO_CC "Symantec C"
660 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__SC__)
661 #elif defined(__SUNPRO_C)
662 # define ACC_INFO_CC "SunPro C"
663 # if ((__SUNPRO_C)+0 > 0)
664 # define ACC_CC_SUNPROC __SUNPRO_C
665 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__SUNPRO_C)
666 # else
667 # define ACC_CC_SUNPROC 1
668 # define ACC_INFO_CCVER "unknown"
669 # endif
670 #elif defined(__SUNPRO_CC)
671 # define ACC_INFO_CC "SunPro C"
672 # if ((__SUNPRO_CC)+0 > 0)
673 # define ACC_CC_SUNPROC __SUNPRO_CC
674 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__SUNPRO_CC)
675 # else
676 # define ACC_CC_SUNPROC 1
677 # define ACC_INFO_CCVER "unknown"
678 # endif
679 #elif defined(__TINYC__)
680 # define ACC_CC_TINYC 1
681 # define ACC_INFO_CC "Tiny C"
682 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__TINYC__)
683 #elif defined(__TSC__)
684 # define ACC_CC_TOPSPEEDC 1
685 # define ACC_INFO_CC "TopSpeed C"
686 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__TSC__)
687 #elif defined(__WATCOMC__)
688 # define ACC_CC_WATCOMC 1
689 # define ACC_INFO_CC "Watcom C"
690 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__WATCOMC__)
691 #elif defined(__TURBOC__)
692 # define ACC_CC_TURBOC 1
693 # define ACC_INFO_CC "Turbo C"
694 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__TURBOC__)
695 #elif defined(__ZTC__)
696 # define ACC_CC_ZORTECHC 1
697 # define ACC_INFO_CC "Zortech C"
698 # if (__ZTC__ == 0x310)
699 # define ACC_INFO_CCVER "0x310"
700 # else
701 # define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__ZTC__)
702 # endif
703 #else
704 # define ACC_CC_UNKNOWN 1
705 # define ACC_INFO_CC "unknown"
706 # define ACC_INFO_CCVER "unknown"
707 #endif
708 #if 0 && (ACC_CC_MSC && (_MSC_VER >= 1200)) && !defined(_MSC_FULL_VER)
709 # error "ACC_CC_MSC: _MSC_FULL_VER is not defined"
710 #endif
711 #if !defined(__ACC_ARCH_OVERRIDE) && !defined(ACC_ARCH_GENERIC) && defined(_CRAY)
712 # if (UINT_MAX > ACC_0xffffffffL) && defined(_CRAY)
713 # if defined(_CRAYMPP) || defined(_CRAYT3D) || defined(_CRAYT3E)
714 # define ACC_ARCH_CRAY_MPP 1
715 # elif defined(_CRAY1)
716 # define ACC_ARCH_CRAY_PVP 1
717 # endif
718 # endif
719 #endif
720 #if !defined(__ACC_ARCH_OVERRIDE)
721 #if defined(ACC_ARCH_GENERIC)
722 # define ACC_INFO_ARCH "generic"
723 #elif (ACC_OS_DOS16 || ACC_OS_OS216 || ACC_OS_WIN16)
724 # define ACC_ARCH_I086 1
725 # define ACC_ARCH_IA16 1
726 # define ACC_INFO_ARCH "i086"
727 #elif defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA)
728 # define ACC_ARCH_ALPHA 1
729 # define ACC_INFO_ARCH "alpha"
730 #elif (ACC_ARCH_CRAY_MPP) && (defined(_CRAYT3D) || defined(_CRAYT3E))
731 # define ACC_ARCH_ALPHA 1
732 # define ACC_INFO_ARCH "alpha"
733 #elif defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64)
734 # define ACC_ARCH_AMD64 1
735 # define ACC_INFO_ARCH "amd64"
736 #elif defined(__thumb__) || (defined(_M_ARM) && defined(_M_THUMB))
737 # define ACC_ARCH_ARM 1
738 # define ACC_ARCH_ARM_THUMB 1
739 # define ACC_INFO_ARCH "arm_thumb"
740 #elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCARM__)
741 # define ACC_ARCH_ARM 1
742 # if defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 1)
743 # define ACC_ARCH_ARM_THUMB 1
744 # define ACC_INFO_ARCH "arm_thumb"
745 # elif defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 2)
746 # define ACC_INFO_ARCH "arm"
747 # else
748 # define ACC_INFO_ARCH "arm"
749 # endif
750 #elif defined(__arm__) || defined(_M_ARM)
751 # define ACC_ARCH_ARM 1
752 # define ACC_INFO_ARCH "arm"
753 #elif (UINT_MAX <= ACC_0xffffL) && defined(__AVR__)
754 # define ACC_ARCH_AVR 1
755 # define ACC_INFO_ARCH "avr"
756 #elif defined(__bfin__)
757 # define ACC_ARCH_BLACKFIN 1
758 # define ACC_INFO_ARCH "blackfin"
759 #elif (UINT_MAX == ACC_0xffffL) && defined(__C166__)
760 # define ACC_ARCH_C166 1
761 # define ACC_INFO_ARCH "c166"
762 #elif defined(__cris__)
763 # define ACC_ARCH_CRIS 1
764 # define ACC_INFO_ARCH "cris"
765 #elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCEZ80__)
766 # define ACC_ARCH_EZ80 1
767 # define ACC_INFO_ARCH "ez80"
768 #elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
769 # define ACC_ARCH_H8300 1
770 # define ACC_INFO_ARCH "h8300"
771 #elif defined(__hppa__) || defined(__hppa)
772 # define ACC_ARCH_HPPA 1
773 # define ACC_INFO_ARCH "hppa"
774 #elif defined(__386__) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_M_I386)
775 # define ACC_ARCH_I386 1
776 # define ACC_ARCH_IA32 1
777 # define ACC_INFO_ARCH "i386"
778 #elif (ACC_CC_ZORTECHC && defined(__I86__))
779 # define ACC_ARCH_I386 1
780 # define ACC_ARCH_IA32 1
781 # define ACC_INFO_ARCH "i386"
782 #elif (ACC_OS_DOS32 && ACC_CC_HIGHC) && defined(_I386)
783 # define ACC_ARCH_I386 1
784 # define ACC_ARCH_IA32 1
785 # define ACC_INFO_ARCH "i386"
786 #elif defined(__ia64__) || defined(__ia64) || defined(_M_IA64)
787 # define ACC_ARCH_IA64 1
788 # define ACC_INFO_ARCH "ia64"
789 #elif (UINT_MAX == ACC_0xffffL) && defined(__m32c__)
790 # define ACC_ARCH_M16C 1
791 # define ACC_INFO_ARCH "m16c"
792 #elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCM16C__)
793 # define ACC_ARCH_M16C 1
794 # define ACC_INFO_ARCH "m16c"
795 #elif defined(__m32r__)
796 # define ACC_ARCH_M32R 1
797 # define ACC_INFO_ARCH "m32r"
798 #elif (ACC_OS_TOS) || defined(__m68k__) || defined(__m68000__) || defined(__mc68000__) || defined(__mc68020__) || defined(_M_M68K)
799 # define ACC_ARCH_M68K 1
800 # define ACC_INFO_ARCH "m68k"
801 #elif (UINT_MAX == ACC_0xffffL) && defined(__C251__)
802 # define ACC_ARCH_MCS251 1
803 # define ACC_INFO_ARCH "mcs251"
804 #elif (UINT_MAX == ACC_0xffffL) && defined(__C51__)
805 # define ACC_ARCH_MCS51 1
806 # define ACC_INFO_ARCH "mcs51"
807 #elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__)
808 # define ACC_ARCH_MCS51 1
809 # define ACC_INFO_ARCH "mcs51"
810 #elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000)
811 # define ACC_ARCH_MIPS 1
812 # define ACC_INFO_ARCH "mips"
813 #elif (UINT_MAX == ACC_0xffffL) && defined(__MSP430__)
814 # define ACC_ARCH_MSP430 1
815 # define ACC_INFO_ARCH "msp430"
816 #elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC430__)
817 # define ACC_ARCH_MSP430 1
818 # define ACC_INFO_ARCH "msp430"
819 #elif defined(__powerpc__) || defined(__powerpc) || defined(__ppc__) || defined(__PPC__) || defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PWR)
820 # define ACC_ARCH_POWERPC 1
821 # define ACC_INFO_ARCH "powerpc"
822 #elif defined(__s390__) || defined(__s390) || defined(__s390x__) || defined(__s390x)
823 # define ACC_ARCH_S390 1
824 # define ACC_INFO_ARCH "s390"
825 #elif defined(__sh__) || defined(_M_SH)
826 # define ACC_ARCH_SH 1
827 # define ACC_INFO_ARCH "sh"
828 #elif defined(__sparc__) || defined(__sparc) || defined(__sparcv8)
829 # define ACC_ARCH_SPARC 1
830 # define ACC_INFO_ARCH "sparc"
831 #elif defined(__SPU__)
832 # define ACC_ARCH_SPU 1
833 # define ACC_INFO_ARCH "spu"
834 #elif (UINT_MAX == ACC_0xffffL) && defined(__z80)
835 # define ACC_ARCH_Z80 1
836 # define ACC_INFO_ARCH "z80"
837 #elif (ACC_ARCH_CRAY_PVP)
838 # if defined(_CRAYSV1)
839 # define ACC_ARCH_CRAY_SV1 1
840 # define ACC_INFO_ARCH "cray_sv1"
841 # elif (_ADDR64)
842 # define ACC_ARCH_CRAY_T90 1
843 # define ACC_INFO_ARCH "cray_t90"
844 # elif (_ADDR32)
845 # define ACC_ARCH_CRAY_YMP 1
846 # define ACC_INFO_ARCH "cray_ymp"
847 # else
848 # define ACC_ARCH_CRAY_XMP 1
849 # define ACC_INFO_ARCH "cray_xmp"
850 # endif
851 #else
852 # define ACC_ARCH_UNKNOWN 1
853 # define ACC_INFO_ARCH "unknown"
854 #endif
855 #endif
856 #if 1 && (ACC_ARCH_UNKNOWN) && (ACC_OS_DOS32 || ACC_OS_OS2)
857 # error "FIXME - missing define for CPU architecture"
858 #endif
859 #if 1 && (ACC_ARCH_UNKNOWN) && (ACC_OS_WIN32)
860 # error "FIXME - missing WIN32 define for CPU architecture"
861 #endif
862 #if 1 && (ACC_ARCH_UNKNOWN) && (ACC_OS_WIN64)
863 # error "FIXME - missing WIN64 define for CPU architecture"
864 #endif
865 #if (ACC_OS_OS216 || ACC_OS_WIN16)
866 # define ACC_ARCH_I086PM 1
867 # define ACC_ARCH_IA16PM 1
868 #elif 1 && (ACC_OS_DOS16 && defined(BLX286))
869 # define ACC_ARCH_I086PM 1
870 # define ACC_ARCH_IA16PM 1
871 #elif 1 && (ACC_OS_DOS16 && defined(DOSX286))
872 # define ACC_ARCH_I086PM 1
873 # define ACC_ARCH_IA16PM 1
874 #elif 1 && (ACC_OS_DOS16 && ACC_CC_BORLANDC && defined(__DPMI16__))
875 # define ACC_ARCH_I086PM 1
876 # define ACC_ARCH_IA16PM 1
877 #endif
878 #if defined(ACC_ARCH_ARM_THUMB) && !defined(ACC_ARCH_ARM)
879 # error "this should not happen"
880 #endif
881 #if defined(ACC_ARCH_I086PM) && !defined(ACC_ARCH_I086)
882 # error "this should not happen"
883 #endif
884 #if (ACC_ARCH_I086)
885 # if (UINT_MAX != ACC_0xffffL)
886 # error "this should not happen"
887 # endif
888 # if (ULONG_MAX != ACC_0xffffffffL)
889 # error "this should not happen"
890 # endif
891 #endif
892 #if (ACC_ARCH_I386)
893 # if (UINT_MAX != ACC_0xffffL) && defined(__i386_int16__)
894 # error "this should not happen"
895 # endif
896 # if (UINT_MAX != ACC_0xffffffffL) && !defined(__i386_int16__)
897 # error "this should not happen"
898 # endif
899 # if (ULONG_MAX != ACC_0xffffffffL)
900 # error "this should not happen"
901 # endif
902 #endif
903 #if !defined(__ACC_MM_OVERRIDE)
904 #if (ACC_ARCH_I086)
905 #if (UINT_MAX != ACC_0xffffL)
906 # error "this should not happen"
907 #endif
908 #if defined(__TINY__) || defined(M_I86TM) || defined(_M_I86TM)
909 # define ACC_MM_TINY 1
910 #elif defined(__HUGE__) || defined(_HUGE_) || defined(M_I86HM) || defined(_M_I86HM)
911 # define ACC_MM_HUGE 1
912 #elif defined(__SMALL__) || defined(M_I86SM) || defined(_M_I86SM) || defined(SMALL_MODEL)
913 # define ACC_MM_SMALL 1
914 #elif defined(__MEDIUM__) || defined(M_I86MM) || defined(_M_I86MM)
915 # define ACC_MM_MEDIUM 1
916 #elif defined(__COMPACT__) || defined(M_I86CM) || defined(_M_I86CM)
917 # define ACC_MM_COMPACT 1
918 #elif defined(__LARGE__) || defined(M_I86LM) || defined(_M_I86LM) || defined(LARGE_MODEL)
919 # define ACC_MM_LARGE 1
920 #elif (ACC_CC_AZTECC)
921 # if defined(_LARGE_CODE) && defined(_LARGE_DATA)
922 # define ACC_MM_LARGE 1
923 # elif defined(_LARGE_CODE)
924 # define ACC_MM_MEDIUM 1
925 # elif defined(_LARGE_DATA)
926 # define ACC_MM_COMPACT 1
927 # else
928 # define ACC_MM_SMALL 1
929 # endif
930 #elif (ACC_CC_ZORTECHC && defined(__VCM__))
931 # define ACC_MM_LARGE 1
932 #else
933 # error "unknown memory model"
934 #endif
935 #if (ACC_OS_DOS16 || ACC_OS_OS216 || ACC_OS_WIN16)
936 #define ACC_HAVE_MM_HUGE_PTR 1
937 #define ACC_HAVE_MM_HUGE_ARRAY 1
938 #if (ACC_MM_TINY)
939 # undef ACC_HAVE_MM_HUGE_ARRAY
940 #endif
941 #if (ACC_CC_AZTECC || ACC_CC_PACIFICC || ACC_CC_ZORTECHC)
942 # undef ACC_HAVE_MM_HUGE_PTR
943 # undef ACC_HAVE_MM_HUGE_ARRAY
944 #elif (ACC_CC_DMC || ACC_CC_SYMANTECC)
945 # undef ACC_HAVE_MM_HUGE_ARRAY
946 #elif (ACC_CC_MSC && defined(_QC))
947 # undef ACC_HAVE_MM_HUGE_ARRAY
948 # if (_MSC_VER < 600)
949 # undef ACC_HAVE_MM_HUGE_PTR
950 # endif
951 #elif (ACC_CC_TURBOC && (__TURBOC__ < 0x0295))
952 # undef ACC_HAVE_MM_HUGE_ARRAY
953 #endif
954 #if (ACC_ARCH_I086PM) && !defined(ACC_HAVE_MM_HUGE_PTR)
955 # if (ACC_OS_DOS16)
956 # error "this should not happen"
957 # elif (ACC_CC_ZORTECHC)
958 # else
959 # error "this should not happen"
960 # endif
961 #endif
962 #ifdef __cplusplus
963 extern "C" {
964 #endif
965 #if (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0200))
966 extern void __near __cdecl _AHSHIFT(void);
967 # define ACC_MM_AHSHIFT ((unsigned) _AHSHIFT)
968 #elif (ACC_CC_DMC || ACC_CC_SYMANTECC || ACC_CC_ZORTECHC)
969 extern void __near __cdecl _AHSHIFT(void);
970 # define ACC_MM_AHSHIFT ((unsigned) _AHSHIFT)
971 #elif (ACC_CC_MSC || ACC_CC_TOPSPEEDC)
972 extern void __near __cdecl _AHSHIFT(void);
973 # define ACC_MM_AHSHIFT ((unsigned) _AHSHIFT)
974 #elif (ACC_CC_TURBOC && (__TURBOC__ >= 0x0295))
975 extern void __near __cdecl _AHSHIFT(void);
976 # define ACC_MM_AHSHIFT ((unsigned) _AHSHIFT)
977 #elif ((ACC_CC_AZTECC || ACC_CC_PACIFICC || ACC_CC_TURBOC) && ACC_OS_DOS16)
978 # define ACC_MM_AHSHIFT 12
979 #elif (ACC_CC_WATCOMC)
980 extern unsigned char _HShift;
981 # define ACC_MM_AHSHIFT ((unsigned) _HShift)
982 #else
983 # error "FIXME - implement ACC_MM_AHSHIFT"
984 #endif
985 #ifdef __cplusplus
987 #endif
988 #endif
989 #elif (ACC_ARCH_C166)
990 #if !defined(__MODEL__)
991 # error "FIXME - C166 __MODEL__"
992 #elif ((__MODEL__) == 0)
993 # define ACC_MM_SMALL 1
994 #elif ((__MODEL__) == 1)
995 # define ACC_MM_SMALL 1
996 #elif ((__MODEL__) == 2)
997 # define ACC_MM_LARGE 1
998 #elif ((__MODEL__) == 3)
999 # define ACC_MM_TINY 1
1000 #elif ((__MODEL__) == 4)
1001 # define ACC_MM_XTINY 1
1002 #elif ((__MODEL__) == 5)
1003 # define ACC_MM_XSMALL 1
1004 #else
1005 # error "FIXME - C166 __MODEL__"
1006 #endif
1007 #elif (ACC_ARCH_MCS251)
1008 #if !defined(__MODEL__)
1009 # error "FIXME - MCS251 __MODEL__"
1010 #elif ((__MODEL__) == 0)
1011 # define ACC_MM_SMALL 1
1012 #elif ((__MODEL__) == 2)
1013 # define ACC_MM_LARGE 1
1014 #elif ((__MODEL__) == 3)
1015 # define ACC_MM_TINY 1
1016 #elif ((__MODEL__) == 4)
1017 # define ACC_MM_XTINY 1
1018 #elif ((__MODEL__) == 5)
1019 # define ACC_MM_XSMALL 1
1020 #else
1021 # error "FIXME - MCS251 __MODEL__"
1022 #endif
1023 #elif (ACC_ARCH_MCS51)
1024 #if !defined(__MODEL__)
1025 # error "FIXME - MCS51 __MODEL__"
1026 #elif ((__MODEL__) == 1)
1027 # define ACC_MM_SMALL 1
1028 #elif ((__MODEL__) == 2)
1029 # define ACC_MM_LARGE 1
1030 #elif ((__MODEL__) == 3)
1031 # define ACC_MM_TINY 1
1032 #elif ((__MODEL__) == 4)
1033 # define ACC_MM_XTINY 1
1034 #elif ((__MODEL__) == 5)
1035 # define ACC_MM_XSMALL 1
1036 #else
1037 # error "FIXME - MCS51 __MODEL__"
1038 #endif
1039 #elif (ACC_ARCH_CRAY_PVP)
1040 # define ACC_MM_PVP 1
1041 #else
1042 # define ACC_MM_FLAT 1
1043 #endif
1044 #if (ACC_MM_COMPACT)
1045 # define ACC_INFO_MM "compact"
1046 #elif (ACC_MM_FLAT)
1047 # define ACC_INFO_MM "flat"
1048 #elif (ACC_MM_HUGE)
1049 # define ACC_INFO_MM "huge"
1050 #elif (ACC_MM_LARGE)
1051 # define ACC_INFO_MM "large"
1052 #elif (ACC_MM_MEDIUM)
1053 # define ACC_INFO_MM "medium"
1054 #elif (ACC_MM_PVP)
1055 # define ACC_INFO_MM "pvp"
1056 #elif (ACC_MM_SMALL)
1057 # define ACC_INFO_MM "small"
1058 #elif (ACC_MM_TINY)
1059 # define ACC_INFO_MM "tiny"
1060 #else
1061 # error "unknown memory model"
1062 #endif
1063 #endif
1064 #if defined(SIZEOF_SHORT)
1065 # define ACC_SIZEOF_SHORT (SIZEOF_SHORT)
1066 #endif
1067 #if defined(SIZEOF_INT)
1068 # define ACC_SIZEOF_INT (SIZEOF_INT)
1069 #endif
1070 #if defined(SIZEOF_LONG)
1071 # define ACC_SIZEOF_LONG (SIZEOF_LONG)
1072 #endif
1073 #if defined(SIZEOF_LONG_LONG)
1074 # define ACC_SIZEOF_LONG_LONG (SIZEOF_LONG_LONG)
1075 #endif
1076 #if defined(SIZEOF___INT16)
1077 # define ACC_SIZEOF___INT16 (SIZEOF___INT16)
1078 #endif
1079 #if defined(SIZEOF___INT32)
1080 # define ACC_SIZEOF___INT32 (SIZEOF___INT32)
1081 #endif
1082 #if defined(SIZEOF___INT64)
1083 # define ACC_SIZEOF___INT64 (SIZEOF___INT64)
1084 #endif
1085 #if defined(SIZEOF_VOID_P)
1086 # define ACC_SIZEOF_VOID_P (SIZEOF_VOID_P)
1087 #endif
1088 #if defined(SIZEOF_SIZE_T)
1089 # define ACC_SIZEOF_SIZE_T (SIZEOF_SIZE_T)
1090 #endif
1091 #if defined(SIZEOF_PTRDIFF_T)
1092 # define ACC_SIZEOF_PTRDIFF_T (SIZEOF_PTRDIFF_T)
1093 #endif
1094 #define __ACC_LSR(x,b) (((x)+0ul) >> (b))
1095 #if !defined(ACC_SIZEOF_SHORT)
1096 # if (ACC_ARCH_CRAY_PVP)
1097 # define ACC_SIZEOF_SHORT 8
1098 # elif (USHRT_MAX == ACC_0xffffL)
1099 # define ACC_SIZEOF_SHORT 2
1100 # elif (__ACC_LSR(USHRT_MAX,7) == 1)
1101 # define ACC_SIZEOF_SHORT 1
1102 # elif (__ACC_LSR(USHRT_MAX,15) == 1)
1103 # define ACC_SIZEOF_SHORT 2
1104 # elif (__ACC_LSR(USHRT_MAX,31) == 1)
1105 # define ACC_SIZEOF_SHORT 4
1106 # elif (__ACC_LSR(USHRT_MAX,63) == 1)
1107 # define ACC_SIZEOF_SHORT 8
1108 # elif (__ACC_LSR(USHRT_MAX,127) == 1)
1109 # define ACC_SIZEOF_SHORT 16
1110 # else
1111 # error "ACC_SIZEOF_SHORT"
1112 # endif
1113 #endif
1114 #if !defined(ACC_SIZEOF_INT)
1115 # if (ACC_ARCH_CRAY_PVP)
1116 # define ACC_SIZEOF_INT 8
1117 # elif (UINT_MAX == ACC_0xffffL)
1118 # define ACC_SIZEOF_INT 2
1119 # elif (UINT_MAX == ACC_0xffffffffL)
1120 # define ACC_SIZEOF_INT 4
1121 # elif (__ACC_LSR(UINT_MAX,7) == 1)
1122 # define ACC_SIZEOF_INT 1
1123 # elif (__ACC_LSR(UINT_MAX,15) == 1)
1124 # define ACC_SIZEOF_INT 2
1125 # elif (__ACC_LSR(UINT_MAX,31) == 1)
1126 # define ACC_SIZEOF_INT 4
1127 # elif (__ACC_LSR(UINT_MAX,63) == 1)
1128 # define ACC_SIZEOF_INT 8
1129 # elif (__ACC_LSR(UINT_MAX,127) == 1)
1130 # define ACC_SIZEOF_INT 16
1131 # else
1132 # error "ACC_SIZEOF_INT"
1133 # endif
1134 #endif
1135 #if !defined(ACC_SIZEOF_LONG)
1136 # if (ULONG_MAX == ACC_0xffffffffL)
1137 # define ACC_SIZEOF_LONG 4
1138 # elif (__ACC_LSR(ULONG_MAX,7) == 1)
1139 # define ACC_SIZEOF_LONG 1
1140 # elif (__ACC_LSR(ULONG_MAX,15) == 1)
1141 # define ACC_SIZEOF_LONG 2
1142 # elif (__ACC_LSR(ULONG_MAX,31) == 1)
1143 # define ACC_SIZEOF_LONG 4
1144 # elif (__ACC_LSR(ULONG_MAX,63) == 1)
1145 # define ACC_SIZEOF_LONG 8
1146 # elif (__ACC_LSR(ULONG_MAX,127) == 1)
1147 # define ACC_SIZEOF_LONG 16
1148 # else
1149 # error "ACC_SIZEOF_LONG"
1150 # endif
1151 #endif
1152 #if !defined(ACC_SIZEOF_LONG_LONG) && !defined(ACC_SIZEOF___INT64)
1153 #if (ACC_SIZEOF_LONG > 0 && ACC_SIZEOF_LONG < 8)
1154 # if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__)
1155 # if (ACC_CC_GNUC >= 0x030300ul)
1156 # if ((__LONG_MAX__)+0 == (__LONG_LONG_MAX__)+0)
1157 # define ACC_SIZEOF_LONG_LONG ACC_SIZEOF_LONG
1158 # elif (__ACC_LSR(__LONG_LONG_MAX__,30) == 1)
1159 # define ACC_SIZEOF_LONG_LONG 4
1160 # endif
1161 # endif
1162 # endif
1163 #endif
1164 #endif
1165 #if !defined(ACC_SIZEOF_LONG_LONG) && !defined(ACC_SIZEOF___INT64)
1166 #if (ACC_SIZEOF_LONG > 0 && ACC_SIZEOF_LONG < 8)
1167 #if (ACC_ARCH_I086 && ACC_CC_DMC)
1168 #elif (ACC_CC_CILLY) && defined(__GNUC__)
1169 # define ACC_SIZEOF_LONG_LONG 8
1170 #elif (ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE)
1171 # define ACC_SIZEOF_LONG_LONG 8
1172 #elif ((ACC_OS_WIN32 || ACC_OS_WIN64 || defined(_WIN32)) && ACC_CC_MSC && (_MSC_VER >= 1400))
1173 # define ACC_SIZEOF_LONG_LONG 8
1174 #elif (ACC_OS_WIN64 || defined(_WIN64))
1175 # define ACC_SIZEOF___INT64 8
1176 #elif (ACC_ARCH_I386 && (ACC_CC_DMC))
1177 # define ACC_SIZEOF_LONG_LONG 8
1178 #elif (ACC_ARCH_I386 && (ACC_CC_SYMANTECC && (__SC__ >= 0x700)))
1179 # define ACC_SIZEOF_LONG_LONG 8
1180 #elif (ACC_ARCH_I386 && (ACC_CC_INTELC && defined(__linux__)))
1181 # define ACC_SIZEOF_LONG_LONG 8
1182 #elif (ACC_ARCH_I386 && (ACC_CC_MWERKS || ACC_CC_PELLESC || ACC_CC_PGI || ACC_CC_SUNPROC))
1183 # define ACC_SIZEOF_LONG_LONG 8
1184 #elif (ACC_ARCH_I386 && (ACC_CC_INTELC || ACC_CC_MSC))
1185 # define ACC_SIZEOF___INT64 8
1186 #elif ((ACC_OS_WIN32 || defined(_WIN32)) && (ACC_CC_MSC))
1187 # define ACC_SIZEOF___INT64 8
1188 #elif (ACC_ARCH_I386 && (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0520)))
1189 # define ACC_SIZEOF___INT64 8
1190 #elif (ACC_ARCH_I386 && (ACC_CC_WATCOMC && (__WATCOMC__ >= 1100)))
1191 # define ACC_SIZEOF___INT64 8
1192 #elif (ACC_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && (_INTEGRAL_MAX_BITS == 64))
1193 # define ACC_SIZEOF___INT64 8
1194 #elif (ACC_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
1195 # define ACC_SIZEOF_LONG_LONG 8
1196 #elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
1197 # define ACC_SIZEOF_LONG_LONG 8
1198 #elif (ACC_CC_SDCC) && (ACC_SIZEOF_INT == 2)
1199 #elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
1200 # define ACC_SIZEOF_LONG_LONG 8
1201 #endif
1202 #endif
1203 #endif
1204 #if defined(__cplusplus) && defined(ACC_CC_GNUC)
1205 # if (ACC_CC_GNUC < 0x020800ul)
1206 # undef ACC_SIZEOF_LONG_LONG
1207 # endif
1208 #endif
1209 #if defined(ACC_CFG_NO_LONG_LONG) || defined(__NO_LONG_LONG)
1210 # undef ACC_SIZEOF_LONG_LONG
1211 #endif
1212 #if !defined(ACC_SIZEOF_VOID_P)
1213 #if (ACC_ARCH_I086)
1214 # define __ACC_WORDSIZE 2
1215 # if (ACC_MM_TINY || ACC_MM_SMALL || ACC_MM_MEDIUM)
1216 # define ACC_SIZEOF_VOID_P 2
1217 # elif (ACC_MM_COMPACT || ACC_MM_LARGE || ACC_MM_HUGE)
1218 # define ACC_SIZEOF_VOID_P 4
1219 # else
1220 # error "ACC_MM"
1221 # endif
1222 #elif (ACC_ARCH_AVR || ACC_ARCH_Z80)
1223 # define __ACC_WORDSIZE 1
1224 # define ACC_SIZEOF_VOID_P 2
1225 #elif (ACC_ARCH_C166 || ACC_ARCH_MCS51 || ACC_ARCH_MCS251 || ACC_ARCH_MSP430)
1226 # define ACC_SIZEOF_VOID_P 2
1227 #elif (ACC_ARCH_H8300)
1228 # if defined(__NORMAL_MODE__)
1229 # define __ACC_WORDSIZE 4
1230 # define ACC_SIZEOF_VOID_P 2
1231 # elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
1232 # define __ACC_WORDSIZE 4
1233 # define ACC_SIZEOF_VOID_P 4
1234 # else
1235 # define __ACC_WORDSIZE 2
1236 # define ACC_SIZEOF_VOID_P 2
1237 # endif
1238 # if (ACC_CC_GNUC && (ACC_CC_GNUC < 0x040000ul)) && (ACC_SIZEOF_INT == 4)
1239 # define ACC_SIZEOF_SIZE_T ACC_SIZEOF_INT
1240 # define ACC_SIZEOF_PTRDIFF_T ACC_SIZEOF_INT
1241 # endif
1242 #elif (ACC_ARCH_M16C)
1243 # define __ACC_WORDSIZE 2
1244 # if defined(__m32c_cpu__) || defined(__m32cm_cpu__)
1245 # define ACC_SIZEOF_VOID_P 4
1246 # else
1247 # define ACC_SIZEOF_VOID_P 2
1248 # endif
1249 #elif (ACC_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
1250 # define __ACC_WORDSIZE 8
1251 # define ACC_SIZEOF_VOID_P 4
1252 #elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64)
1253 # define __ACC_WORDSIZE 8
1254 # define ACC_SIZEOF_VOID_P 8
1255 #elif (ACC_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
1256 # define ACC_SIZEOF_VOID_P ACC_SIZEOF_LONG
1257 # define ACC_SIZEOF_SIZE_T ACC_SIZEOF_LONG
1258 # define ACC_SIZEOF_PTRDIFF_T ACC_SIZEOF_LONG
1259 #elif (ACC_OS_OS400 || defined(__OS400__))
1260 # define __ACC_WORDSIZE ACC_SIZEOF_LONG
1261 # define ACC_SIZEOF_VOID_P 16
1262 # define ACC_SIZEOF_SIZE_T ACC_SIZEOF_LONG
1263 # define ACC_SIZEOF_PTRDIFF_T ACC_SIZEOF_LONG
1264 #elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
1265 # define ACC_SIZEOF_VOID_P 8
1266 # define ACC_SIZEOF_SIZE_T ACC_SIZEOF_LONG
1267 # define ACC_SIZEOF_PTRDIFF_T ACC_SIZEOF_LONG
1268 #elif (ACC_ARCH_SPU)
1269 # if 0
1270 # define __ACC_WORDSIZE 16
1271 # endif
1272 # define ACC_SIZEOF_VOID_P 4
1273 #else
1274 # define ACC_SIZEOF_VOID_P ACC_SIZEOF_LONG
1275 #endif
1276 #endif
1277 #if !defined(ACC_WORDSIZE)
1278 # if defined(__ACC_WORDSIZE)
1279 # define ACC_WORDSIZE __ACC_WORDSIZE
1280 # else
1281 # define ACC_WORDSIZE ACC_SIZEOF_VOID_P
1282 # endif
1283 #endif
1284 #if !defined(ACC_SIZEOF_SIZE_T)
1285 #if (ACC_ARCH_I086 || ACC_ARCH_M16C)
1286 # define ACC_SIZEOF_SIZE_T 2
1287 #else
1288 # define ACC_SIZEOF_SIZE_T ACC_SIZEOF_VOID_P
1289 #endif
1290 #endif
1291 #if !defined(ACC_SIZEOF_PTRDIFF_T)
1292 #if (ACC_ARCH_I086)
1293 # if (ACC_MM_TINY || ACC_MM_SMALL || ACC_MM_MEDIUM || ACC_MM_HUGE)
1294 # define ACC_SIZEOF_PTRDIFF_T ACC_SIZEOF_VOID_P
1295 # elif (ACC_MM_COMPACT || ACC_MM_LARGE)
1296 # if (ACC_CC_BORLANDC || ACC_CC_TURBOC)
1297 # define ACC_SIZEOF_PTRDIFF_T 4
1298 # else
1299 # define ACC_SIZEOF_PTRDIFF_T 2
1300 # endif
1301 # else
1302 # error "ACC_MM"
1303 # endif
1304 #else
1305 # define ACC_SIZEOF_PTRDIFF_T ACC_SIZEOF_SIZE_T
1306 #endif
1307 #endif
1308 #if defined(ACC_ABI_NEUTRAL_ENDIAN)
1309 # undef ACC_ABI_BIG_ENDIAN
1310 # undef ACC_ABI_LITTLE_ENDIAN
1311 #elif !defined(ACC_ABI_BIG_ENDIAN) && !defined(ACC_ABI_LITTLE_ENDIAN)
1312 #if (ACC_ARCH_ALPHA) && (ACC_ARCH_CRAY_MPP)
1313 # define ACC_ABI_BIG_ENDIAN 1
1314 #elif (ACC_ARCH_ALPHA || ACC_ARCH_AMD64 || ACC_ARCH_BLACKFIN || ACC_ARCH_CRIS || ACC_ARCH_I086 || ACC_ARCH_I386 || ACC_ARCH_MSP430)
1315 # define ACC_ABI_LITTLE_ENDIAN 1
1316 #elif (ACC_ARCH_M68K || ACC_ARCH_S390)
1317 # define ACC_ABI_BIG_ENDIAN 1
1318 #elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__)
1319 # if (__LITTLE_ENDIAN__ == 1)
1320 # define ACC_ABI_LITTLE_ENDIAN 1
1321 # else
1322 # define ACC_ABI_BIG_ENDIAN 1
1323 # endif
1324 #elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
1325 # define ACC_ABI_BIG_ENDIAN 1
1326 #elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
1327 # define ACC_ABI_LITTLE_ENDIAN 1
1328 #elif 1 && (ACC_ARCH_ARM) && defined(__ARMEB__) && !defined(__ARMEL__)
1329 # define ACC_ABI_BIG_ENDIAN 1
1330 #elif 1 && (ACC_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__)
1331 # define ACC_ABI_LITTLE_ENDIAN 1
1332 #elif 1 && (ACC_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__)
1333 # define ACC_ABI_BIG_ENDIAN 1
1334 #elif 1 && (ACC_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__)
1335 # define ACC_ABI_LITTLE_ENDIAN 1
1336 #endif
1337 #endif
1338 #if defined(ACC_ABI_BIG_ENDIAN) && defined(ACC_ABI_LITTLE_ENDIAN)
1339 # error "this should not happen"
1340 #endif
1341 #if defined(ACC_ABI_BIG_ENDIAN)
1342 # define ACC_INFO_ABI_ENDIAN "be"
1343 #elif defined(ACC_ABI_LITTLE_ENDIAN)
1344 # define ACC_INFO_ABI_ENDIAN "le"
1345 #elif defined(ACC_ABI_NEUTRAL_ENDIAN)
1346 # define ACC_INFO_ABI_ENDIAN "neutral"
1347 #endif
1348 #if (ACC_SIZEOF_INT == 1 && ACC_SIZEOF_LONG == 2 && ACC_SIZEOF_VOID_P == 2)
1349 # define ACC_ABI_I8LP16 1
1350 # define ACC_INFO_ABI_PM "i8lp16"
1351 #elif (ACC_SIZEOF_INT == 2 && ACC_SIZEOF_LONG == 2 && ACC_SIZEOF_VOID_P == 2)
1352 # define ACC_ABI_ILP16 1
1353 # define ACC_INFO_ABI_PM "ilp16"
1354 #elif (ACC_SIZEOF_INT == 4 && ACC_SIZEOF_LONG == 4 && ACC_SIZEOF_VOID_P == 4)
1355 # define ACC_ABI_ILP32 1
1356 # define ACC_INFO_ABI_PM "ilp32"
1357 #elif (ACC_SIZEOF_INT == 4 && ACC_SIZEOF_LONG == 4 && ACC_SIZEOF_VOID_P == 8 && ACC_SIZEOF_SIZE_T == 8)
1358 # define ACC_ABI_LLP64 1
1359 # define ACC_INFO_ABI_PM "llp64"
1360 #elif (ACC_SIZEOF_INT == 4 && ACC_SIZEOF_LONG == 8 && ACC_SIZEOF_VOID_P == 8)
1361 # define ACC_ABI_LP64 1
1362 # define ACC_INFO_ABI_PM "lp64"
1363 #elif (ACC_SIZEOF_INT == 8 && ACC_SIZEOF_LONG == 8 && ACC_SIZEOF_VOID_P == 8)
1364 # define ACC_ABI_ILP64 1
1365 # define ACC_INFO_ABI_PM "ilp64"
1366 #elif (ACC_SIZEOF_INT == 4 && ACC_SIZEOF_LONG == 8 && ACC_SIZEOF_VOID_P == 4)
1367 # define ACC_ABI_IP32L64 1
1368 # define ACC_INFO_ABI_PM "ip32l64"
1369 #endif
1370 #if !defined(__ACC_LIBC_OVERRIDE)
1371 #if defined(ACC_LIBC_NAKED)
1372 # define ACC_INFO_LIBC "naked"
1373 #elif defined(ACC_LIBC_FREESTANDING)
1374 # define ACC_INFO_LIBC "freestanding"
1375 #elif defined(ACC_LIBC_MOSTLY_FREESTANDING)
1376 # define ACC_INFO_LIBC "mfreestanding"
1377 #elif defined(ACC_LIBC_ISOC90)
1378 # define ACC_INFO_LIBC "isoc90"
1379 #elif defined(ACC_LIBC_ISOC99)
1380 # define ACC_INFO_LIBC "isoc99"
1381 #elif defined(__dietlibc__)
1382 # define ACC_LIBC_DIETLIBC 1
1383 # define ACC_INFO_LIBC "dietlibc"
1384 #elif defined(_NEWLIB_VERSION)
1385 # define ACC_LIBC_NEWLIB 1
1386 # define ACC_INFO_LIBC "newlib"
1387 #elif defined(__UCLIBC__) && defined(__UCLIBC_MAJOR__) && defined(__UCLIBC_MINOR__)
1388 # if defined(__UCLIBC_SUBLEVEL__)
1389 # define ACC_LIBC_UCLIBC (__UCLIBC_MAJOR__ * 0x10000L + __UCLIBC_MINOR__ * 0x100 + __UCLIBC_SUBLEVEL__)
1390 # else
1391 # define ACC_LIBC_UCLIBC 0x00090bL
1392 # endif
1393 # define ACC_INFO_LIBC "uclibc"
1394 #elif defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1395 # define ACC_LIBC_GLIBC (__GLIBC__ * 0x10000L + __GLIBC_MINOR__ * 0x100)
1396 # define ACC_INFO_LIBC "glibc"
1397 #elif (ACC_CC_MWERKS) && defined(__MSL__)
1398 # define ACC_LIBC_MSL __MSL__
1399 # define ACC_INFO_LIBC "msl"
1400 #elif 1 && defined(__IAR_SYSTEMS_ICC__)
1401 # define ACC_LIBC_ISOC90 1
1402 # define ACC_INFO_LIBC "isoc90"
1403 #else
1404 # define ACC_LIBC_DEFAULT 1
1405 # define ACC_INFO_LIBC "default"
1406 #endif
1407 #endif
1408 #if !defined(__acc_gnuc_extension__)
1409 #if (ACC_CC_GNUC >= 0x020800ul)
1410 # define __acc_gnuc_extension__ __extension__
1411 #elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
1412 # define __acc_gnuc_extension__ __extension__
1413 #else
1414 # define __acc_gnuc_extension__
1415 #endif
1416 #endif
1417 #if !defined(__acc_ua_volatile)
1418 # define __acc_ua_volatile volatile
1419 #endif
1420 #if !defined(__acc_alignof)
1421 #if (ACC_CC_CILLY || ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE || ACC_CC_PGI)
1422 # define __acc_alignof(e) __alignof__(e)
1423 #elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 700))
1424 # define __acc_alignof(e) __alignof__(e)
1425 #elif (ACC_CC_MSC && (_MSC_VER >= 1300))
1426 # define __acc_alignof(e) __alignof(e)
1427 #endif
1428 #endif
1429 #if defined(__acc_alignof)
1430 # define __acc_HAVE_alignof 1
1431 #endif
1432 #if !defined(__acc_constructor)
1433 #if (ACC_CC_GNUC >= 0x030400ul)
1434 # define __acc_constructor __attribute__((__constructor__,__used__))
1435 #elif (ACC_CC_GNUC >= 0x020700ul)
1436 # define __acc_constructor __attribute__((__constructor__))
1437 #elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
1438 # define __acc_constructor __attribute__((__constructor__))
1439 #endif
1440 #endif
1441 #if defined(__acc_constructor)
1442 # define __acc_HAVE_constructor 1
1443 #endif
1444 #if !defined(__acc_destructor)
1445 #if (ACC_CC_GNUC >= 0x030400ul)
1446 # define __acc_destructor __attribute__((__destructor__,__used__))
1447 #elif (ACC_CC_GNUC >= 0x020700ul)
1448 # define __acc_destructor __attribute__((__destructor__))
1449 #elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
1450 # define __acc_destructor __attribute__((__destructor__))
1451 #endif
1452 #endif
1453 #if defined(__acc_destructor)
1454 # define __acc_HAVE_destructor 1
1455 #endif
1456 #if defined(__acc_HAVE_destructor) && !defined(__acc_HAVE_constructor)
1457 # error "this should not happen"
1458 #endif
1459 #if !defined(__acc_inline)
1460 #if (ACC_CC_TURBOC && (__TURBOC__ <= 0x0295))
1461 #elif defined(__cplusplus)
1462 # define __acc_inline inline
1463 #elif (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0550))
1464 # define __acc_inline __inline
1465 #elif (ACC_CC_CILLY || ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE || ACC_CC_PGI)
1466 # define __acc_inline __inline__
1467 #elif (ACC_CC_DMC)
1468 # define __acc_inline __inline
1469 #elif (ACC_CC_INTELC)
1470 # define __acc_inline __inline
1471 #elif (ACC_CC_MWERKS && (__MWERKS__ >= 0x2405))
1472 # define __acc_inline __inline
1473 #elif (ACC_CC_MSC && (_MSC_VER >= 900))
1474 # define __acc_inline __inline
1475 #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
1476 # define __acc_inline inline
1477 #endif
1478 #endif
1479 #if defined(__acc_inline)
1480 # define __acc_HAVE_inline 1
1481 #else
1482 # define __acc_inline
1483 #endif
1484 #if !defined(__acc_forceinline)
1485 #if (ACC_CC_GNUC >= 0x030200ul)
1486 # define __acc_forceinline __inline__ __attribute__((__always_inline__))
1487 #elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 450) && ACC_CC_SYNTAX_MSC)
1488 # define __acc_forceinline __forceinline
1489 #elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 800) && ACC_CC_SYNTAX_GNUC)
1490 # define __acc_forceinline __inline__ __attribute__((__always_inline__))
1491 #elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
1492 # define __acc_forceinline __inline__ __attribute__((__always_inline__))
1493 #elif (ACC_CC_MSC && (_MSC_VER >= 1200))
1494 # define __acc_forceinline __forceinline
1495 #endif
1496 #endif
1497 #if defined(__acc_forceinline)
1498 # define __acc_HAVE_forceinline 1
1499 #else
1500 # define __acc_forceinline
1501 #endif
1502 #if !defined(__acc_noinline)
1503 #if 1 && (ACC_ARCH_I386) && (ACC_CC_GNUC >= 0x040000ul) && (ACC_CC_GNUC < 0x040003ul)
1504 # define __acc_noinline __attribute__((__noinline__,__used__))
1505 #elif (ACC_CC_GNUC >= 0x030200ul)
1506 # define __acc_noinline __attribute__((__noinline__))
1507 #elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 600) && ACC_CC_SYNTAX_MSC)
1508 # define __acc_noinline __declspec(noinline)
1509 #elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 800) && ACC_CC_SYNTAX_GNUC)
1510 # define __acc_noinline __attribute__((__noinline__))
1511 #elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
1512 # define __acc_noinline __attribute__((__noinline__))
1513 #elif (ACC_CC_MSC && (_MSC_VER >= 1300))
1514 # define __acc_noinline __declspec(noinline)
1515 #elif (ACC_CC_MWERKS && (__MWERKS__ >= 0x3200) && (ACC_OS_WIN32 || ACC_OS_WIN64))
1516 # if defined(__cplusplus)
1517 # else
1518 # define __acc_noinline __declspec(noinline)
1519 # endif
1520 #endif
1521 #endif
1522 #if defined(__acc_noinline)
1523 # define __acc_HAVE_noinline 1
1524 #else
1525 # define __acc_noinline
1526 #endif
1527 #if (defined(__acc_HAVE_forceinline) || defined(__acc_HAVE_noinline)) && !defined(__acc_HAVE_inline)
1528 # error "this should not happen"
1529 #endif
1530 #if !defined(__acc_noreturn)
1531 #if (ACC_CC_GNUC >= 0x020700ul)
1532 # define __acc_noreturn __attribute__((__noreturn__))
1533 #elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 450) && ACC_CC_SYNTAX_MSC)
1534 # define __acc_noreturn __declspec(noreturn)
1535 #elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 600) && ACC_CC_SYNTAX_GNUC)
1536 # define __acc_noreturn __attribute__((__noreturn__))
1537 #elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
1538 # define __acc_noreturn __attribute__((__noreturn__))
1539 #elif (ACC_CC_MSC && (_MSC_VER >= 1200))
1540 # define __acc_noreturn __declspec(noreturn)
1541 #endif
1542 #endif
1543 #if defined(__acc_noreturn)
1544 # define __acc_HAVE_noreturn 1
1545 #else
1546 # define __acc_noreturn
1547 #endif
1548 #if !defined(__acc_nothrow)
1549 #if (ACC_CC_GNUC >= 0x030300ul)
1550 # define __acc_nothrow __attribute__((__nothrow__))
1551 #elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 450) && ACC_CC_SYNTAX_MSC) && defined(__cplusplus)
1552 # define __acc_nothrow __declspec(nothrow)
1553 #elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 800) && ACC_CC_SYNTAX_GNUC)
1554 # define __acc_nothrow __attribute__((__nothrow__))
1555 #elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
1556 # define __acc_nothrow __attribute__((__nothrow__))
1557 #elif (ACC_CC_MSC && (_MSC_VER >= 1200)) && defined(__cplusplus)
1558 # define __acc_nothrow __declspec(nothrow)
1559 #endif
1560 #endif
1561 #if defined(__acc_nothrow)
1562 # define __acc_HAVE_nothrow 1
1563 #else
1564 # define __acc_nothrow
1565 #endif
1566 #if !defined(__acc_restrict)
1567 #if (ACC_CC_GNUC >= 0x030400ul)
1568 # define __acc_restrict __restrict__
1569 #elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 600) && ACC_CC_SYNTAX_GNUC)
1570 # define __acc_restrict __restrict__
1571 #elif (ACC_CC_LLVM)
1572 # define __acc_restrict __restrict__
1573 #elif (ACC_CC_MSC && (_MSC_VER >= 1400))
1574 # define __acc_restrict __restrict
1575 #endif
1576 #endif
1577 #if defined(__acc_restrict)
1578 # define __acc_HAVE_restrict 1
1579 #else
1580 # define __acc_restrict
1581 #endif
1582 #if !defined(__acc_likely) && !defined(__acc_unlikely)
1583 #if (ACC_CC_GNUC >= 0x030200ul)
1584 # define __acc_likely(e) (__builtin_expect(!!(e),1))
1585 # define __acc_unlikely(e) (__builtin_expect(!!(e),0))
1586 #elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 800))
1587 # define __acc_likely(e) (__builtin_expect(!!(e),1))
1588 # define __acc_unlikely(e) (__builtin_expect(!!(e),0))
1589 #elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
1590 # define __acc_likely(e) (__builtin_expect(!!(e),1))
1591 # define __acc_unlikely(e) (__builtin_expect(!!(e),0))
1592 #endif
1593 #endif
1594 #if defined(__acc_likely)
1595 # define __acc_HAVE_likely 1
1596 #else
1597 # define __acc_likely(e) (e)
1598 #endif
1599 #if defined(__acc_unlikely)
1600 # define __acc_HAVE_unlikely 1
1601 #else
1602 # define __acc_unlikely(e) (e)
1603 #endif
1604 #if !defined(ACC_UNUSED)
1605 # if (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
1606 # define ACC_UNUSED(var) ((void) &var)
1607 # elif (ACC_CC_BORLANDC || ACC_CC_HIGHC || ACC_CC_NDPC || ACC_CC_PELLESC || ACC_CC_TURBOC)
1608 # define ACC_UNUSED(var) if (&var) ; else
1609 # elif (ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE)
1610 # define ACC_UNUSED(var) ((void) var)
1611 # elif (ACC_CC_MSC && (_MSC_VER < 900))
1612 # define ACC_UNUSED(var) if (&var) ; else
1613 # elif (ACC_CC_KEILC)
1614 # define ACC_UNUSED(var) {extern int __acc_unused[1-2*!(sizeof(var)>0)];}
1615 # elif (ACC_CC_PACIFICC)
1616 # define ACC_UNUSED(var) ((void) sizeof(var))
1617 # elif (ACC_CC_WATCOMC) && defined(__cplusplus)
1618 # define ACC_UNUSED(var) ((void) var)
1619 # else
1620 # define ACC_UNUSED(var) ((void) &var)
1621 # endif
1622 #endif
1623 #if !defined(ACC_UNUSED_FUNC)
1624 # if (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
1625 # define ACC_UNUSED_FUNC(func) ((void) func)
1626 # elif (ACC_CC_BORLANDC || ACC_CC_NDPC || ACC_CC_TURBOC)
1627 # define ACC_UNUSED_FUNC(func) if (func) ; else
1628 # elif (ACC_CC_LLVM)
1629 # define ACC_UNUSED_FUNC(func) ((void) &func)
1630 # elif (ACC_CC_MSC && (_MSC_VER < 900))
1631 # define ACC_UNUSED_FUNC(func) if (func) ; else
1632 # elif (ACC_CC_MSC)
1633 # define ACC_UNUSED_FUNC(func) ((void) &func)
1634 # elif (ACC_CC_KEILC || ACC_CC_PELLESC)
1635 # define ACC_UNUSED_FUNC(func) {extern int __acc_unused[1-2*!(sizeof((int)func)>0)];}
1636 # else
1637 # define ACC_UNUSED_FUNC(func) ((void) func)
1638 # endif
1639 #endif
1640 #if !defined(ACC_UNUSED_LABEL)
1641 # if (ACC_CC_WATCOMC) && defined(__cplusplus)
1642 # define ACC_UNUSED_LABEL(l) switch(0) case 1:goto l
1643 # elif (ACC_CC_INTELC || ACC_CC_WATCOMC)
1644 # define ACC_UNUSED_LABEL(l) if (0) goto l
1645 # else
1646 # define ACC_UNUSED_LABEL(l) switch(0) case 1:goto l
1647 # endif
1648 #endif
1649 #if !defined(ACC_DEFINE_UNINITIALIZED_VAR)
1650 # if 0
1651 # define ACC_DEFINE_UNINITIALIZED_VAR(type,var,init) type var
1652 # elif 0 && (ACC_CC_GNUC)
1653 # define ACC_DEFINE_UNINITIALIZED_VAR(type,var,init) type var = var
1654 # else
1655 # define ACC_DEFINE_UNINITIALIZED_VAR(type,var,init) type var = init
1656 # endif
1657 #endif
1658 #if !defined(ACC_COMPILE_TIME_ASSERT_HEADER)
1659 # if (ACC_CC_AZTECC || ACC_CC_ZORTECHC)
1660 # define ACC_COMPILE_TIME_ASSERT_HEADER(e) extern int __acc_cta[1-!(e)];
1661 # elif (ACC_CC_DMC || ACC_CC_SYMANTECC)
1662 # define ACC_COMPILE_TIME_ASSERT_HEADER(e) extern int __acc_cta[1u-2*!(e)];
1663 # elif (ACC_CC_TURBOC && (__TURBOC__ == 0x0295))
1664 # define ACC_COMPILE_TIME_ASSERT_HEADER(e) extern int __acc_cta[1-!(e)];
1665 # else
1666 # define ACC_COMPILE_TIME_ASSERT_HEADER(e) extern int __acc_cta[1-2*!(e)];
1667 # endif
1668 #endif
1669 #if !defined(ACC_COMPILE_TIME_ASSERT)
1670 # if (ACC_CC_AZTECC)
1671 # define ACC_COMPILE_TIME_ASSERT(e) {typedef int __acc_cta_t[1-!(e)];}
1672 # elif (ACC_CC_DMC || ACC_CC_PACIFICC || ACC_CC_SYMANTECC || ACC_CC_ZORTECHC)
1673 # define ACC_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break;
1674 # elif (ACC_CC_MSC && (_MSC_VER < 900))
1675 # define ACC_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break;
1676 # elif (ACC_CC_TURBOC && (__TURBOC__ == 0x0295))
1677 # define ACC_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break;
1678 # else
1679 # define ACC_COMPILE_TIME_ASSERT(e) {typedef int __acc_cta_t[1-2*!(e)];}
1680 # endif
1681 #endif
1682 #if (ACC_ARCH_I086 || ACC_ARCH_I386) && (ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64)
1683 # if (ACC_CC_GNUC || ACC_CC_HIGHC || ACC_CC_NDPC || ACC_CC_PACIFICC)
1684 # elif (ACC_CC_DMC || ACC_CC_SYMANTECC || ACC_CC_ZORTECHC)
1685 # define __acc_cdecl __cdecl
1686 # define __acc_cdecl_atexit
1687 # define __acc_cdecl_main __cdecl
1688 # if (ACC_OS_OS2 && (ACC_CC_DMC || ACC_CC_SYMANTECC))
1689 # define __acc_cdecl_qsort __pascal
1690 # elif (ACC_OS_OS2 && (ACC_CC_ZORTECHC))
1691 # define __acc_cdecl_qsort _stdcall
1692 # else
1693 # define __acc_cdecl_qsort __cdecl
1694 # endif
1695 # elif (ACC_CC_WATCOMC)
1696 # define __acc_cdecl __cdecl
1697 # else
1698 # define __acc_cdecl __cdecl
1699 # define __acc_cdecl_atexit __cdecl
1700 # define __acc_cdecl_main __cdecl
1701 # define __acc_cdecl_qsort __cdecl
1702 # endif
1703 # if (ACC_CC_GNUC || ACC_CC_HIGHC || ACC_CC_NDPC || ACC_CC_PACIFICC || ACC_CC_WATCOMC)
1704 # elif (ACC_OS_OS2 && (ACC_CC_DMC || ACC_CC_SYMANTECC))
1705 # define __acc_cdecl_sighandler __pascal
1706 # elif (ACC_OS_OS2 && (ACC_CC_ZORTECHC))
1707 # define __acc_cdecl_sighandler _stdcall
1708 # elif (ACC_CC_MSC && (_MSC_VER >= 1400)) && defined(_M_CEE_PURE)
1709 # define __acc_cdecl_sighandler __clrcall
1710 # elif (ACC_CC_MSC && (_MSC_VER >= 600 && _MSC_VER < 700))
1711 # if defined(_DLL)
1712 # define __acc_cdecl_sighandler _far _cdecl _loadds
1713 # elif defined(_MT)
1714 # define __acc_cdecl_sighandler _far _cdecl
1715 # else
1716 # define __acc_cdecl_sighandler _cdecl
1717 # endif
1718 # else
1719 # define __acc_cdecl_sighandler __cdecl
1720 # endif
1721 #elif (ACC_ARCH_I386) && (ACC_CC_WATCOMC)
1722 # define __acc_cdecl __cdecl
1723 #elif (ACC_ARCH_M68K && ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
1724 # define __acc_cdecl cdecl
1725 #endif
1726 #if !defined(__acc_cdecl)
1727 # define __acc_cdecl
1728 #endif
1729 #if !defined(__acc_cdecl_atexit)
1730 # define __acc_cdecl_atexit
1731 #endif
1732 #if !defined(__acc_cdecl_main)
1733 # define __acc_cdecl_main
1734 #endif
1735 #if !defined(__acc_cdecl_qsort)
1736 # define __acc_cdecl_qsort
1737 #endif
1738 #if !defined(__acc_cdecl_sighandler)
1739 # define __acc_cdecl_sighandler
1740 #endif
1741 #if !defined(__acc_cdecl_va)
1742 # define __acc_cdecl_va __acc_cdecl
1743 #endif
1744 #if !defined(ACC_CFG_NO_WINDOWS_H)
1745 #if (ACC_OS_CYGWIN || (ACC_OS_EMX && defined(__RSXNT__)) || ACC_OS_WIN32 || ACC_OS_WIN64)
1746 # if (ACC_CC_WATCOMC && (__WATCOMC__ < 1000))
1747 # elif (ACC_OS_WIN32 && ACC_CC_GNUC) && defined(__PW32__)
1748 # elif ((ACC_OS_CYGWIN || defined(__MINGW32__)) && (ACC_CC_GNUC && (ACC_CC_GNUC < 0x025f00ul)))
1749 # else
1750 # define ACC_HAVE_WINDOWS_H 1
1751 # endif
1752 #endif
1753 #endif
1754 #if (ACC_ARCH_ALPHA)
1755 # define ACC_OPT_AVOID_UINT_INDEX 1
1756 # define ACC_OPT_AVOID_SHORT 1
1757 # define ACC_OPT_AVOID_USHORT 1
1758 #elif (ACC_ARCH_AMD64)
1759 # define ACC_OPT_AVOID_INT_INDEX 1
1760 # define ACC_OPT_AVOID_UINT_INDEX 1
1761 # define ACC_OPT_UNALIGNED16 1
1762 # define ACC_OPT_UNALIGNED32 1
1763 # define ACC_OPT_UNALIGNED64 1
1764 #elif (ACC_ARCH_ARM && ACC_ARCH_ARM_THUMB)
1765 #elif (ACC_ARCH_ARM)
1766 # define ACC_OPT_AVOID_SHORT 1
1767 # define ACC_OPT_AVOID_USHORT 1
1768 #elif (ACC_ARCH_CRIS)
1769 # define ACC_OPT_UNALIGNED16 1
1770 # define ACC_OPT_UNALIGNED32 1
1771 #elif (ACC_ARCH_I386)
1772 # define ACC_OPT_UNALIGNED16 1
1773 # define ACC_OPT_UNALIGNED32 1
1774 #elif (ACC_ARCH_IA64)
1775 # define ACC_OPT_AVOID_INT_INDEX 1
1776 # define ACC_OPT_AVOID_UINT_INDEX 1
1777 # define ACC_OPT_PREFER_POSTINC 1
1778 #elif (ACC_ARCH_M68K)
1779 # define ACC_OPT_PREFER_POSTINC 1
1780 # define ACC_OPT_PREFER_PREDEC 1
1781 # if defined(__mc68020__) && !defined(__mcoldfire__)
1782 # define ACC_OPT_UNALIGNED16 1
1783 # define ACC_OPT_UNALIGNED32 1
1784 # endif
1785 #elif (ACC_ARCH_MIPS)
1786 # define ACC_OPT_AVOID_UINT_INDEX 1
1787 #elif (ACC_ARCH_POWERPC)
1788 # define ACC_OPT_PREFER_PREINC 1
1789 # define ACC_OPT_PREFER_PREDEC 1
1790 # if defined(ACC_ABI_BIG_ENDIAN)
1791 # define ACC_OPT_UNALIGNED16 1
1792 # define ACC_OPT_UNALIGNED32 1
1793 # endif
1794 #elif (ACC_ARCH_S390)
1795 # define ACC_OPT_UNALIGNED16 1
1796 # define ACC_OPT_UNALIGNED32 1
1797 # if (ACC_SIZEOF_SIZE_T == 8)
1798 # define ACC_OPT_UNALIGNED64 1
1799 # endif
1800 #elif (ACC_ARCH_SH)
1801 # define ACC_OPT_PREFER_POSTINC 1
1802 # define ACC_OPT_PREFER_PREDEC 1
1803 #endif
1804 #if !defined(ACC_CFG_NO_INLINE_ASM)
1805 #if defined(ACC_CC_LLVM)
1806 # define ACC_CFG_NO_INLINE_ASM 1
1807 #endif
1808 #endif
1809 #if !defined(ACC_CFG_NO_UNALIGNED)
1810 #if defined(ACC_ABI_NEUTRAL_ENDIAN) || defined(ACC_ARCH_GENERIC)
1811 # define ACC_CFG_NO_UNALIGNED 1
1812 #endif
1813 #endif
1814 #if defined(ACC_CFG_NO_UNALIGNED)
1815 # undef ACC_OPT_UNALIGNED16
1816 # undef ACC_OPT_UNALIGNED32
1817 # undef ACC_OPT_UNALIGNED64
1818 #endif
1819 #if defined(ACC_CFG_NO_INLINE_ASM)
1820 #elif (ACC_ARCH_I386 && (ACC_OS_DOS32 || ACC_OS_WIN32) && (ACC_CC_DMC || ACC_CC_INTELC || ACC_CC_MSC || ACC_CC_PELLESC))
1821 # define ACC_ASM_SYNTAX_MSC 1
1822 #elif (ACC_OS_WIN64 && (ACC_CC_DMC || ACC_CC_INTELC || ACC_CC_MSC || ACC_CC_PELLESC))
1823 #elif (ACC_ARCH_I386 && (ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE))
1824 # define ACC_ASM_SYNTAX_GNUC 1
1825 #elif (ACC_ARCH_AMD64 && (ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE))
1826 # define ACC_ASM_SYNTAX_GNUC 1
1827 #endif
1828 #if (ACC_ASM_SYNTAX_GNUC)
1829 #if (ACC_ARCH_I386 && ACC_CC_GNUC && (ACC_CC_GNUC < 0x020000ul))
1830 # define __ACC_ASM_CLOBBER "ax"
1831 #elif (ACC_CC_INTELC)
1832 # define __ACC_ASM_CLOBBER "memory"
1833 #else
1834 # define __ACC_ASM_CLOBBER "cc", "memory"
1835 #endif
1836 #endif
1837 #if defined(__ACC_INFOSTR_MM)
1838 #elif (ACC_MM_FLAT) && (defined(__ACC_INFOSTR_PM) || defined(ACC_INFO_ABI_PM))
1839 # define __ACC_INFOSTR_MM ""
1840 #elif defined(ACC_INFO_MM)
1841 # define __ACC_INFOSTR_MM "." ACC_INFO_MM
1842 #else
1843 # define __ACC_INFOSTR_MM ""
1844 #endif
1845 #if defined(__ACC_INFOSTR_PM)
1846 #elif defined(ACC_INFO_ABI_PM)
1847 # define __ACC_INFOSTR_PM "." ACC_INFO_ABI_PM
1848 #else
1849 # define __ACC_INFOSTR_PM ""
1850 #endif
1851 #if defined(__ACC_INFOSTR_ENDIAN)
1852 #elif defined(ACC_INFO_ABI_ENDIAN)
1853 # define __ACC_INFOSTR_ENDIAN "." ACC_INFO_ABI_ENDIAN
1854 #else
1855 # define __ACC_INFOSTR_ENDIAN ""
1856 #endif
1857 #if defined(__ACC_INFOSTR_OSNAME)
1858 #elif defined(ACC_INFO_OS_CONSOLE)
1859 # define __ACC_INFOSTR_OSNAME ACC_INFO_OS "." ACC_INFO_OS_CONSOLE
1860 #elif defined(ACC_INFO_OS_POSIX)
1861 # define __ACC_INFOSTR_OSNAME ACC_INFO_OS "." ACC_INFO_OS_POSIX
1862 #else
1863 # define __ACC_INFOSTR_OSNAME ACC_INFO_OS
1864 #endif
1865 #if defined(__ACC_INFOSTR_LIBC)
1866 #elif defined(ACC_INFO_LIBC)
1867 # define __ACC_INFOSTR_LIBC "." ACC_INFO_LIBC
1868 #else
1869 # define __ACC_INFOSTR_LIBC ""
1870 #endif
1871 #if defined(__ACC_INFOSTR_CCVER)
1872 #elif defined(ACC_INFO_CCVER)
1873 # define __ACC_INFOSTR_CCVER " " ACC_INFO_CCVER
1874 #else
1875 # define __ACC_INFOSTR_CCVER ""
1876 #endif
1877 #define ACC_INFO_STRING \
1878 ACC_INFO_ARCH __ACC_INFOSTR_MM __ACC_INFOSTR_PM __ACC_INFOSTR_ENDIAN \
1879 " " __ACC_INFOSTR_OSNAME __ACC_INFOSTR_LIBC " " ACC_INFO_CC __ACC_INFOSTR_CCVER
1880 #if defined(ACC_CFG_NO_CONFIG_HEADER)
1881 #elif defined(ACC_CFG_CONFIG_HEADER)
1882 #else
1883 #if !defined(ACC_CFG_AUTO_NO_HEADERS)
1884 #if defined(ACC_LIBC_NAKED)
1885 #elif defined(ACC_LIBC_FREESTANDING)
1886 # define HAVE_LIMITS_H 1
1887 # define HAVE_STDARG_H 1
1888 # define HAVE_STDDEF_H 1
1889 #elif defined(ACC_LIBC_MOSTLY_FREESTANDING)
1890 # define HAVE_LIMITS_H 1
1891 # define HAVE_SETJMP_H 1
1892 # define HAVE_STDARG_H 1
1893 # define HAVE_STDDEF_H 1
1894 # define HAVE_STDIO_H 1
1895 # define HAVE_STRING_H 1
1896 #else
1897 #define STDC_HEADERS 1
1898 #define HAVE_ASSERT_H 1
1899 #define HAVE_CTYPE_H 1
1900 #define HAVE_DIRENT_H 1
1901 #define HAVE_ERRNO_H 1
1902 #define HAVE_FCNTL_H 1
1903 #define HAVE_FLOAT_H 1
1904 #define HAVE_LIMITS_H 1
1905 #define HAVE_MALLOC_H 1
1906 #define HAVE_MEMORY_H 1
1907 #define HAVE_SETJMP_H 1
1908 #define HAVE_SIGNAL_H 1
1909 #define HAVE_STDARG_H 1
1910 #define HAVE_STDDEF_H 1
1911 #define HAVE_STDIO_H 1
1912 #define HAVE_STDLIB_H 1
1913 #define HAVE_STRING_H 1
1914 #define HAVE_TIME_H 1
1915 #define HAVE_UNISTD_H 1
1916 #define HAVE_UTIME_H 1
1917 #define HAVE_SYS_STAT_H 1
1918 #define HAVE_SYS_TIME_H 1
1919 #define HAVE_SYS_TYPES_H 1
1920 #if (ACC_OS_POSIX)
1921 # if (ACC_OS_POSIX_AIX)
1922 # define HAVE_SYS_RESOURCE_H 1
1923 # elif (ACC_OS_POSIX_FREEBSD || ACC_OS_POSIX_MACOSX || ACC_OS_POSIX_NETBSD || ACC_OS_POSIX_OPENBSD)
1924 # define HAVE_STRINGS_H 1
1925 # undef HAVE_MALLOC_H
1926 # elif (ACC_OS_POSIX_HPUX || ACC_OS_POSIX_INTERIX)
1927 # define HAVE_ALLOCA_H 1
1928 # elif (ACC_OS_POSIX_MACOSX && ACC_LIBC_MSL)
1929 # undef HAVE_SYS_TIME_H
1930 # undef HAVE_SYS_TYPES_H
1931 # elif (ACC_OS_POSIX_SOLARIS || ACC_OS_POSIX_SUNOS)
1932 # define HAVE_ALLOCA_H 1
1933 # endif
1934 # if (ACC_LIBC_DIETLIBC || ACC_LIBC_GLIBC || ACC_LIBC_UCLIBC)
1935 # define HAVE_STRINGS_H 1
1936 # define HAVE_SYS_MMAN_H 1
1937 # define HAVE_SYS_RESOURCE_H 1
1938 # define HAVE_SYS_WAIT_H 1
1939 # endif
1940 # if (ACC_LIBC_NEWLIB)
1941 # undef HAVE_STRINGS_H
1942 # endif
1943 #elif (ACC_OS_CYGWIN)
1944 # define HAVE_IO_H 1
1945 #elif (ACC_OS_EMX)
1946 # define HAVE_ALLOCA_H 1
1947 # define HAVE_IO_H 1
1948 #elif (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC)
1949 # if !defined(__MINT__)
1950 # undef HAVE_MALLOC_H
1951 # endif
1952 #elif (ACC_ARCH_M68K && ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
1953 # undef HAVE_DIRENT_H
1954 # undef HAVE_FCNTL_H
1955 # undef HAVE_MALLOC_H
1956 # undef HAVE_MEMORY_H
1957 # undef HAVE_UNISTD_H
1958 # undef HAVE_UTIME_H
1959 # undef HAVE_SYS_STAT_H
1960 # undef HAVE_SYS_TIME_H
1961 # undef HAVE_SYS_TYPES_H
1962 #endif
1963 #if (ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64)
1964 #define HAVE_CONIO_H 1
1965 #define HAVE_DIRECT_H 1
1966 #define HAVE_DOS_H 1
1967 #define HAVE_IO_H 1
1968 #define HAVE_SHARE_H 1
1969 #if (ACC_CC_AZTECC)
1970 # undef HAVE_CONIO_H
1971 # undef HAVE_DIRECT_H
1972 # undef HAVE_DIRENT_H
1973 # undef HAVE_MALLOC_H
1974 # undef HAVE_SHARE_H
1975 # undef HAVE_UNISTD_H
1976 # undef HAVE_UTIME_H
1977 # undef HAVE_SYS_STAT_H
1978 # undef HAVE_SYS_TIME_H
1979 # undef HAVE_SYS_TYPES_H
1980 #elif (ACC_CC_BORLANDC)
1981 # undef HAVE_UNISTD_H
1982 # undef HAVE_SYS_TIME_H
1983 # if (ACC_OS_WIN32 || ACC_OS_WIN64)
1984 # undef HAVE_DIRENT_H
1985 # endif
1986 # if (__BORLANDC__ < 0x0400)
1987 # undef HAVE_DIRENT_H
1988 # undef HAVE_UTIME_H
1989 # endif
1990 #elif (ACC_CC_DMC)
1991 # undef HAVE_DIRENT_H
1992 # undef HAVE_UNISTD_H
1993 # define HAVE_SYS_DIRENT_H 1
1994 #elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
1995 #elif (ACC_OS_DOS32 && ACC_CC_HIGHC)
1996 # define HAVE_ALLOCA_H 1
1997 # undef HAVE_DIRENT_H
1998 # undef HAVE_UNISTD_H
1999 #elif (ACC_CC_IBMC && ACC_OS_OS2)
2000 # undef HAVE_DOS_H
2001 # undef HAVE_DIRENT_H
2002 # undef HAVE_UNISTD_H
2003 # undef HAVE_UTIME_H
2004 # undef HAVE_SYS_TIME_H
2005 # define HAVE_SYS_UTIME_H 1
2006 #elif (ACC_CC_INTELC || ACC_CC_MSC)
2007 # undef HAVE_DIRENT_H
2008 # undef HAVE_UNISTD_H
2009 # undef HAVE_UTIME_H
2010 # undef HAVE_SYS_TIME_H
2011 # define HAVE_SYS_UTIME_H 1
2012 #elif (ACC_CC_LCCWIN32)
2013 # undef HAVE_DIRENT_H
2014 # undef HAVE_DOS_H
2015 # undef HAVE_UNISTD_H
2016 # undef HAVE_SYS_TIME_H
2017 #elif (ACC_OS_WIN32 && ACC_CC_GNUC) && defined(__MINGW32__)
2018 # undef HAVE_UTIME_H
2019 # define HAVE_SYS_UTIME_H 1
2020 #elif (ACC_OS_WIN32 && ACC_LIBC_MSL)
2021 # define HAVE_ALLOCA_H 1
2022 # undef HAVE_DOS_H
2023 # undef HAVE_SHARE_H
2024 # undef HAVE_SYS_TIME_H
2025 #elif (ACC_CC_NDPC)
2026 # undef HAVE_DIRENT_H
2027 # undef HAVE_DOS_H
2028 # undef HAVE_UNISTD_H
2029 # undef HAVE_UTIME_H
2030 # undef HAVE_SYS_TIME_H
2031 #elif (ACC_CC_PACIFICC)
2032 # undef HAVE_DIRECT_H
2033 # undef HAVE_DIRENT_H
2034 # undef HAVE_FCNTL_H
2035 # undef HAVE_IO_H
2036 # undef HAVE_MALLOC_H
2037 # undef HAVE_MEMORY_H
2038 # undef HAVE_SHARE_H
2039 # undef HAVE_UNISTD_H
2040 # undef HAVE_UTIME_H
2041 # undef HAVE_SYS_STAT_H
2042 # undef HAVE_SYS_TIME_H
2043 # undef HAVE_SYS_TYPES_H
2044 #elif (ACC_OS_WIN32 && ACC_CC_PELLESC)
2045 # undef HAVE_DIRENT_H
2046 # undef HAVE_DOS_H
2047 # undef HAVE_MALLOC_H
2048 # undef HAVE_SHARE_H
2049 # undef HAVE_UNISTD_H
2050 # undef HAVE_UTIME_H
2051 # undef HAVE_SYS_TIME_H
2052 # if (__POCC__ < 280)
2053 # else
2054 # define HAVE_SYS_UTIME_H 1
2055 # endif
2056 #elif (ACC_OS_WIN32 && ACC_CC_PGI) && defined(__MINGW32__)
2057 # undef HAVE_UTIME_H
2058 # define HAVE_SYS_UTIME_H 1
2059 #elif (ACC_OS_WIN32 && ACC_CC_GNUC) && defined(__PW32__)
2060 #elif (ACC_CC_SYMANTECC)
2061 # undef HAVE_DIRENT_H
2062 # undef HAVE_UNISTD_H
2063 # if (__SC__ < 0x700)
2064 # undef HAVE_UTIME_H
2065 # undef HAVE_SYS_TIME_H
2066 # endif
2067 #elif (ACC_CC_TOPSPEEDC)
2068 # undef HAVE_DIRENT_H
2069 # undef HAVE_UNISTD_H
2070 # undef HAVE_UTIME_H
2071 # undef HAVE_SYS_STAT_H
2072 # undef HAVE_SYS_TIME_H
2073 # undef HAVE_SYS_TYPES_H
2074 #elif (ACC_CC_TURBOC)
2075 # undef HAVE_UNISTD_H
2076 # undef HAVE_SYS_TIME_H
2077 # undef HAVE_SYS_TYPES_H
2078 # if (ACC_OS_WIN32 || ACC_OS_WIN64)
2079 # undef HAVE_DIRENT_H
2080 # endif
2081 # if (__TURBOC__ < 0x0200)
2082 # undef HAVE_SIGNAL_H
2083 # endif
2084 # if (__TURBOC__ < 0x0400)
2085 # undef HAVE_DIRECT_H
2086 # undef HAVE_DIRENT_H
2087 # undef HAVE_MALLOC_H
2088 # undef HAVE_MEMORY_H
2089 # undef HAVE_UTIME_H
2090 # endif
2091 #elif (ACC_CC_WATCOMC)
2092 # undef HAVE_DIRENT_H
2093 # undef HAVE_UTIME_H
2094 # undef HAVE_SYS_TIME_H
2095 # define HAVE_SYS_UTIME_H 1
2096 # if (__WATCOMC__ < 950)
2097 # undef HAVE_UNISTD_H
2098 # endif
2099 #elif (ACC_CC_ZORTECHC)
2100 # undef HAVE_DIRENT_H
2101 # undef HAVE_MEMORY_H
2102 # undef HAVE_UNISTD_H
2103 # undef HAVE_UTIME_H
2104 # undef HAVE_SYS_TIME_H
2105 #endif
2106 #endif
2107 #if (ACC_OS_CONSOLE)
2108 # undef HAVE_DIRENT_H
2109 #endif
2110 #if (ACC_OS_EMBEDDED)
2111 # undef HAVE_DIRENT_H
2112 #endif
2113 #if (ACC_LIBC_ISOC90 || ACC_LIBC_ISOC99)
2114 # undef HAVE_DIRENT_H
2115 # undef HAVE_FCNTL_H
2116 # undef HAVE_MALLOC_H
2117 # undef HAVE_UNISTD_H
2118 # undef HAVE_UTIME_H
2119 # undef HAVE_SYS_STAT_H
2120 # undef HAVE_SYS_TIME_H
2121 # undef HAVE_SYS_TYPES_H
2122 #endif
2123 #if (ACC_LIBC_GLIBC >= 0x020100ul)
2124 # define HAVE_STDINT_H 1
2125 #elif (ACC_LIBC_DIETLIBC)
2126 # undef HAVE_STDINT_H
2127 #elif (ACC_LIBC_UCLIBC)
2128 # define HAVE_STDINT_H 1
2129 #elif (ACC_CC_BORLANDC) && (__BORLANDC__ >= 0x560)
2130 # undef HAVE_STDINT_H
2131 #elif (ACC_CC_DMC) && (__DMC__ >= 0x825)
2132 # define HAVE_STDINT_H 1
2133 #endif
2134 #if (HAVE_SYS_TIME_H && HAVE_TIME_H)
2135 # define TIME_WITH_SYS_TIME 1
2136 #endif
2137 #endif
2138 #endif
2139 #if !defined(ACC_CFG_AUTO_NO_FUNCTIONS)
2140 #if defined(ACC_LIBC_NAKED)
2141 #elif defined(ACC_LIBC_FREESTANDING)
2142 #elif defined(ACC_LIBC_MOSTLY_FREESTANDING)
2143 # define HAVE_LONGJMP 1
2144 # define HAVE_MEMCMP 1
2145 # define HAVE_MEMCPY 1
2146 # define HAVE_MEMMOVE 1
2147 # define HAVE_MEMSET 1
2148 # define HAVE_SETJMP 1
2149 #else
2150 #define HAVE_ACCESS 1
2151 #define HAVE_ALLOCA 1
2152 #define HAVE_ATEXIT 1
2153 #define HAVE_ATOI 1
2154 #define HAVE_ATOL 1
2155 #define HAVE_CHMOD 1
2156 #define HAVE_CHOWN 1
2157 #define HAVE_CTIME 1
2158 #define HAVE_DIFFTIME 1
2159 #define HAVE_FILENO 1
2160 #define HAVE_FSTAT 1
2161 #define HAVE_GETENV 1
2162 #define HAVE_GETTIMEOFDAY 1
2163 #define HAVE_GMTIME 1
2164 #define HAVE_ISATTY 1
2165 #define HAVE_LOCALTIME 1
2166 #define HAVE_LONGJMP 1
2167 #define HAVE_LSTAT 1
2168 #define HAVE_MEMCMP 1
2169 #define HAVE_MEMCPY 1
2170 #define HAVE_MEMMOVE 1
2171 #define HAVE_MEMSET 1
2172 #define HAVE_MKDIR 1
2173 #define HAVE_MKTIME 1
2174 #define HAVE_QSORT 1
2175 #define HAVE_RAISE 1
2176 #define HAVE_RMDIR 1
2177 #define HAVE_SETJMP 1
2178 #define HAVE_SIGNAL 1
2179 #define HAVE_SNPRINTF 1
2180 #define HAVE_STAT 1
2181 #define HAVE_STRCHR 1
2182 #define HAVE_STRDUP 1
2183 #define HAVE_STRERROR 1
2184 #define HAVE_STRFTIME 1
2185 #define HAVE_STRRCHR 1
2186 #define HAVE_STRSTR 1
2187 #define HAVE_TIME 1
2188 #define HAVE_UMASK 1
2189 #define HAVE_UTIME 1
2190 #define HAVE_VSNPRINTF 1
2191 #if (ACC_OS_BEOS || ACC_OS_CYGWIN || ACC_OS_POSIX || ACC_OS_QNX || ACC_OS_VMS)
2192 # define HAVE_STRCASECMP 1
2193 # define HAVE_STRNCASECMP 1
2194 #elif (ACC_OS_WIN32 && ACC_CC_GNUC) && defined(__PW32__)
2195 # define HAVE_STRCASECMP 1
2196 # define HAVE_STRNCASECMP 1
2197 #else
2198 # define HAVE_STRICMP 1
2199 # define HAVE_STRNICMP 1
2200 #endif
2201 #if (ACC_OS_POSIX)
2202 # if (ACC_OS_POSIX_AIX)
2203 # define HAVE_GETRUSAGE 1
2204 # elif (ACC_OS_POSIX_MACOSX && ACC_LIBC_MSL)
2205 # undef HAVE_CHOWN
2206 # undef HAVE_LSTAT
2207 # elif (ACC_OS_POSIX_UNICOS)
2208 # undef HAVE_ALLOCA
2209 # undef HAVE_SNPRINTF
2210 # undef HAVE_VSNPRINTF
2211 # endif
2212 # if (ACC_CC_TINYC)
2213 # undef HAVE_ALLOCA
2214 # endif
2215 # if (ACC_LIBC_DIETLIBC || ACC_LIBC_GLIBC || ACC_LIBC_UCLIBC)
2216 # define HAVE_GETRUSAGE 1
2217 # define HAVE_GETPAGESIZE 1
2218 # define HAVE_MMAP 1
2219 # define HAVE_MPROTECT 1
2220 # define HAVE_MUNMAP 1
2221 # endif
2222 #elif (ACC_OS_CYGWIN)
2223 # if (ACC_CC_GNUC < 0x025a00ul)
2224 # undef HAVE_GETTIMEOFDAY
2225 # undef HAVE_LSTAT
2226 # endif
2227 # if (ACC_CC_GNUC < 0x025f00ul)
2228 # undef HAVE_SNPRINTF
2229 # undef HAVE_VSNPRINTF
2230 # endif
2231 #elif (ACC_OS_EMX)
2232 # undef HAVE_CHOWN
2233 # undef HAVE_LSTAT
2234 #elif (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC)
2235 # if !defined(__MINT__)
2236 # undef HAVE_SNPRINTF
2237 # undef HAVE_VSNPRINTF
2238 # endif
2239 #elif (ACC_ARCH_M68K && ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
2240 # undef HAVE_ALLOCA
2241 # undef HAVE_ACCESS
2242 # undef HAVE_CHMOD
2243 # undef HAVE_CHOWN
2244 # undef HAVE_FSTAT
2245 # undef HAVE_GETTIMEOFDAY
2246 # undef HAVE_LSTAT
2247 # undef HAVE_SNPRINTF
2248 # undef HAVE_UMASK
2249 # undef HAVE_UTIME
2250 # undef HAVE_VSNPRINTF
2251 #endif
2252 #if (ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64)
2253 #undef HAVE_CHOWN
2254 #undef HAVE_GETTIMEOFDAY
2255 #undef HAVE_LSTAT
2256 #undef HAVE_UMASK
2257 #if (ACC_CC_AZTECC)
2258 # undef HAVE_ALLOCA
2259 # undef HAVE_DIFFTIME
2260 # undef HAVE_FSTAT
2261 # undef HAVE_STRDUP
2262 # undef HAVE_SNPRINTF
2263 # undef HAVE_UTIME
2264 # undef HAVE_VSNPRINTF
2265 #elif (ACC_CC_BORLANDC)
2266 # if (__BORLANDC__ < 0x0400)
2267 # undef HAVE_ALLOCA
2268 # undef HAVE_UTIME
2269 # endif
2270 # if ((__BORLANDC__ < 0x0410) && ACC_OS_WIN16)
2271 # undef HAVE_ALLOCA
2272 # endif
2273 # if (__BORLANDC__ < 0x0550)
2274 # undef HAVE_SNPRINTF
2275 # undef HAVE_VSNPRINTF
2276 # endif
2277 #elif (ACC_CC_DMC)
2278 # if (ACC_OS_WIN16)
2279 # undef HAVE_ALLOCA
2280 # endif
2281 # define snprintf _snprintf
2282 # define vsnprintf _vsnprintf
2283 #elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
2284 # undef HAVE_SNPRINTF
2285 # undef HAVE_VSNPRINTF
2286 #elif (ACC_OS_DOS32 && ACC_CC_HIGHC)
2287 # undef HAVE_SNPRINTF
2288 # undef HAVE_VSNPRINTF
2289 #elif (ACC_CC_IBMC)
2290 # undef HAVE_SNPRINTF
2291 # undef HAVE_VSNPRINTF
2292 #elif (ACC_CC_INTELC)
2293 # define snprintf _snprintf
2294 # define vsnprintf _vsnprintf
2295 #elif (ACC_CC_LCCWIN32)
2296 # define utime _utime
2297 #elif (ACC_CC_MSC)
2298 # if (_MSC_VER < 600)
2299 # undef HAVE_STRFTIME
2300 # endif
2301 # if (_MSC_VER < 700)
2302 # undef HAVE_SNPRINTF
2303 # undef HAVE_VSNPRINTF
2304 # elif (_MSC_VER < 1500)
2305 # define snprintf _snprintf
2306 # define vsnprintf _vsnprintf
2307 # endif
2308 # if ((_MSC_VER < 800) && ACC_OS_WIN16)
2309 # undef HAVE_ALLOCA
2310 # endif
2311 # if (ACC_ARCH_I086) && defined(__cplusplus)
2312 # undef HAVE_LONGJMP
2313 # undef HAVE_SETJMP
2314 # endif
2315 #elif (ACC_OS_WIN32 && ACC_CC_GNUC) && defined(__MINGW32__)
2316 # if (ACC_CC_GNUC < 0x025f00ul)
2317 # undef HAVE_SNPRINTF
2318 # undef HAVE_VSNPRINTF
2319 # else
2320 # define snprintf _snprintf
2321 # define vsnprintf _vsnprintf
2322 # endif
2323 #elif (ACC_OS_WIN32 && ACC_LIBC_MSL)
2324 # if (__MSL__ < 0x8000ul)
2325 # undef HAVE_CHMOD
2326 # endif
2327 #elif (ACC_CC_NDPC)
2328 # undef HAVE_ALLOCA
2329 # undef HAVE_SNPRINTF
2330 # undef HAVE_STRNICMP
2331 # undef HAVE_UTIME
2332 # undef HAVE_VSNPRINTF
2333 # if defined(__cplusplus)
2334 # undef HAVE_STAT
2335 # endif
2336 #elif (ACC_CC_PACIFICC)
2337 # undef HAVE_ACCESS
2338 # undef HAVE_ALLOCA
2339 # undef HAVE_CHMOD
2340 # undef HAVE_DIFFTIME
2341 # undef HAVE_FSTAT
2342 # undef HAVE_MKTIME
2343 # undef HAVE_RAISE
2344 # undef HAVE_SNPRINTF
2345 # undef HAVE_STRFTIME
2346 # undef HAVE_UTIME
2347 # undef HAVE_VSNPRINTF
2348 #elif (ACC_OS_WIN32 && ACC_CC_PELLESC)
2349 # if (__POCC__ < 280)
2350 # define alloca _alloca
2351 # undef HAVE_UTIME
2352 # endif
2353 #elif (ACC_OS_WIN32 && ACC_CC_PGI) && defined(__MINGW32__)
2354 # define snprintf _snprintf
2355 # define vsnprintf _vsnprintf
2356 #elif (ACC_OS_WIN32 && ACC_CC_GNUC) && defined(__PW32__)
2357 # undef HAVE_SNPRINTF
2358 # undef HAVE_VSNPRINTF
2359 #elif (ACC_CC_SYMANTECC)
2360 # if (ACC_OS_WIN16 && (ACC_MM_MEDIUM || ACC_MM_LARGE || ACC_MM_HUGE))
2361 # undef HAVE_ALLOCA
2362 # endif
2363 # if (__SC__ < 0x600)
2364 # undef HAVE_SNPRINTF
2365 # undef HAVE_VSNPRINTF
2366 # else
2367 # define snprintf _snprintf
2368 # define vsnprintf _vsnprintf
2369 # endif
2370 # if (__SC__ < 0x700)
2371 # undef HAVE_DIFFTIME
2372 # undef HAVE_UTIME
2373 # endif
2374 #elif (ACC_CC_TOPSPEEDC)
2375 # undef HAVE_SNPRINTF
2376 # undef HAVE_VSNPRINTF
2377 #elif (ACC_CC_TURBOC)
2378 # undef HAVE_ALLOCA
2379 # undef HAVE_SNPRINTF
2380 # undef HAVE_VSNPRINTF
2381 # if (__TURBOC__ < 0x0200)
2382 # undef HAVE_RAISE
2383 # undef HAVE_SIGNAL
2384 # endif
2385 # if (__TURBOC__ < 0x0295)
2386 # undef HAVE_MKTIME
2387 # undef HAVE_STRFTIME
2388 # endif
2389 # if (__TURBOC__ < 0x0400)
2390 # undef HAVE_UTIME
2391 # endif
2392 #elif (ACC_CC_WATCOMC)
2393 # if (__WATCOMC__ < 1100)
2394 # undef HAVE_SNPRINTF
2395 # undef HAVE_VSNPRINTF
2396 # elif (__WATCOMC__ < 1200)
2397 # define snprintf _snprintf
2398 # define vsnprintf _vsnprintf
2399 # endif
2400 #elif (ACC_CC_ZORTECHC)
2401 # if (ACC_OS_WIN16 && (ACC_MM_MEDIUM || ACC_MM_LARGE || ACC_MM_HUGE))
2402 # undef HAVE_ALLOCA
2403 # endif
2404 # undef HAVE_DIFFTIME
2405 # undef HAVE_SNPRINTF
2406 # undef HAVE_UTIME
2407 # undef HAVE_VSNPRINTF
2408 #endif
2409 #endif
2410 #if (ACC_OS_CONSOLE)
2411 # undef HAVE_ACCESS
2412 # undef HAVE_CHMOD
2413 # undef HAVE_CHOWN
2414 # undef HAVE_GETTIMEOFDAY
2415 # undef HAVE_LSTAT
2416 # undef HAVE_TIME
2417 # undef HAVE_UMASK
2418 # undef HAVE_UTIME
2419 #endif
2420 #if (ACC_LIBC_ISOC90 || ACC_LIBC_ISOC99)
2421 # undef HAVE_ACCESS
2422 # undef HAVE_CHMOD
2423 # undef HAVE_CHOWN
2424 # undef HAVE_FSTAT
2425 # undef HAVE_GETTIMEOFDAY
2426 # undef HAVE_LSTAT
2427 # undef HAVE_STAT
2428 # undef HAVE_UMASK
2429 # undef HAVE_UTIME
2430 # if 1
2431 # undef HAVE_ALLOCA
2432 # undef HAVE_ISATTY
2433 # undef HAVE_MKDIR
2434 # undef HAVE_RMDIR
2435 # undef HAVE_STRDUP
2436 # undef HAVE_STRICMP
2437 # undef HAVE_STRNICMP
2438 # endif
2439 #endif
2440 #endif
2441 #endif
2442 #if !defined(ACC_CFG_AUTO_NO_SIZES)
2443 #if !defined(SIZEOF_SHORT) && defined(ACC_SIZEOF_SHORT)
2444 # define SIZEOF_SHORT ACC_SIZEOF_SHORT
2445 #endif
2446 #if !defined(SIZEOF_INT) && defined(ACC_SIZEOF_INT)
2447 # define SIZEOF_INT ACC_SIZEOF_INT
2448 #endif
2449 #if !defined(SIZEOF_LONG) && defined(ACC_SIZEOF_LONG)
2450 # define SIZEOF_LONG ACC_SIZEOF_LONG
2451 #endif
2452 #if !defined(SIZEOF_LONG_LONG) && defined(ACC_SIZEOF_LONG_LONG)
2453 # define SIZEOF_LONG_LONG ACC_SIZEOF_LONG_LONG
2454 #endif
2455 #if !defined(SIZEOF___INT32) && defined(ACC_SIZEOF___INT32)
2456 # define SIZEOF___INT32 ACC_SIZEOF___INT32
2457 #endif
2458 #if !defined(SIZEOF___INT64) && defined(ACC_SIZEOF___INT64)
2459 # define SIZEOF___INT64 ACC_SIZEOF___INT64
2460 #endif
2461 #if !defined(SIZEOF_VOID_P) && defined(ACC_SIZEOF_VOID_P)
2462 # define SIZEOF_VOID_P ACC_SIZEOF_VOID_P
2463 #endif
2464 #if !defined(SIZEOF_SIZE_T) && defined(ACC_SIZEOF_SIZE_T)
2465 # define SIZEOF_SIZE_T ACC_SIZEOF_SIZE_T
2466 #endif
2467 #if !defined(SIZEOF_PTRDIFF_T) && defined(ACC_SIZEOF_PTRDIFF_T)
2468 # define SIZEOF_PTRDIFF_T ACC_SIZEOF_PTRDIFF_T
2469 #endif
2470 #endif
2471 #if defined(HAVE_SIGNAL) && !defined(RETSIGTYPE)
2472 # define RETSIGTYPE void
2473 #endif
2474 #endif
2475 #if defined(ACC_CFG_NO_ACC_TYPE_H)
2476 #else
2477 #if (ACC_SIZEOF_LONG_LONG+0 > 0)
2478 __acc_gnuc_extension__ typedef long long acc_llong_t;
2479 __acc_gnuc_extension__ typedef unsigned long long acc_ullong_t;
2480 #endif
2481 #if (!(ACC_SIZEOF_SHORT+0 > 0 && ACC_SIZEOF_INT+0 > 0 && ACC_SIZEOF_LONG+0 > 0))
2482 # error "missing defines for sizes"
2483 #endif
2484 #if (!(ACC_SIZEOF_PTRDIFF_T+0 > 0 && ACC_SIZEOF_SIZE_T+0 > 0 && ACC_SIZEOF_VOID_P+0 > 0))
2485 # error "missing defines for sizes"
2486 #endif
2487 #if !defined(acc_int16e_t)
2488 #if (ACC_SIZEOF_LONG == 2)
2489 # define acc_int16e_t long
2490 # define acc_uint16e_t unsigned long
2491 #elif (ACC_SIZEOF_INT == 2)
2492 # define acc_int16e_t int
2493 # define acc_uint16e_t unsigned int
2494 #elif (ACC_SIZEOF_SHORT == 2)
2495 # define acc_int16e_t short int
2496 # define acc_uint16e_t unsigned short int
2497 #elif 1 && !defined(ACC_CFG_TYPE_NO_MODE_HI) && (ACC_CC_GNUC >= 0x025f00ul || ACC_CC_LLVM)
2498 typedef int __acc_int16e_hi_t __attribute__((__mode__(__HI__)));
2499 typedef unsigned int __acc_uint16e_hi_t __attribute__((__mode__(__HI__)));
2500 # define acc_int16e_t __acc_int16e_hi_t
2501 # define acc_uint16e_t __acc_uint16e_hi_t
2502 #elif (ACC_SIZEOF___INT16 == 2)
2503 # define acc_int16e_t __int16
2504 # define acc_uint16e_t unsigned __int16
2505 #else
2506 #endif
2507 #endif
2508 #if defined(acc_int16e_t)
2509 # define ACC_SIZEOF_ACC_INT16E_T 2
2510 #endif
2511 #if !defined(acc_int32e_t)
2512 #if (ACC_SIZEOF_LONG == 4)
2513 # define acc_int32e_t long int
2514 # define acc_uint32e_t unsigned long int
2515 #elif (ACC_SIZEOF_INT == 4)
2516 # define acc_int32e_t int
2517 # define acc_uint32e_t unsigned int
2518 #elif (ACC_SIZEOF_SHORT == 4)
2519 # define acc_int32e_t short int
2520 # define acc_uint32e_t unsigned short int
2521 #elif (ACC_SIZEOF_LONG_LONG == 4)
2522 # define acc_int32e_t acc_llong_t
2523 # define acc_uint32e_t acc_ullong_t
2524 #elif 1 && !defined(ACC_CFG_TYPE_NO_MODE_SI) && (ACC_CC_GNUC >= 0x025f00ul || ACC_CC_LLVM) && (__INT_MAX__+0 > 2147483647L)
2525 typedef int __acc_int32e_si_t __attribute__((__mode__(__SI__)));
2526 typedef unsigned int __acc_uint32e_si_t __attribute__((__mode__(__SI__)));
2527 # define acc_int32e_t __acc_int32e_si_t
2528 # define acc_uint32e_t __acc_uint32e_si_t
2529 #elif 1 && !defined(ACC_CFG_TYPE_NO_MODE_SI) && (ACC_CC_GNUC >= 0x025f00ul) && defined(__AVR__) && (__LONG_MAX__+0 == 32767L)
2530 typedef int __acc_int32e_si_t __attribute__((__mode__(__SI__)));
2531 typedef unsigned int __acc_uint32e_si_t __attribute__((__mode__(__SI__)));
2532 # define acc_int32e_t __acc_int32e_si_t
2533 # define acc_uint32e_t __acc_uint32e_si_t
2534 # define ACC_INT32_C(c) c##LL
2535 # define ACC_UINT32_C(c) c##ULL
2536 #elif (ACC_SIZEOF___INT32 == 4)
2537 # define acc_int32e_t __int32
2538 # define acc_uint32e_t unsigned __int32
2539 #else
2540 #endif
2541 #endif
2542 #if defined(acc_int32e_t)
2543 # define ACC_SIZEOF_ACC_INT32E_T 4
2544 #endif
2545 #if !defined(acc_int64e_t)
2546 #if (ACC_SIZEOF___INT64 == 8)
2547 # if (ACC_CC_BORLANDC) && !defined(ACC_CFG_TYPE_PREFER___INT64)
2548 # define ACC_CFG_TYPE_PREFER___INT64 1
2549 # endif
2550 #endif
2551 #if (ACC_SIZEOF_INT == 8) && (ACC_SIZEOF_INT < ACC_SIZEOF_LONG)
2552 # define acc_int64e_t int
2553 # define acc_uint64e_t unsigned int
2554 # define ACC_SIZEOF_ACC_INT64E_T ACC_SIZEOF_INT
2555 #elif (ACC_SIZEOF_LONG == 8)
2556 # define acc_int64e_t long int
2557 # define acc_uint64e_t unsigned long int
2558 # define ACC_SIZEOF_ACC_INT64E_T ACC_SIZEOF_LONG
2559 #elif (ACC_SIZEOF_LONG_LONG == 8) && !defined(ACC_CFG_TYPE_PREFER___INT64)
2560 # define acc_int64e_t acc_llong_t
2561 # define acc_uint64e_t acc_ullong_t
2562 # if (ACC_CC_BORLANDC)
2563 # define ACC_INT64_C(c) ((c) + 0ll)
2564 # define ACC_UINT64_C(c) ((c) + 0ull)
2565 # else
2566 # define ACC_INT64_C(c) c##LL
2567 # define ACC_UINT64_C(c) c##ULL
2568 # endif
2569 # define ACC_SIZEOF_ACC_INT64E_T ACC_SIZEOF_LONG_LONG
2570 #elif (ACC_SIZEOF___INT64 == 8)
2571 # define acc_int64e_t __int64
2572 # define acc_uint64e_t unsigned __int64
2573 # if (ACC_CC_BORLANDC)
2574 # define ACC_INT64_C(c) ((c) + 0i64)
2575 # define ACC_UINT64_C(c) ((c) + 0ui64)
2576 # else
2577 # define ACC_INT64_C(c) c##i64
2578 # define ACC_UINT64_C(c) c##ui64
2579 # endif
2580 # define ACC_SIZEOF_ACC_INT64E_T ACC_SIZEOF___INT64
2581 #else
2582 #endif
2583 #endif
2584 #if !defined(acc_int32l_t)
2585 #if defined(acc_int32e_t)
2586 # define acc_int32l_t acc_int32e_t
2587 # define acc_uint32l_t acc_uint32e_t
2588 # define ACC_SIZEOF_ACC_INT32L_T ACC_SIZEOF_ACC_INT32E_T
2589 #elif (ACC_SIZEOF_INT >= 4) && (ACC_SIZEOF_INT < ACC_SIZEOF_LONG)
2590 # define acc_int32l_t int
2591 # define acc_uint32l_t unsigned int
2592 # define ACC_SIZEOF_ACC_INT32L_T ACC_SIZEOF_INT
2593 #elif (ACC_SIZEOF_LONG >= 4)
2594 # define acc_int32l_t long int
2595 # define acc_uint32l_t unsigned long int
2596 # define ACC_SIZEOF_ACC_INT32L_T ACC_SIZEOF_LONG
2597 #else
2598 # error "acc_int32l_t"
2599 #endif
2600 #endif
2601 #if !defined(acc_int64l_t)
2602 #if defined(acc_int64e_t)
2603 # define acc_int64l_t acc_int64e_t
2604 # define acc_uint64l_t acc_uint64e_t
2605 # define ACC_SIZEOF_ACC_INT64L_T ACC_SIZEOF_ACC_INT64E_T
2606 #else
2607 #endif
2608 #endif
2609 #if !defined(acc_int32f_t)
2610 #if (ACC_SIZEOF_SIZE_T >= 8)
2611 # define acc_int32f_t acc_int64l_t
2612 # define acc_uint32f_t acc_uint64l_t
2613 # define ACC_SIZEOF_ACC_INT32F_T ACC_SIZEOF_ACC_INT64L_T
2614 #else
2615 # define acc_int32f_t acc_int32l_t
2616 # define acc_uint32f_t acc_uint32l_t
2617 # define ACC_SIZEOF_ACC_INT32F_T ACC_SIZEOF_ACC_INT32L_T
2618 #endif
2619 #endif
2620 #if !defined(acc_intptr_t)
2621 #if 1 && (ACC_OS_OS400 && (ACC_SIZEOF_VOID_P == 16))
2622 # define __ACC_INTPTR_T_IS_POINTER 1
2623 typedef char* acc_intptr_t;
2624 typedef char* acc_uintptr_t;
2625 # define acc_intptr_t acc_intptr_t
2626 # define acc_uintptr_t acc_uintptr_t
2627 # define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_VOID_P
2628 #elif (ACC_CC_MSC && (_MSC_VER >= 1300) && (ACC_SIZEOF_VOID_P == 4) && (ACC_SIZEOF_INT == 4))
2629 typedef __w64 int acc_intptr_t;
2630 typedef __w64 unsigned int acc_uintptr_t;
2631 # define acc_intptr_t acc_intptr_t
2632 # define acc_uintptr_t acc_uintptr_t
2633 # define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_INT
2634 #elif (ACC_SIZEOF_SHORT == ACC_SIZEOF_VOID_P) && (ACC_SIZEOF_INT > ACC_SIZEOF_VOID_P)
2635 # define acc_intptr_t short
2636 # define acc_uintptr_t unsigned short
2637 # define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_SHORT
2638 #elif (ACC_SIZEOF_INT >= ACC_SIZEOF_VOID_P) && (ACC_SIZEOF_INT < ACC_SIZEOF_LONG)
2639 # define acc_intptr_t int
2640 # define acc_uintptr_t unsigned int
2641 # define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_INT
2642 #elif (ACC_SIZEOF_LONG >= ACC_SIZEOF_VOID_P)
2643 # define acc_intptr_t long
2644 # define acc_uintptr_t unsigned long
2645 # define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_LONG
2646 #elif (ACC_SIZEOF_ACC_INT64L_T >= ACC_SIZEOF_VOID_P)
2647 # define acc_intptr_t acc_int64l_t
2648 # define acc_uintptr_t acc_uint64l_t
2649 # define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_ACC_INT64L_T
2650 #else
2651 # error "acc_intptr_t"
2652 #endif
2653 #endif
2654 #if !defined(acc_word_t)
2655 #if defined(ACC_WORDSIZE) && (ACC_WORDSIZE > 0)
2656 #if (ACC_WORDSIZE == ACC_SIZEOF_ACC_INTPTR_T) && !defined(__ACC_INTPTR_T_IS_POINTER)
2657 # define acc_word_t acc_uintptr_t
2658 # define acc_sword_t acc_intptr_t
2659 # define ACC_SIZEOF_ACC_WORD_T ACC_SIZEOF_ACC_INTPTR_T
2660 #elif (ACC_WORDSIZE == ACC_SIZEOF_LONG)
2661 # define acc_word_t unsigned long
2662 # define acc_sword_t long
2663 # define ACC_SIZEOF_ACC_WORD_T ACC_SIZEOF_LONG
2664 #elif (ACC_WORDSIZE == ACC_SIZEOF_INT)
2665 # define acc_word_t unsigned int
2666 # define acc_sword_t int
2667 # define ACC_SIZEOF_ACC_WORD_T ACC_SIZEOF_INT
2668 #elif (ACC_WORDSIZE == ACC_SIZEOF_SHORT)
2669 # define acc_word_t unsigned short
2670 # define acc_sword_t short
2671 # define ACC_SIZEOF_ACC_WORD_T ACC_SIZEOF_SHORT
2672 #elif (ACC_WORDSIZE == 1)
2673 # define acc_word_t unsigned char
2674 # define acc_sword_t signed char
2675 # define ACC_SIZEOF_ACC_WORD_T 1
2676 #elif (ACC_WORDSIZE == ACC_SIZEOF_ACC_INT64L_T)
2677 # define acc_word_t acc_uint64l_t
2678 # define acc_sword_t acc_int64l_t
2679 # define ACC_SIZEOF_ACC_WORD_T ACC_SIZEOF_ACC_INT64L_T
2680 #elif (ACC_ARCH_SPU) && (ACC_CC_GNUC)
2681 #if 0
2682 typedef unsigned acc_word_t __attribute__((__mode__(__V16QI__)));
2683 typedef int acc_sword_t __attribute__((__mode__(__V16QI__)));
2684 # define acc_word_t acc_word_t
2685 # define acc_sword_t acc_sword_t
2686 # define ACC_SIZEOF_ACC_WORD_T 16
2687 #endif
2688 #else
2689 # error "acc_word_t"
2690 #endif
2691 #endif
2692 #endif
2693 #if !defined(ACC_INT16_C)
2694 # if (ACC_BROKEN_INTEGRAL_CONSTANTS) && (ACC_SIZEOF_INT >= 2)
2695 # define ACC_INT16_C(c) ((c) + 0)
2696 # define ACC_UINT16_C(c) ((c) + 0U)
2697 # elif (ACC_BROKEN_INTEGRAL_CONSTANTS) && (ACC_SIZEOF_LONG >= 2)
2698 # define ACC_INT16_C(c) ((c) + 0L)
2699 # define ACC_UINT16_C(c) ((c) + 0UL)
2700 # elif (ACC_SIZEOF_INT >= 2)
2701 # define ACC_INT16_C(c) c
2702 # define ACC_UINT16_C(c) c##U
2703 # elif (ACC_SIZEOF_LONG >= 2)
2704 # define ACC_INT16_C(c) c##L
2705 # define ACC_UINT16_C(c) c##UL
2706 # else
2707 # error "ACC_INT16_C"
2708 # endif
2709 #endif
2710 #if !defined(ACC_INT32_C)
2711 # if (ACC_BROKEN_INTEGRAL_CONSTANTS) && (ACC_SIZEOF_INT >= 4)
2712 # define ACC_INT32_C(c) ((c) + 0)
2713 # define ACC_UINT32_C(c) ((c) + 0U)
2714 # elif (ACC_BROKEN_INTEGRAL_CONSTANTS) && (ACC_SIZEOF_LONG >= 4)
2715 # define ACC_INT32_C(c) ((c) + 0L)
2716 # define ACC_UINT32_C(c) ((c) + 0UL)
2717 # elif (ACC_SIZEOF_INT >= 4)
2718 # define ACC_INT32_C(c) c
2719 # define ACC_UINT32_C(c) c##U
2720 # elif (ACC_SIZEOF_LONG >= 4)
2721 # define ACC_INT32_C(c) c##L
2722 # define ACC_UINT32_C(c) c##UL
2723 # elif (ACC_SIZEOF_LONG_LONG >= 4)
2724 # define ACC_INT32_C(c) c##LL
2725 # define ACC_UINT32_C(c) c##ULL
2726 # else
2727 # error "ACC_INT32_C"
2728 # endif
2729 #endif
2730 #if !defined(ACC_INT64_C) && defined(acc_int64l_t)
2731 # if (ACC_BROKEN_INTEGRAL_CONSTANTS) && (ACC_SIZEOF_INT >= 8)
2732 # define ACC_INT64_C(c) ((c) + 0)
2733 # define ACC_UINT64_C(c) ((c) + 0U)
2734 # elif (ACC_BROKEN_INTEGRAL_CONSTANTS) && (ACC_SIZEOF_LONG >= 8)
2735 # define ACC_INT64_C(c) ((c) + 0L)
2736 # define ACC_UINT64_C(c) ((c) + 0UL)
2737 # elif (ACC_SIZEOF_INT >= 8)
2738 # define ACC_INT64_C(c) c
2739 # define ACC_UINT64_C(c) c##U
2740 # elif (ACC_SIZEOF_LONG >= 8)
2741 # define ACC_INT64_C(c) c##L
2742 # define ACC_UINT64_C(c) c##UL
2743 # else
2744 # error "ACC_INT64_C"
2745 # endif
2746 #endif
2747 #if !defined(SIZEOF_ACC_INT16E_T) && defined(ACC_SIZEOF_ACC_INT16E_T)
2748 # define SIZEOF_ACC_INT16E_T ACC_SIZEOF_ACC_INT16E_T
2749 #endif
2750 #if !defined(SIZEOF_ACC_INT32E_T) && defined(ACC_SIZEOF_ACC_INT32E_T)
2751 # define SIZEOF_ACC_INT32E_T ACC_SIZEOF_ACC_INT32E_T
2752 #endif
2753 #if !defined(SIZEOF_ACC_INT64E_T) && defined(ACC_SIZEOF_ACC_INT64E_T)
2754 # define SIZEOF_ACC_INT64E_T ACC_SIZEOF_ACC_INT64E_T
2755 #endif
2756 #if !defined(SIZEOF_ACC_INT32L_T) && defined(ACC_SIZEOF_ACC_INT32L_T)
2757 # define SIZEOF_ACC_INT32L_T ACC_SIZEOF_ACC_INT32L_T
2758 #endif
2759 #if !defined(SIZEOF_ACC_INT64L_T) && defined(ACC_SIZEOF_ACC_INT64L_T)
2760 # define SIZEOF_ACC_INT64L_T ACC_SIZEOF_ACC_INT64L_T
2761 #endif
2762 #if !defined(SIZEOF_ACC_INT32F_T) && defined(ACC_SIZEOF_ACC_INT32F_T)
2763 # define SIZEOF_ACC_INT32F_T ACC_SIZEOF_ACC_INT32F_T
2764 #endif
2765 #if !defined(SIZEOF_ACC_INTPTR_T) && defined(ACC_SIZEOF_ACC_INTPTR_T)
2766 # define SIZEOF_ACC_INTPTR_T ACC_SIZEOF_ACC_INTPTR_T
2767 #endif
2768 #if !defined(SIZEOF_ACC_WORD_T) && defined(ACC_SIZEOF_ACC_WORD_T)
2769 # define SIZEOF_ACC_WORD_T ACC_SIZEOF_ACC_WORD_T
2770 #endif
2771 #if 1 && !defined(acc_signo_t) && defined(__linux__) && defined(__dietlibc__) && (ACC_SIZEOF_INT != 4)
2772 # define acc_signo_t acc_int32e_t
2773 #endif
2774 #if !defined(acc_signo_t)
2775 # define acc_signo_t int
2776 #endif
2777 #if defined(__cplusplus)
2778 extern "C" {
2779 #endif
2780 #if (ACC_BROKEN_CDECL_ALT_SYNTAX)
2781 typedef void __acc_cdecl_sighandler (*acc_sighandler_t)(acc_signo_t);
2782 #elif defined(RETSIGTYPE)
2783 typedef RETSIGTYPE (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
2784 #else
2785 typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
2786 #endif
2787 #if defined(__cplusplus)
2789 #endif
2790 # if defined(ACC_CFG_NO_ACC_UA_H)
2791 # else
2792 #if (ACC_CC_GNUC && (ACC_CC_GNUC < 0x020700ul))
2793 #elif (ACC_CC_GNUC && (ACC_CC_GNUC < 0x020800ul)) && defined(__cplusplus)
2794 #elif (ACC_CC_INTELC) && defined(_WIN32)
2795 #elif (ACC_CC_INTELC && (__INTEL_COMPILER < 700))
2796 #elif (ACC_CC_LLVM)
2797 #elif (ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE)
2798 #if !defined(__acc_ua16_t) && (ACC_OPT_UNALIGNED16) && defined(acc_int16e_t)
2799 typedef struct { __acc_ua_volatile acc_uint16e_t v __attribute__((__packed__)); } __acc_ua16_t;
2800 # define __acc_ua16_t __acc_ua16_t
2801 #endif
2802 #if !defined(__acc_ua32_t) && (ACC_OPT_UNALIGNED32) && defined(acc_int32e_t)
2803 typedef struct { __acc_ua_volatile acc_uint32e_t v __attribute__((__packed__)); } __acc_ua32_t;
2804 # define __acc_ua32_t __acc_ua32_t
2805 #endif
2806 #if !defined(__acc_ua64_t) && (ACC_OPT_UNALIGNED64) && defined(acc_int64l_t)
2807 typedef struct { __acc_ua_volatile acc_uint64l_t v __attribute__((__packed__)); } __acc_ua64_t;
2808 # define __acc_ua64_t __acc_ua64_t
2809 #endif
2810 #endif
2811 #if (ACC_OPT_UNALIGNED16) && defined(acc_int16e_t)
2812 #define ACC_UA_GET16(p) (* (__acc_ua_volatile const acc_uint16e_t*) (__acc_ua_volatile const void*) (p))
2813 #define ACC_UA_SET16(p,v) (* (__acc_ua_volatile acc_uint16e_t*) (__acc_ua_volatile void*) (p) = (acc_uint16e_t) (v))
2814 #if (ACC_ABI_BIG_ENDIAN)
2815 # define ACC_UA_GET_BE16(p) ACC_UA_GET16(p)
2816 # define ACC_UA_SET_BE16(p,v) ACC_UA_SET16(p,v)
2817 #elif (ACC_ABI_LITTLE_ENDIAN)
2818 # define ACC_UA_GET_LE16(p) ACC_UA_GET16(p)
2819 # define ACC_UA_SET_LE16(p,v) ACC_UA_SET16(p,v)
2820 #endif
2821 #if !defined(ACC_CFG_NO_INLINE_ASM) && defined(__acc_HAVE_forceinline)
2822 #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC)
2823 #if !defined(ACC_UA_GET_LE16)
2824 extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp);
2825 extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) {
2826 __acc_ua_volatile const acc_uint16e_t* p = (__acc_ua_volatile const acc_uint16e_t*) pp;
2827 unsigned long v;
2828 __asm__ __volatile__("lhbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p));
2829 return v;
2831 #define ACC_UA_GET_LE16(p) __ACC_UA_GET_LE16(p)
2832 #endif
2833 #if !defined(ACC_UA_SET_LE16)
2834 extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v);
2835 extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) {
2836 __acc_ua_volatile acc_uint16e_t* p = (__acc_ua_volatile acc_uint16e_t*) pp;
2837 __asm__ __volatile__("sthbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v));
2839 #define ACC_UA_SET_LE16(p,v) __ACC_UA_SET_LE16(p,v)
2840 #endif
2841 #endif
2842 #endif
2843 #if !defined(ACC_UA_COPY16)
2844 # define ACC_UA_COPY16(d,s) ACC_UA_SET16(d, ACC_UA_GET16(s))
2845 #endif
2846 #endif
2847 #if (ACC_OPT_UNALIGNED32) && defined(acc_int32e_t)
2848 #define ACC_UA_GET32(p) (* (__acc_ua_volatile const acc_uint32e_t*) (__acc_ua_volatile const void*) (p))
2849 #define ACC_UA_SET32(p,v) (* (__acc_ua_volatile acc_uint32e_t*) (__acc_ua_volatile void*) (p) = (acc_uint32e_t) (v))
2850 #if (ACC_ABI_BIG_ENDIAN)
2851 # define ACC_UA_GET_BE32(p) ACC_UA_GET32(p)
2852 # define ACC_UA_SET_BE32(p,v) ACC_UA_SET32(p,v)
2853 #elif (ACC_ABI_LITTLE_ENDIAN)
2854 # define ACC_UA_GET_LE32(p) ACC_UA_GET32(p)
2855 # define ACC_UA_SET_LE32(p,v) ACC_UA_SET32(p,v)
2856 #endif
2857 #if !defined(ACC_CFG_NO_INLINE_ASM) && defined(__acc_HAVE_forceinline)
2858 #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC)
2859 #if !defined(ACC_UA_GET_LE32)
2860 extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp);
2861 extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) {
2862 __acc_ua_volatile const acc_uint32e_t* p = (__acc_ua_volatile const acc_uint32e_t*) pp;
2863 unsigned long v;
2864 __asm__ __volatile__("lwbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p));
2865 return v;
2867 #define ACC_UA_GET_LE32(p) __ACC_UA_GET_LE32(p)
2868 #endif
2869 #if !defined(ACC_UA_SET_LE32)
2870 extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v);
2871 extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) {
2872 __acc_ua_volatile acc_uint32e_t* p = (__acc_ua_volatile acc_uint32e_t*) pp;
2873 __asm__ __volatile__("stwbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v));
2875 #define ACC_UA_SET_LE32(p,v) __ACC_UA_SET_LE32(p,v)
2876 #endif
2877 #endif
2878 #endif
2879 #if !defined(ACC_UA_COPY32)
2880 # define ACC_UA_COPY32(d,s) ACC_UA_SET32(d, ACC_UA_GET32(s))
2881 #endif
2882 #endif
2883 #if (ACC_OPT_UNALIGNED64) && defined(acc_int64l_t)
2884 #define ACC_UA_GET64(p) (* (__acc_ua_volatile const acc_uint64l_t*) (__acc_ua_volatile const void*) (p))
2885 #define ACC_UA_SET64(p,v) (* (__acc_ua_volatile acc_uint64l_t*) (__acc_ua_volatile void*) (p) = (acc_uint64l_t) (v))
2886 #if (ACC_ABI_BIG_ENDIAN)
2887 # define ACC_UA_GET_BE64(p) ACC_UA_GET64(p)
2888 # define ACC_UA_SET_BE64(p,v) ACC_UA_SET64(p,v)
2889 #elif (ACC_ABI_LITTLE_ENDIAN)
2890 # define ACC_UA_GET_LE64(p) ACC_UA_GET64(p)
2891 # define ACC_UA_SET_LE64(p,v) ACC_UA_SET64(p,v)
2892 #endif
2893 #if !defined(ACC_UA_COPY64)
2894 # define ACC_UA_COPY64(d,s) ACC_UA_SET64(d, ACC_UA_GET64(s))
2895 #endif
2896 #endif
2897 # endif
2898 #endif
2899 #endif
2900 #if defined(ACC_WANT_ACC_TYPE_H)
2901 # undef ACC_WANT_ACC_TYPE_H
2902 # if defined(ACC_CFG_NO_ACC_TYPE_H)
2903 # error "ACC_WANT_ACC_TYPE_H with ACC_CFG_NO_ACC_TYPE_H"
2904 # endif
2905 #if (ACC_SIZEOF_LONG_LONG+0 > 0)
2906 __acc_gnuc_extension__ typedef long long acc_llong_t;
2907 __acc_gnuc_extension__ typedef unsigned long long acc_ullong_t;
2908 #endif
2909 #if (!(ACC_SIZEOF_SHORT+0 > 0 && ACC_SIZEOF_INT+0 > 0 && ACC_SIZEOF_LONG+0 > 0))
2910 # error "missing defines for sizes"
2911 #endif
2912 #if (!(ACC_SIZEOF_PTRDIFF_T+0 > 0 && ACC_SIZEOF_SIZE_T+0 > 0 && ACC_SIZEOF_VOID_P+0 > 0))
2913 # error "missing defines for sizes"
2914 #endif
2915 #if !defined(acc_int16e_t)
2916 #if (ACC_SIZEOF_LONG == 2)
2917 # define acc_int16e_t long
2918 # define acc_uint16e_t unsigned long
2919 #elif (ACC_SIZEOF_INT == 2)
2920 # define acc_int16e_t int
2921 # define acc_uint16e_t unsigned int
2922 #elif (ACC_SIZEOF_SHORT == 2)
2923 # define acc_int16e_t short int
2924 # define acc_uint16e_t unsigned short int
2925 #elif 1 && !defined(ACC_CFG_TYPE_NO_MODE_HI) && (ACC_CC_GNUC >= 0x025f00ul || ACC_CC_LLVM)
2926 typedef int __acc_int16e_hi_t __attribute__((__mode__(__HI__)));
2927 typedef unsigned int __acc_uint16e_hi_t __attribute__((__mode__(__HI__)));
2928 # define acc_int16e_t __acc_int16e_hi_t
2929 # define acc_uint16e_t __acc_uint16e_hi_t
2930 #elif (ACC_SIZEOF___INT16 == 2)
2931 # define acc_int16e_t __int16
2932 # define acc_uint16e_t unsigned __int16
2933 #else
2934 #endif
2935 #endif
2936 #if defined(acc_int16e_t)
2937 # define ACC_SIZEOF_ACC_INT16E_T 2
2938 #endif
2939 #if !defined(acc_int32e_t)
2940 #if (ACC_SIZEOF_LONG == 4)
2941 # define acc_int32e_t long int
2942 # define acc_uint32e_t unsigned long int
2943 #elif (ACC_SIZEOF_INT == 4)
2944 # define acc_int32e_t int
2945 # define acc_uint32e_t unsigned int
2946 #elif (ACC_SIZEOF_SHORT == 4)
2947 # define acc_int32e_t short int
2948 # define acc_uint32e_t unsigned short int
2949 #elif (ACC_SIZEOF_LONG_LONG == 4)
2950 # define acc_int32e_t acc_llong_t
2951 # define acc_uint32e_t acc_ullong_t
2952 #elif 1 && !defined(ACC_CFG_TYPE_NO_MODE_SI) && (ACC_CC_GNUC >= 0x025f00ul || ACC_CC_LLVM) && (__INT_MAX__+0 > 2147483647L)
2953 typedef int __acc_int32e_si_t __attribute__((__mode__(__SI__)));
2954 typedef unsigned int __acc_uint32e_si_t __attribute__((__mode__(__SI__)));
2955 # define acc_int32e_t __acc_int32e_si_t
2956 # define acc_uint32e_t __acc_uint32e_si_t
2957 #elif 1 && !defined(ACC_CFG_TYPE_NO_MODE_SI) && (ACC_CC_GNUC >= 0x025f00ul) && defined(__AVR__) && (__LONG_MAX__+0 == 32767L)
2958 typedef int __acc_int32e_si_t __attribute__((__mode__(__SI__)));
2959 typedef unsigned int __acc_uint32e_si_t __attribute__((__mode__(__SI__)));
2960 # define acc_int32e_t __acc_int32e_si_t
2961 # define acc_uint32e_t __acc_uint32e_si_t
2962 # define ACC_INT32_C(c) c##LL
2963 # define ACC_UINT32_C(c) c##ULL
2964 #elif (ACC_SIZEOF___INT32 == 4)
2965 # define acc_int32e_t __int32
2966 # define acc_uint32e_t unsigned __int32
2967 #else
2968 #endif
2969 #endif
2970 #if defined(acc_int32e_t)
2971 # define ACC_SIZEOF_ACC_INT32E_T 4
2972 #endif
2973 #if !defined(acc_int64e_t)
2974 #if (ACC_SIZEOF___INT64 == 8)
2975 # if (ACC_CC_BORLANDC) && !defined(ACC_CFG_TYPE_PREFER___INT64)
2976 # define ACC_CFG_TYPE_PREFER___INT64 1
2977 # endif
2978 #endif
2979 #if (ACC_SIZEOF_INT == 8) && (ACC_SIZEOF_INT < ACC_SIZEOF_LONG)
2980 # define acc_int64e_t int
2981 # define acc_uint64e_t unsigned int
2982 # define ACC_SIZEOF_ACC_INT64E_T ACC_SIZEOF_INT
2983 #elif (ACC_SIZEOF_LONG == 8)
2984 # define acc_int64e_t long int
2985 # define acc_uint64e_t unsigned long int
2986 # define ACC_SIZEOF_ACC_INT64E_T ACC_SIZEOF_LONG
2987 #elif (ACC_SIZEOF_LONG_LONG == 8) && !defined(ACC_CFG_TYPE_PREFER___INT64)
2988 # define acc_int64e_t acc_llong_t
2989 # define acc_uint64e_t acc_ullong_t
2990 # if (ACC_CC_BORLANDC)
2991 # define ACC_INT64_C(c) ((c) + 0ll)
2992 # define ACC_UINT64_C(c) ((c) + 0ull)
2993 # else
2994 # define ACC_INT64_C(c) c##LL
2995 # define ACC_UINT64_C(c) c##ULL
2996 # endif
2997 # define ACC_SIZEOF_ACC_INT64E_T ACC_SIZEOF_LONG_LONG
2998 #elif (ACC_SIZEOF___INT64 == 8)
2999 # define acc_int64e_t __int64
3000 # define acc_uint64e_t unsigned __int64
3001 # if (ACC_CC_BORLANDC)
3002 # define ACC_INT64_C(c) ((c) + 0i64)
3003 # define ACC_UINT64_C(c) ((c) + 0ui64)
3004 # else
3005 # define ACC_INT64_C(c) c##i64
3006 # define ACC_UINT64_C(c) c##ui64
3007 # endif
3008 # define ACC_SIZEOF_ACC_INT64E_T ACC_SIZEOF___INT64
3009 #else
3010 #endif
3011 #endif
3012 #if !defined(acc_int32l_t)
3013 #if defined(acc_int32e_t)
3014 # define acc_int32l_t acc_int32e_t
3015 # define acc_uint32l_t acc_uint32e_t
3016 # define ACC_SIZEOF_ACC_INT32L_T ACC_SIZEOF_ACC_INT32E_T
3017 #elif (ACC_SIZEOF_INT >= 4) && (ACC_SIZEOF_INT < ACC_SIZEOF_LONG)
3018 # define acc_int32l_t int
3019 # define acc_uint32l_t unsigned int
3020 # define ACC_SIZEOF_ACC_INT32L_T ACC_SIZEOF_INT
3021 #elif (ACC_SIZEOF_LONG >= 4)
3022 # define acc_int32l_t long int
3023 # define acc_uint32l_t unsigned long int
3024 # define ACC_SIZEOF_ACC_INT32L_T ACC_SIZEOF_LONG
3025 #else
3026 # error "acc_int32l_t"
3027 #endif
3028 #endif
3029 #if !defined(acc_int64l_t)
3030 #if defined(acc_int64e_t)
3031 # define acc_int64l_t acc_int64e_t
3032 # define acc_uint64l_t acc_uint64e_t
3033 # define ACC_SIZEOF_ACC_INT64L_T ACC_SIZEOF_ACC_INT64E_T
3034 #else
3035 #endif
3036 #endif
3037 #if !defined(acc_int32f_t)
3038 #if (ACC_SIZEOF_SIZE_T >= 8)
3039 # define acc_int32f_t acc_int64l_t
3040 # define acc_uint32f_t acc_uint64l_t
3041 # define ACC_SIZEOF_ACC_INT32F_T ACC_SIZEOF_ACC_INT64L_T
3042 #else
3043 # define acc_int32f_t acc_int32l_t
3044 # define acc_uint32f_t acc_uint32l_t
3045 # define ACC_SIZEOF_ACC_INT32F_T ACC_SIZEOF_ACC_INT32L_T
3046 #endif
3047 #endif
3048 #if !defined(acc_intptr_t)
3049 #if 1 && (ACC_OS_OS400 && (ACC_SIZEOF_VOID_P == 16))
3050 # define __ACC_INTPTR_T_IS_POINTER 1
3051 typedef char* acc_intptr_t;
3052 typedef char* acc_uintptr_t;
3053 # define acc_intptr_t acc_intptr_t
3054 # define acc_uintptr_t acc_uintptr_t
3055 # define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_VOID_P
3056 #elif (ACC_CC_MSC && (_MSC_VER >= 1300) && (ACC_SIZEOF_VOID_P == 4) && (ACC_SIZEOF_INT == 4))
3057 typedef __w64 int acc_intptr_t;
3058 typedef __w64 unsigned int acc_uintptr_t;
3059 # define acc_intptr_t acc_intptr_t
3060 # define acc_uintptr_t acc_uintptr_t
3061 # define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_INT
3062 #elif (ACC_SIZEOF_SHORT == ACC_SIZEOF_VOID_P) && (ACC_SIZEOF_INT > ACC_SIZEOF_VOID_P)
3063 # define acc_intptr_t short
3064 # define acc_uintptr_t unsigned short
3065 # define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_SHORT
3066 #elif (ACC_SIZEOF_INT >= ACC_SIZEOF_VOID_P) && (ACC_SIZEOF_INT < ACC_SIZEOF_LONG)
3067 # define acc_intptr_t int
3068 # define acc_uintptr_t unsigned int
3069 # define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_INT
3070 #elif (ACC_SIZEOF_LONG >= ACC_SIZEOF_VOID_P)
3071 # define acc_intptr_t long
3072 # define acc_uintptr_t unsigned long
3073 # define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_LONG
3074 #elif (ACC_SIZEOF_ACC_INT64L_T >= ACC_SIZEOF_VOID_P)
3075 # define acc_intptr_t acc_int64l_t
3076 # define acc_uintptr_t acc_uint64l_t
3077 # define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_ACC_INT64L_T
3078 #else
3079 # error "acc_intptr_t"
3080 #endif
3081 #endif
3082 #if !defined(acc_word_t)
3083 #if defined(ACC_WORDSIZE) && (ACC_WORDSIZE > 0)
3084 #if (ACC_WORDSIZE == ACC_SIZEOF_ACC_INTPTR_T) && !defined(__ACC_INTPTR_T_IS_POINTER)
3085 # define acc_word_t acc_uintptr_t
3086 # define acc_sword_t acc_intptr_t
3087 # define ACC_SIZEOF_ACC_WORD_T ACC_SIZEOF_ACC_INTPTR_T
3088 #elif (ACC_WORDSIZE == ACC_SIZEOF_LONG)
3089 # define acc_word_t unsigned long
3090 # define acc_sword_t long
3091 # define ACC_SIZEOF_ACC_WORD_T ACC_SIZEOF_LONG
3092 #elif (ACC_WORDSIZE == ACC_SIZEOF_INT)
3093 # define acc_word_t unsigned int
3094 # define acc_sword_t int
3095 # define ACC_SIZEOF_ACC_WORD_T ACC_SIZEOF_INT
3096 #elif (ACC_WORDSIZE == ACC_SIZEOF_SHORT)
3097 # define acc_word_t unsigned short
3098 # define acc_sword_t short
3099 # define ACC_SIZEOF_ACC_WORD_T ACC_SIZEOF_SHORT
3100 #elif (ACC_WORDSIZE == 1)
3101 # define acc_word_t unsigned char
3102 # define acc_sword_t signed char
3103 # define ACC_SIZEOF_ACC_WORD_T 1
3104 #elif (ACC_WORDSIZE == ACC_SIZEOF_ACC_INT64L_T)
3105 # define acc_word_t acc_uint64l_t
3106 # define acc_sword_t acc_int64l_t
3107 # define ACC_SIZEOF_ACC_WORD_T ACC_SIZEOF_ACC_INT64L_T
3108 #elif (ACC_ARCH_SPU) && (ACC_CC_GNUC)
3109 #if 0
3110 typedef unsigned acc_word_t __attribute__((__mode__(__V16QI__)));
3111 typedef int acc_sword_t __attribute__((__mode__(__V16QI__)));
3112 # define acc_word_t acc_word_t
3113 # define acc_sword_t acc_sword_t
3114 # define ACC_SIZEOF_ACC_WORD_T 16
3115 #endif
3116 #else
3117 # error "acc_word_t"
3118 #endif
3119 #endif
3120 #endif
3121 #if !defined(ACC_INT16_C)
3122 # if (ACC_BROKEN_INTEGRAL_CONSTANTS) && (ACC_SIZEOF_INT >= 2)
3123 # define ACC_INT16_C(c) ((c) + 0)
3124 # define ACC_UINT16_C(c) ((c) + 0U)
3125 # elif (ACC_BROKEN_INTEGRAL_CONSTANTS) && (ACC_SIZEOF_LONG >= 2)
3126 # define ACC_INT16_C(c) ((c) + 0L)
3127 # define ACC_UINT16_C(c) ((c) + 0UL)
3128 # elif (ACC_SIZEOF_INT >= 2)
3129 # define ACC_INT16_C(c) c
3130 # define ACC_UINT16_C(c) c##U
3131 # elif (ACC_SIZEOF_LONG >= 2)
3132 # define ACC_INT16_C(c) c##L
3133 # define ACC_UINT16_C(c) c##UL
3134 # else
3135 # error "ACC_INT16_C"
3136 # endif
3137 #endif
3138 #if !defined(ACC_INT32_C)
3139 # if (ACC_BROKEN_INTEGRAL_CONSTANTS) && (ACC_SIZEOF_INT >= 4)
3140 # define ACC_INT32_C(c) ((c) + 0)
3141 # define ACC_UINT32_C(c) ((c) + 0U)
3142 # elif (ACC_BROKEN_INTEGRAL_CONSTANTS) && (ACC_SIZEOF_LONG >= 4)
3143 # define ACC_INT32_C(c) ((c) + 0L)
3144 # define ACC_UINT32_C(c) ((c) + 0UL)
3145 # elif (ACC_SIZEOF_INT >= 4)
3146 # define ACC_INT32_C(c) c
3147 # define ACC_UINT32_C(c) c##U
3148 # elif (ACC_SIZEOF_LONG >= 4)
3149 # define ACC_INT32_C(c) c##L
3150 # define ACC_UINT32_C(c) c##UL
3151 # elif (ACC_SIZEOF_LONG_LONG >= 4)
3152 # define ACC_INT32_C(c) c##LL
3153 # define ACC_UINT32_C(c) c##ULL
3154 # else
3155 # error "ACC_INT32_C"
3156 # endif
3157 #endif
3158 #if !defined(ACC_INT64_C) && defined(acc_int64l_t)
3159 # if (ACC_BROKEN_INTEGRAL_CONSTANTS) && (ACC_SIZEOF_INT >= 8)
3160 # define ACC_INT64_C(c) ((c) + 0)
3161 # define ACC_UINT64_C(c) ((c) + 0U)
3162 # elif (ACC_BROKEN_INTEGRAL_CONSTANTS) && (ACC_SIZEOF_LONG >= 8)
3163 # define ACC_INT64_C(c) ((c) + 0L)
3164 # define ACC_UINT64_C(c) ((c) + 0UL)
3165 # elif (ACC_SIZEOF_INT >= 8)
3166 # define ACC_INT64_C(c) c
3167 # define ACC_UINT64_C(c) c##U
3168 # elif (ACC_SIZEOF_LONG >= 8)
3169 # define ACC_INT64_C(c) c##L
3170 # define ACC_UINT64_C(c) c##UL
3171 # else
3172 # error "ACC_INT64_C"
3173 # endif
3174 #endif
3175 #if !defined(SIZEOF_ACC_INT16E_T) && defined(ACC_SIZEOF_ACC_INT16E_T)
3176 # define SIZEOF_ACC_INT16E_T ACC_SIZEOF_ACC_INT16E_T
3177 #endif
3178 #if !defined(SIZEOF_ACC_INT32E_T) && defined(ACC_SIZEOF_ACC_INT32E_T)
3179 # define SIZEOF_ACC_INT32E_T ACC_SIZEOF_ACC_INT32E_T
3180 #endif
3181 #if !defined(SIZEOF_ACC_INT64E_T) && defined(ACC_SIZEOF_ACC_INT64E_T)
3182 # define SIZEOF_ACC_INT64E_T ACC_SIZEOF_ACC_INT64E_T
3183 #endif
3184 #if !defined(SIZEOF_ACC_INT32L_T) && defined(ACC_SIZEOF_ACC_INT32L_T)
3185 # define SIZEOF_ACC_INT32L_T ACC_SIZEOF_ACC_INT32L_T
3186 #endif
3187 #if !defined(SIZEOF_ACC_INT64L_T) && defined(ACC_SIZEOF_ACC_INT64L_T)
3188 # define SIZEOF_ACC_INT64L_T ACC_SIZEOF_ACC_INT64L_T
3189 #endif
3190 #if !defined(SIZEOF_ACC_INT32F_T) && defined(ACC_SIZEOF_ACC_INT32F_T)
3191 # define SIZEOF_ACC_INT32F_T ACC_SIZEOF_ACC_INT32F_T
3192 #endif
3193 #if !defined(SIZEOF_ACC_INTPTR_T) && defined(ACC_SIZEOF_ACC_INTPTR_T)
3194 # define SIZEOF_ACC_INTPTR_T ACC_SIZEOF_ACC_INTPTR_T
3195 #endif
3196 #if !defined(SIZEOF_ACC_WORD_T) && defined(ACC_SIZEOF_ACC_WORD_T)
3197 # define SIZEOF_ACC_WORD_T ACC_SIZEOF_ACC_WORD_T
3198 #endif
3199 #if 1 && !defined(acc_signo_t) && defined(__linux__) && defined(__dietlibc__) && (ACC_SIZEOF_INT != 4)
3200 # define acc_signo_t acc_int32e_t
3201 #endif
3202 #if !defined(acc_signo_t)
3203 # define acc_signo_t int
3204 #endif
3205 #if defined(__cplusplus)
3206 extern "C" {
3207 #endif
3208 #if (ACC_BROKEN_CDECL_ALT_SYNTAX)
3209 typedef void __acc_cdecl_sighandler (*acc_sighandler_t)(acc_signo_t);
3210 #elif defined(RETSIGTYPE)
3211 typedef RETSIGTYPE (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
3212 #else
3213 typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
3214 #endif
3215 #if defined(__cplusplus)
3217 #endif
3218 # if !defined(ACC_CFG_NO_ACC_UA_H)
3219 #if (ACC_CC_GNUC && (ACC_CC_GNUC < 0x020700ul))
3220 #elif (ACC_CC_GNUC && (ACC_CC_GNUC < 0x020800ul)) && defined(__cplusplus)
3221 #elif (ACC_CC_INTELC) && defined(_WIN32)
3222 #elif (ACC_CC_INTELC && (__INTEL_COMPILER < 700))
3223 #elif (ACC_CC_LLVM)
3224 #elif (ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE)
3225 #if !defined(__acc_ua16_t) && (ACC_OPT_UNALIGNED16) && defined(acc_int16e_t)
3226 typedef struct { __acc_ua_volatile acc_uint16e_t v __attribute__((__packed__)); } __acc_ua16_t;
3227 # define __acc_ua16_t __acc_ua16_t
3228 #endif
3229 #if !defined(__acc_ua32_t) && (ACC_OPT_UNALIGNED32) && defined(acc_int32e_t)
3230 typedef struct { __acc_ua_volatile acc_uint32e_t v __attribute__((__packed__)); } __acc_ua32_t;
3231 # define __acc_ua32_t __acc_ua32_t
3232 #endif
3233 #if !defined(__acc_ua64_t) && (ACC_OPT_UNALIGNED64) && defined(acc_int64l_t)
3234 typedef struct { __acc_ua_volatile acc_uint64l_t v __attribute__((__packed__)); } __acc_ua64_t;
3235 # define __acc_ua64_t __acc_ua64_t
3236 #endif
3237 #endif
3238 #if (ACC_OPT_UNALIGNED16) && defined(acc_int16e_t)
3239 #define ACC_UA_GET16(p) (* (__acc_ua_volatile const acc_uint16e_t*) (__acc_ua_volatile const void*) (p))
3240 #define ACC_UA_SET16(p,v) (* (__acc_ua_volatile acc_uint16e_t*) (__acc_ua_volatile void*) (p) = (acc_uint16e_t) (v))
3241 #if (ACC_ABI_BIG_ENDIAN)
3242 # define ACC_UA_GET_BE16(p) ACC_UA_GET16(p)
3243 # define ACC_UA_SET_BE16(p,v) ACC_UA_SET16(p,v)
3244 #elif (ACC_ABI_LITTLE_ENDIAN)
3245 # define ACC_UA_GET_LE16(p) ACC_UA_GET16(p)
3246 # define ACC_UA_SET_LE16(p,v) ACC_UA_SET16(p,v)
3247 #endif
3248 #if !defined(ACC_CFG_NO_INLINE_ASM) && defined(__acc_HAVE_forceinline)
3249 #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC)
3250 #if !defined(ACC_UA_GET_LE16)
3251 extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp);
3252 extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) {
3253 __acc_ua_volatile const acc_uint16e_t* p = (__acc_ua_volatile const acc_uint16e_t*) pp;
3254 unsigned long v;
3255 __asm__ __volatile__("lhbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p));
3256 return v;
3258 #define ACC_UA_GET_LE16(p) __ACC_UA_GET_LE16(p)
3259 #endif
3260 #if !defined(ACC_UA_SET_LE16)
3261 extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v);
3262 extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) {
3263 __acc_ua_volatile acc_uint16e_t* p = (__acc_ua_volatile acc_uint16e_t*) pp;
3264 __asm__ __volatile__("sthbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v));
3266 #define ACC_UA_SET_LE16(p,v) __ACC_UA_SET_LE16(p,v)
3267 #endif
3268 #endif
3269 #endif
3270 #if !defined(ACC_UA_COPY16)
3271 # define ACC_UA_COPY16(d,s) ACC_UA_SET16(d, ACC_UA_GET16(s))
3272 #endif
3273 #endif
3274 #if (ACC_OPT_UNALIGNED32) && defined(acc_int32e_t)
3275 #define ACC_UA_GET32(p) (* (__acc_ua_volatile const acc_uint32e_t*) (__acc_ua_volatile const void*) (p))
3276 #define ACC_UA_SET32(p,v) (* (__acc_ua_volatile acc_uint32e_t*) (__acc_ua_volatile void*) (p) = (acc_uint32e_t) (v))
3277 #if (ACC_ABI_BIG_ENDIAN)
3278 # define ACC_UA_GET_BE32(p) ACC_UA_GET32(p)
3279 # define ACC_UA_SET_BE32(p,v) ACC_UA_SET32(p,v)
3280 #elif (ACC_ABI_LITTLE_ENDIAN)
3281 # define ACC_UA_GET_LE32(p) ACC_UA_GET32(p)
3282 # define ACC_UA_SET_LE32(p,v) ACC_UA_SET32(p,v)
3283 #endif
3284 #if !defined(ACC_CFG_NO_INLINE_ASM) && defined(__acc_HAVE_forceinline)
3285 #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC)
3286 #if !defined(ACC_UA_GET_LE32)
3287 extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp);
3288 extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) {
3289 __acc_ua_volatile const acc_uint32e_t* p = (__acc_ua_volatile const acc_uint32e_t*) pp;
3290 unsigned long v;
3291 __asm__ __volatile__("lwbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p));
3292 return v;
3294 #define ACC_UA_GET_LE32(p) __ACC_UA_GET_LE32(p)
3295 #endif
3296 #if !defined(ACC_UA_SET_LE32)
3297 extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v);
3298 extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) {
3299 __acc_ua_volatile acc_uint32e_t* p = (__acc_ua_volatile acc_uint32e_t*) pp;
3300 __asm__ __volatile__("stwbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v));
3302 #define ACC_UA_SET_LE32(p,v) __ACC_UA_SET_LE32(p,v)
3303 #endif
3304 #endif
3305 #endif
3306 #if !defined(ACC_UA_COPY32)
3307 # define ACC_UA_COPY32(d,s) ACC_UA_SET32(d, ACC_UA_GET32(s))
3308 #endif
3309 #endif
3310 #if (ACC_OPT_UNALIGNED64) && defined(acc_int64l_t)
3311 #define ACC_UA_GET64(p) (* (__acc_ua_volatile const acc_uint64l_t*) (__acc_ua_volatile const void*) (p))
3312 #define ACC_UA_SET64(p,v) (* (__acc_ua_volatile acc_uint64l_t*) (__acc_ua_volatile void*) (p) = (acc_uint64l_t) (v))
3313 #if (ACC_ABI_BIG_ENDIAN)
3314 # define ACC_UA_GET_BE64(p) ACC_UA_GET64(p)
3315 # define ACC_UA_SET_BE64(p,v) ACC_UA_SET64(p,v)
3316 #elif (ACC_ABI_LITTLE_ENDIAN)
3317 # define ACC_UA_GET_LE64(p) ACC_UA_GET64(p)
3318 # define ACC_UA_SET_LE64(p,v) ACC_UA_SET64(p,v)
3319 #endif
3320 #if !defined(ACC_UA_COPY64)
3321 # define ACC_UA_COPY64(d,s) ACC_UA_SET64(d, ACC_UA_GET64(s))
3322 #endif
3323 #endif
3324 # endif
3325 #endif
3326 #if defined(ACC_WANT_ACC_INCD_H)
3327 # undef ACC_WANT_ACC_INCD_H
3328 #ifndef __ACC_INCD_H_INCLUDED
3329 #define __ACC_INCD_H_INCLUDED 1
3330 #if defined(ACC_LIBC_NAKED)
3331 #ifndef __ACC_FALLBACK_STDDEF_H_INCLUDED
3332 #define __ACC_FALLBACK_STDDEF_H_INCLUDED
3333 #if defined(__PTRDIFF_TYPE__)
3334 typedef __PTRDIFF_TYPE__ acc_fallback_ptrdiff_t;
3335 #elif defined(__MIPS_PSX2__)
3336 typedef int acc_fallback_ptrdiff_t;
3337 #else
3338 typedef long acc_fallback_ptrdiff_t;
3339 #endif
3340 #if defined(__SIZE_TYPE__)
3341 typedef __SIZE_TYPE__ acc_fallback_size_t;
3342 #elif defined(__MIPS_PSX2__)
3343 typedef unsigned int acc_fallback_size_t;
3344 #else
3345 typedef unsigned long acc_fallback_size_t;
3346 #endif
3347 #if !defined(ptrdiff_t)
3348 typedef acc_fallback_ptrdiff_t ptrdiff_t;
3349 #ifndef _PTRDIFF_T_DEFINED
3350 #define _PTRDIFF_T_DEFINED 1
3351 #endif
3352 #endif
3353 #if !defined(size_t)
3354 typedef acc_fallback_size_t size_t;
3355 #ifndef _SIZE_T_DEFINED
3356 #define _SIZE_T_DEFINED 1
3357 #endif
3358 #endif
3359 #if !defined(__cplusplus) && !defined(wchar_t)
3360 typedef unsigned short wchar_t;
3361 #ifndef _WCHAR_T_DEFINED
3362 #define _WCHAR_T_DEFINED 1
3363 #endif
3364 #endif
3365 #ifndef NULL
3366 #if defined(__cplusplus) && defined(__GNUC__) && (__GNUC__ >= 4)
3367 #define NULL __null
3368 #elif defined(__cplusplus)
3369 #define NULL 0
3370 #else
3371 #define NULL ((void*)0)
3372 #endif
3373 #endif
3374 #ifndef offsetof
3375 #define offsetof(s,m) ((size_t)((ptrdiff_t)&(((s*)0)->m)))
3376 #endif
3377 #endif
3378 #elif defined(ACC_LIBC_FREESTANDING)
3379 # if HAVE_STDDEF_H
3380 # include <stddef.h>
3381 # endif
3382 # if HAVE_STDINT_H
3383 # include <stdint.h>
3384 # endif
3385 #elif defined(ACC_LIBC_MOSTLY_FREESTANDING)
3386 # if HAVE_STDIO_H
3387 # include <stdio.h>
3388 # endif
3389 # if HAVE_STDDEF_H
3390 # include <stddef.h>
3391 # endif
3392 # if HAVE_STDINT_H
3393 # include <stdint.h>
3394 # endif
3395 #else
3396 #include <stdio.h>
3397 #if defined(HAVE_TIME_H) && defined(__MSL__) && defined(__cplusplus)
3398 # include <time.h>
3399 #endif
3400 #if HAVE_SYS_TYPES_H
3401 # include <sys/types.h>
3402 #endif
3403 #if HAVE_SYS_STAT_H
3404 # include <sys/stat.h>
3405 #endif
3406 #if STDC_HEADERS
3407 # include <stdlib.h>
3408 # include <stddef.h>
3409 #else
3410 # if HAVE_STDLIB_H
3411 # include <stdlib.h>
3412 # endif
3413 #endif
3414 #if HAVE_STRING_H
3415 # if !STDC_HEADERS && HAVE_MEMORY_H
3416 # include <memory.h>
3417 # endif
3418 # include <string.h>
3419 #endif
3420 #if HAVE_STRINGS_H
3421 # include <strings.h>
3422 #endif
3423 #if HAVE_INTTYPES_H
3424 # include <inttypes.h>
3425 #else
3426 # if HAVE_STDINT_H
3427 # include <stdint.h>
3428 # endif
3429 #endif
3430 #if HAVE_UNISTD_H
3431 # include <unistd.h>
3432 #endif
3433 #endif
3434 #endif
3435 #endif
3436 #if defined(ACC_WANT_ACC_INCE_H)
3437 # undef ACC_WANT_ACC_INCE_H
3438 #ifndef __ACC_INCE_H_INCLUDED
3439 #define __ACC_INCE_H_INCLUDED 1
3440 #if defined(ACC_LIBC_NAKED)
3441 #elif defined(ACC_LIBC_FREESTANDING)
3442 #elif defined(ACC_LIBC_MOSTLY_FREESTANDING)
3443 # if defined(HAVE_SETJMP_H)
3444 # include <setjmp.h>
3445 # endif
3446 #else
3447 #if defined(HAVE_STDARG_H)
3448 # include <stdarg.h>
3449 #endif
3450 #if defined(HAVE_CTYPE_H)
3451 # include <ctype.h>
3452 #endif
3453 #if defined(HAVE_ERRNO_H)
3454 # include <errno.h>
3455 #endif
3456 #if defined(HAVE_MALLOC_H)
3457 # include <malloc.h>
3458 #endif
3459 #if defined(HAVE_ALLOCA_H)
3460 # include <alloca.h>
3461 #endif
3462 #if defined(HAVE_FCNTL_H)
3463 # include <fcntl.h>
3464 #endif
3465 #if defined(HAVE_DIRENT_H)
3466 # include <dirent.h>
3467 #endif
3468 #if defined(HAVE_SETJMP_H)
3469 # include <setjmp.h>
3470 #endif
3471 #if defined(HAVE_SIGNAL_H)
3472 # include <signal.h>
3473 #endif
3474 #if defined(TIME_WITH_SYS_TIME)
3475 # include <sys/time.h>
3476 # include <time.h>
3477 #elif defined(HAVE_TIME_H)
3478 # include <time.h>
3479 #endif
3480 #if defined(HAVE_UTIME_H)
3481 # include <utime.h>
3482 #elif defined(HAVE_SYS_UTIME_H)
3483 # include <sys/utime.h>
3484 #endif
3485 #if defined(HAVE_IO_H)
3486 # include <io.h>
3487 #endif
3488 #if defined(HAVE_DOS_H)
3489 # include <dos.h>
3490 #endif
3491 #if defined(HAVE_DIRECT_H)
3492 # include <direct.h>
3493 #endif
3494 #if defined(HAVE_SHARE_H)
3495 # include <share.h>
3496 #endif
3497 #if defined(ACC_CC_NDPC)
3498 # include <os.h>
3499 #endif
3500 #if defined(__TOS__) && (defined(__PUREC__) || defined(__TURBOC__))
3501 # include <ext.h>
3502 #endif
3503 #endif
3504 #endif
3505 #endif
3506 #if defined(ACC_WANT_ACC_INCI_H)
3507 # undef ACC_WANT_ACC_INCI_H
3508 #ifndef __ACC_INCI_H_INCLUDED
3509 #define __ACC_INCI_H_INCLUDED 1
3510 #if defined(ACC_LIBC_NAKED)
3511 #elif defined(ACC_LIBC_FREESTANDING)
3512 #elif defined(ACC_LIBC_MOSTLY_FREESTANDING)
3513 #else
3514 #if (ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
3515 # include <tos.h>
3516 #elif (ACC_HAVE_WINDOWS_H)
3517 # if 1 && !defined(WIN32_LEAN_AND_MEAN)
3518 # define WIN32_LEAN_AND_MEAN 1
3519 # endif
3520 # if 1 && !defined(_WIN32_WINNT)
3521 # define _WIN32_WINNT 0x0400
3522 # endif
3523 # include <windows.h>
3524 # if (ACC_CC_BORLANDC || ACC_CC_TURBOC)
3525 # include <dir.h>
3526 # endif
3527 #elif (ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_WIN16)
3528 # if (ACC_CC_AZTECC)
3529 # include <model.h>
3530 # include <stat.h>
3531 # elif (ACC_CC_BORLANDC || ACC_CC_TURBOC)
3532 # include <alloc.h>
3533 # include <dir.h>
3534 # elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
3535 # include <sys/exceptn.h>
3536 # elif (ACC_CC_PACIFICC)
3537 # include <unixio.h>
3538 # include <stat.h>
3539 # include <sys.h>
3540 # elif (ACC_CC_WATCOMC)
3541 # include <i86.h>
3542 # endif
3543 #elif (ACC_OS_OS216)
3544 # if (ACC_CC_WATCOMC)
3545 # include <i86.h>
3546 # endif
3547 #endif
3548 #if defined(HAVE_SYS_MMAN_H)
3549 # include <sys/mman.h>
3550 #endif
3551 #if defined(HAVE_SYS_RESOURCE_H)
3552 # include <sys/resource.h>
3553 #endif
3554 #if (ACC_OS_DOS16 || ACC_OS_OS216 || ACC_OS_WIN16)
3555 # if defined(FP_OFF)
3556 # define ACC_PTR_FP_OFF(x) FP_OFF(x)
3557 # elif defined(_FP_OFF)
3558 # define ACC_PTR_FP_OFF(x) _FP_OFF(x)
3559 # else
3560 # define ACC_PTR_FP_OFF(x) (((const unsigned __far*)&(x))[0])
3561 # endif
3562 # if defined(FP_SEG)
3563 # define ACC_PTR_FP_SEG(x) FP_SEG(x)
3564 # elif defined(_FP_SEG)
3565 # define ACC_PTR_FP_SEG(x) _FP_SEG(x)
3566 # else
3567 # define ACC_PTR_FP_SEG(x) (((const unsigned __far*)&(x))[1])
3568 # endif
3569 # if defined(MK_FP)
3570 # define ACC_PTR_MK_FP(s,o) MK_FP(s,o)
3571 # elif defined(_MK_FP)
3572 # define ACC_PTR_MK_FP(s,o) _MK_FP(s,o)
3573 # else
3574 # define ACC_PTR_MK_FP(s,o) ((void __far*)(((unsigned long)(s)<<16)+(unsigned)(o)))
3575 # endif
3576 # if 0
3577 # undef ACC_PTR_FP_OFF
3578 # undef ACC_PTR_FP_SEG
3579 # undef ACC_PTR_MK_FP
3580 # define ACC_PTR_FP_OFF(x) (((const unsigned __far*)&(x))[0])
3581 # define ACC_PTR_FP_SEG(x) (((const unsigned __far*)&(x))[1])
3582 # define ACC_PTR_MK_FP(s,o) ((void __far*)(((unsigned long)(s)<<16)+(unsigned)(o)))
3583 # endif
3584 #endif
3585 #endif
3586 #endif
3587 #endif
3588 #if defined(ACC_WANT_ACC_LIB_H)
3589 # undef ACC_WANT_ACC_LIB_H
3590 #ifndef __ACC_LIB_H_INCLUDED
3591 #define __ACC_LIB_H_INCLUDED 1
3592 #if !defined(__ACCLIB_FUNCNAME)
3593 # define __ACCLIB_FUNCNAME(f) f
3594 #endif
3595 #if !defined(ACCLIB_EXTERN)
3596 # define ACCLIB_EXTERN(r,f) extern r __ACCLIB_FUNCNAME(f)
3597 #endif
3598 #if !defined(ACCLIB_EXTERN_NOINLINE)
3599 # if defined(__acc_noinline)
3600 # define ACCLIB_EXTERN_NOINLINE(r,f) extern __acc_noinline r __ACCLIB_FUNCNAME(f)
3601 # else
3602 # define ACCLIB_EXTERN_NOINLINE(r,f) extern r __ACCLIB_FUNCNAME(f)
3603 # endif
3604 #endif
3605 #if !defined(__ACCLIB_CONST_CAST_RETURN)
3606 #if 1 && (ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE)
3607 # define __ACCLIB_CONST_CAST_RETURN(type,var) return (type) (acc_uintptr_t) (var);
3608 #elif (ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE)
3609 # define __ACCLIB_CONST_CAST_RETURN(type,var) \
3610 { union { type a; const type b; } u; u.b = (var); return u.a; }
3611 #else
3612 # define __ACCLIB_CONST_CAST_RETURN(type,var) return (type) (var);
3613 #endif
3614 #endif
3615 #if (ACC_OS_WIN64)
3616 # define acclib_handle_t acc_int64l_t
3617 # define acclib_uhandle_t acc_uint64l_t
3618 #elif (ACC_ARCH_I386 && ACC_CC_MSC && (_MSC_VER >= 1300))
3619 typedef __w64 long acclib_handle_t;
3620 typedef __w64 unsigned long acclib_uhandle_t;
3621 # define acclib_handle_t acclib_handle_t
3622 # define acclib_uhandle_t acclib_uhandle_t
3623 #else
3624 # define acclib_handle_t long
3625 # define acclib_uhandle_t unsigned long
3626 #endif
3627 #if 0
3628 ACCLIB_EXTERN(int, acc_ascii_digit) (int);
3629 ACCLIB_EXTERN(int, acc_ascii_islower) (int);
3630 ACCLIB_EXTERN(int, acc_ascii_isupper) (int);
3631 ACCLIB_EXTERN(int, acc_ascii_tolower) (int);
3632 ACCLIB_EXTERN(int, acc_ascii_toupper) (int);
3633 ACCLIB_EXTERN(int, acc_ascii_utolower) (int);
3634 ACCLIB_EXTERN(int, acc_ascii_utoupper) (int);
3635 #endif
3636 #define acc_ascii_isdigit(c) (((unsigned)(c) - 48) < 10)
3637 #define acc_ascii_islower(c) (((unsigned)(c) - 97) < 26)
3638 #define acc_ascii_isupper(c) (((unsigned)(c) - 65) < 26)
3639 #define acc_ascii_tolower(c) ((int)(c) + (acc_ascii_isupper(c) << 5))
3640 #define acc_ascii_toupper(c) ((int)(c) - (acc_ascii_islower(c) << 5))
3641 #define acc_ascii_utolower(c) acc_ascii_tolower((unsigned char)(c))
3642 #define acc_ascii_utoupper(c) acc_ascii_toupper((unsigned char)(c))
3643 #ifndef acc_hsize_t
3644 #if (ACC_HAVE_MM_HUGE_PTR)
3645 # define acc_hsize_t unsigned long
3646 # define acc_hvoid_p void __huge *
3647 # define acc_hchar_p char __huge *
3648 # define acc_hchar_pp char __huge * __huge *
3649 # define acc_hbyte_p unsigned char __huge *
3650 #else
3651 # define acc_hsize_t size_t
3652 # define acc_hvoid_p void *
3653 # define acc_hchar_p char *
3654 # define acc_hchar_pp char **
3655 # define acc_hbyte_p unsigned char *
3656 #endif
3657 #endif
3658 ACCLIB_EXTERN(acc_hvoid_p, acc_halloc) (acc_hsize_t);
3659 ACCLIB_EXTERN(void, acc_hfree) (acc_hvoid_p);
3660 #if (ACC_OS_DOS16 || ACC_OS_OS216)
3661 ACCLIB_EXTERN(void __far*, acc_dos_alloc) (unsigned long);
3662 ACCLIB_EXTERN(int, acc_dos_free) (void __far*);
3663 #endif
3664 ACCLIB_EXTERN(int, acc_hmemcmp) (const acc_hvoid_p, const acc_hvoid_p, acc_hsize_t);
3665 ACCLIB_EXTERN(acc_hvoid_p, acc_hmemcpy) (acc_hvoid_p, const acc_hvoid_p, acc_hsize_t);
3666 ACCLIB_EXTERN(acc_hvoid_p, acc_hmemmove) (acc_hvoid_p, const acc_hvoid_p, acc_hsize_t);
3667 ACCLIB_EXTERN(acc_hvoid_p, acc_hmemset) (acc_hvoid_p, int, acc_hsize_t);
3668 ACCLIB_EXTERN(acc_hsize_t, acc_hstrlen) (const acc_hchar_p);
3669 ACCLIB_EXTERN(int, acc_hstrcmp) (const acc_hchar_p, const acc_hchar_p);
3670 ACCLIB_EXTERN(int, acc_hstrncmp)(const acc_hchar_p, const acc_hchar_p, acc_hsize_t);
3671 ACCLIB_EXTERN(int, acc_ascii_hstricmp) (const acc_hchar_p, const acc_hchar_p);
3672 ACCLIB_EXTERN(int, acc_ascii_hstrnicmp)(const acc_hchar_p, const acc_hchar_p, acc_hsize_t);
3673 ACCLIB_EXTERN(int, acc_ascii_hmemicmp) (const acc_hvoid_p, const acc_hvoid_p, acc_hsize_t);
3674 ACCLIB_EXTERN(acc_hchar_p, acc_hstrstr) (const acc_hchar_p, const acc_hchar_p);
3675 ACCLIB_EXTERN(acc_hchar_p, acc_ascii_hstristr) (const acc_hchar_p, const acc_hchar_p);
3676 ACCLIB_EXTERN(acc_hvoid_p, acc_hmemmem) (const acc_hvoid_p, acc_hsize_t, const acc_hvoid_p, acc_hsize_t);
3677 ACCLIB_EXTERN(acc_hvoid_p, acc_ascii_hmemimem) (const acc_hvoid_p, acc_hsize_t, const acc_hvoid_p, acc_hsize_t);
3678 ACCLIB_EXTERN(acc_hchar_p, acc_hstrcpy) (acc_hchar_p, const acc_hchar_p);
3679 ACCLIB_EXTERN(acc_hchar_p, acc_hstrcat) (acc_hchar_p, const acc_hchar_p);
3680 ACCLIB_EXTERN(acc_hsize_t, acc_hstrlcpy) (acc_hchar_p, const acc_hchar_p, acc_hsize_t);
3681 ACCLIB_EXTERN(acc_hsize_t, acc_hstrlcat) (acc_hchar_p, const acc_hchar_p, acc_hsize_t);
3682 ACCLIB_EXTERN(int, acc_hstrscpy) (acc_hchar_p, const acc_hchar_p, acc_hsize_t);
3683 ACCLIB_EXTERN(int, acc_hstrscat) (acc_hchar_p, const acc_hchar_p, acc_hsize_t);
3684 ACCLIB_EXTERN(acc_hchar_p, acc_hstrccpy) (acc_hchar_p, const acc_hchar_p, int);
3685 ACCLIB_EXTERN(acc_hvoid_p, acc_hmemccpy) (acc_hvoid_p, const acc_hvoid_p, int, acc_hsize_t);
3686 ACCLIB_EXTERN(acc_hchar_p, acc_hstrchr) (const acc_hchar_p, int);
3687 ACCLIB_EXTERN(acc_hchar_p, acc_hstrrchr) (const acc_hchar_p, int);
3688 ACCLIB_EXTERN(acc_hchar_p, acc_ascii_hstrichr) (const acc_hchar_p, int);
3689 ACCLIB_EXTERN(acc_hchar_p, acc_ascii_hstrrichr) (const acc_hchar_p, int);
3690 ACCLIB_EXTERN(acc_hvoid_p, acc_hmemchr) (const acc_hvoid_p, int, acc_hsize_t);
3691 ACCLIB_EXTERN(acc_hvoid_p, acc_hmemrchr) (const acc_hvoid_p, int, acc_hsize_t);
3692 ACCLIB_EXTERN(acc_hvoid_p, acc_ascii_hmemichr) (const acc_hvoid_p, int, acc_hsize_t);
3693 ACCLIB_EXTERN(acc_hvoid_p, acc_ascii_hmemrichr) (const acc_hvoid_p, int, acc_hsize_t);
3694 ACCLIB_EXTERN(acc_hsize_t, acc_hstrspn) (const acc_hchar_p, const acc_hchar_p);
3695 ACCLIB_EXTERN(acc_hsize_t, acc_hstrrspn) (const acc_hchar_p, const acc_hchar_p);
3696 ACCLIB_EXTERN(acc_hsize_t, acc_hstrcspn) (const acc_hchar_p, const acc_hchar_p);
3697 ACCLIB_EXTERN(acc_hsize_t, acc_hstrrcspn) (const acc_hchar_p, const acc_hchar_p);
3698 ACCLIB_EXTERN(acc_hchar_p, acc_hstrpbrk) (const acc_hchar_p, const acc_hchar_p);
3699 ACCLIB_EXTERN(acc_hchar_p, acc_hstrrpbrk) (const acc_hchar_p, const acc_hchar_p);
3700 ACCLIB_EXTERN(acc_hchar_p, acc_hstrsep) (acc_hchar_pp, const acc_hchar_p);
3701 ACCLIB_EXTERN(acc_hchar_p, acc_hstrrsep) (acc_hchar_pp, const acc_hchar_p);
3702 ACCLIB_EXTERN(acc_hchar_p, acc_ascii_hstrlwr) (acc_hchar_p);
3703 ACCLIB_EXTERN(acc_hchar_p, acc_ascii_hstrupr) (acc_hchar_p);
3704 ACCLIB_EXTERN(acc_hvoid_p, acc_ascii_hmemlwr) (acc_hvoid_p, acc_hsize_t);
3705 ACCLIB_EXTERN(acc_hvoid_p, acc_ascii_hmemupr) (acc_hvoid_p, acc_hsize_t);
3706 ACCLIB_EXTERN(acc_hsize_t, acc_hfread) (void *, acc_hvoid_p, acc_hsize_t);
3707 ACCLIB_EXTERN(acc_hsize_t, acc_hfwrite) (void *, const acc_hvoid_p, acc_hsize_t);
3708 #if (ACC_HAVE_MM_HUGE_PTR)
3709 ACCLIB_EXTERN(long, acc_hread) (int, acc_hvoid_p, long);
3710 ACCLIB_EXTERN(long, acc_hwrite) (int, const acc_hvoid_p, long);
3711 #endif
3712 ACCLIB_EXTERN(long, acc_safe_hread) (int, acc_hvoid_p, long);
3713 ACCLIB_EXTERN(long, acc_safe_hwrite) (int, const acc_hvoid_p, long);
3714 ACCLIB_EXTERN(unsigned, acc_ua_get_be16) (const acc_hvoid_p);
3715 ACCLIB_EXTERN(acc_uint32l_t, acc_ua_get_be24) (const acc_hvoid_p);
3716 ACCLIB_EXTERN(acc_uint32l_t, acc_ua_get_be32) (const acc_hvoid_p);
3717 ACCLIB_EXTERN(void, acc_ua_set_be16) (acc_hvoid_p, unsigned);
3718 ACCLIB_EXTERN(void, acc_ua_set_be24) (acc_hvoid_p, acc_uint32l_t);
3719 ACCLIB_EXTERN(void, acc_ua_set_be32) (acc_hvoid_p, acc_uint32l_t);
3720 ACCLIB_EXTERN(unsigned, acc_ua_get_le16) (const acc_hvoid_p);
3721 ACCLIB_EXTERN(acc_uint32l_t, acc_ua_get_le24) (const acc_hvoid_p);
3722 ACCLIB_EXTERN(acc_uint32l_t, acc_ua_get_le32) (const acc_hvoid_p);
3723 ACCLIB_EXTERN(void, acc_ua_set_le16) (acc_hvoid_p, unsigned);
3724 ACCLIB_EXTERN(void, acc_ua_set_le24) (acc_hvoid_p, acc_uint32l_t);
3725 ACCLIB_EXTERN(void, acc_ua_set_le32) (acc_hvoid_p, acc_uint32l_t);
3726 #if defined(acc_int64l_t)
3727 ACCLIB_EXTERN(acc_uint64l_t, acc_ua_get_be64) (const acc_hvoid_p);
3728 ACCLIB_EXTERN(void, acc_ua_set_be64) (acc_hvoid_p, acc_uint64l_t);
3729 ACCLIB_EXTERN(acc_uint64l_t, acc_ua_get_le64) (const acc_hvoid_p);
3730 ACCLIB_EXTERN(void, acc_ua_set_le64) (acc_hvoid_p, acc_uint64l_t);
3731 #endif
3732 ACCLIB_EXTERN_NOINLINE(short, acc_vget_short) (short, int);
3733 ACCLIB_EXTERN_NOINLINE(int, acc_vget_int) (int, int);
3734 ACCLIB_EXTERN_NOINLINE(long, acc_vget_long) (long, int);
3735 #if defined(acc_int64l_t)
3736 ACCLIB_EXTERN_NOINLINE(acc_int64l_t, acc_vget_acc_int64l_t) (acc_int64l_t, int);
3737 #endif
3738 ACCLIB_EXTERN_NOINLINE(acc_hsize_t, acc_vget_acc_hsize_t) (acc_hsize_t, int);
3739 #if !defined(ACC_CFG_NO_FLOAT)
3740 ACCLIB_EXTERN_NOINLINE(float, acc_vget_float) (float, int);
3741 #endif
3742 #if !defined(ACC_CFG_NO_DOUBLE)
3743 ACCLIB_EXTERN_NOINLINE(double, acc_vget_double) (double, int);
3744 #endif
3745 ACCLIB_EXTERN_NOINLINE(acc_hvoid_p, acc_vget_acc_hvoid_p) (acc_hvoid_p, int);
3746 ACCLIB_EXTERN_NOINLINE(const acc_hvoid_p, acc_vget_acc_hvoid_cp) (const acc_hvoid_p, int);
3747 #if !defined(ACC_FN_PATH_MAX)
3748 #if (ACC_OS_DOS16 || ACC_OS_WIN16)
3749 # define ACC_FN_PATH_MAX 143
3750 #elif (ACC_OS_DOS32 || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_WIN32 || ACC_OS_WIN64)
3751 # define ACC_FN_PATH_MAX 259
3752 #elif (ACC_OS_TOS)
3753 # define ACC_FN_PATH_MAX 259
3754 #endif
3755 #endif
3756 #if !defined(ACC_FN_PATH_MAX)
3757 # define ACC_FN_PATH_MAX 1023
3758 #endif
3759 #if !defined(ACC_FN_NAME_MAX)
3760 #if (ACC_OS_DOS16 || ACC_OS_WIN16)
3761 # define ACC_FN_NAME_MAX 12
3762 #elif (ACC_ARCH_M68K && ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
3763 # define ACC_FN_NAME_MAX 12
3764 #elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
3765 #elif (ACC_OS_DOS32)
3766 # define ACC_FN_NAME_MAX 12
3767 #endif
3768 #endif
3769 #if !defined(ACC_FN_NAME_MAX)
3770 # define ACC_FN_NAME_MAX ACC_FN_PATH_MAX
3771 #endif
3772 #define ACC_FNMATCH_NOESCAPE 1
3773 #define ACC_FNMATCH_PATHNAME 2
3774 #define ACC_FNMATCH_PATHSTAR 4
3775 #define ACC_FNMATCH_PERIOD 8
3776 #define ACC_FNMATCH_ASCII_CASEFOLD 16
3777 ACCLIB_EXTERN(int, acc_fnmatch) (const acc_hchar_p, const acc_hchar_p, int);
3778 #undef __ACCLIB_USE_OPENDIR
3779 #if (HAVE_DIRENT_H || ACC_CC_WATCOMC)
3780 # define __ACCLIB_USE_OPENDIR 1
3781 # if (ACC_OS_DOS32 && defined(__BORLANDC__))
3782 # elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
3783 # elif (ACC_OS_OS2 || ACC_OS_OS216)
3784 # elif (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC)
3785 # elif (ACC_OS_WIN32 && !defined(ACC_HAVE_WINDOWS_H))
3786 # elif (ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_TOS || ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64)
3787 # undef __ACCLIB_USE_OPENDIR
3788 # endif
3789 #endif
3790 typedef struct
3792 #if defined(__ACCLIB_USE_OPENDIR)
3793 void* u_dirp;
3794 # if (ACC_CC_WATCOMC)
3795 unsigned short f_time;
3796 unsigned short f_date;
3797 unsigned long f_size;
3798 # endif
3799 char f_name[ACC_FN_NAME_MAX+1];
3800 #elif (ACC_OS_WIN32 || ACC_OS_WIN64)
3801 acclib_handle_t u_handle;
3802 unsigned f_attr;
3803 unsigned f_size_low;
3804 unsigned f_size_high;
3805 char f_name[ACC_FN_NAME_MAX+1];
3806 #elif (ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_TOS || ACC_OS_WIN16)
3807 char u_dta[21];
3808 unsigned char f_attr;
3809 unsigned short f_time;
3810 unsigned short f_date;
3811 unsigned short f_size_low;
3812 unsigned short f_size_high;
3813 char f_name[ACC_FN_NAME_MAX+1];
3814 char u_dirp;
3815 #else
3816 void* u_dirp;
3817 char f_name[ACC_FN_NAME_MAX+1];
3818 #endif
3819 } acc_dir_t;
3820 #ifndef acc_dir_p
3821 #define acc_dir_p acc_dir_t *
3822 #endif
3823 ACCLIB_EXTERN(int, acc_opendir) (acc_dir_p, const char*);
3824 ACCLIB_EXTERN(int, acc_readdir) (acc_dir_p);
3825 ACCLIB_EXTERN(int, acc_closedir) (acc_dir_p);
3826 #if (ACC_CC_GNUC) && (defined(__CYGWIN__) || defined(__MINGW32__))
3827 # define acc_alloca(x) __builtin_alloca((x))
3828 #elif (ACC_CC_GNUC) && (ACC_OS_CONSOLE_PS2)
3829 # define acc_alloca(x) __builtin_alloca((x))
3830 #elif (ACC_CC_BORLANDC || ACC_CC_LCC) && defined(__linux__)
3831 #elif (HAVE_ALLOCA)
3832 # define acc_alloca(x) ((void *) (alloca((x))))
3833 #endif
3834 #if (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
3835 # define acc_stackavail() stackavail()
3836 #elif (ACC_ARCH_I086 && ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0410))
3837 # define acc_stackavail() stackavail()
3838 #elif (ACC_ARCH_I086 && ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0400))
3839 # if (ACC_OS_WIN16) && (ACC_MM_TINY || ACC_MM_SMALL || ACC_MM_MEDIUM)
3840 # else
3841 # define acc_stackavail() stackavail()
3842 # endif
3843 #elif ((ACC_ARCH_I086 || ACC_ARCH_I386) && (ACC_CC_DMC || ACC_CC_SYMANTECC))
3844 # define acc_stackavail() stackavail()
3845 #elif ((ACC_ARCH_I086) && ACC_CC_MSC && (_MSC_VER >= 700))
3846 # define acc_stackavail() _stackavail()
3847 #elif ((ACC_ARCH_I086) && ACC_CC_MSC)
3848 # define acc_stackavail() stackavail()
3849 #elif ((ACC_ARCH_I086 || ACC_ARCH_I386) && ACC_CC_TURBOC && (__TURBOC__ >= 0x0450))
3850 # define acc_stackavail() stackavail()
3851 #elif (ACC_ARCH_I086 && ACC_CC_TURBOC && (__TURBOC__ >= 0x0400))
3852 ACC_EXTERN_C size_t __cdecl stackavail(void);
3853 # define acc_stackavail() stackavail()
3854 #elif ((ACC_ARCH_I086 || ACC_ARCH_I386) && (ACC_CC_WATCOMC))
3855 # define acc_stackavail() stackavail()
3856 #elif (ACC_ARCH_I086 && ACC_CC_ZORTECHC)
3857 # define acc_stackavail() _chkstack()
3858 #endif
3859 ACCLIB_EXTERN(acclib_handle_t, acc_get_osfhandle) (int);
3860 ACCLIB_EXTERN(const char *, acc_getenv) (const char *);
3861 ACCLIB_EXTERN(int, acc_isatty) (int);
3862 ACCLIB_EXTERN(int, acc_mkdir) (const char*, unsigned);
3863 ACCLIB_EXTERN(int, acc_rmdir) (const char*);
3864 ACCLIB_EXTERN(int, acc_response) (int*, char***);
3865 ACCLIB_EXTERN(int, acc_set_binmode) (int, int);
3866 #if defined(acc_int32e_t)
3867 ACCLIB_EXTERN(acc_int32e_t, acc_muldiv32s) (acc_int32e_t, acc_int32e_t, acc_int32e_t);
3868 ACCLIB_EXTERN(acc_uint32e_t, acc_muldiv32u) (acc_uint32e_t, acc_uint32e_t, acc_uint32e_t);
3869 #endif
3870 ACCLIB_EXTERN(void, acc_wildargv) (int*, char***);
3871 ACCLIB_EXTERN_NOINLINE(void, acc_debug_break) (void);
3872 ACCLIB_EXTERN_NOINLINE(void, acc_debug_nop) (void);
3873 ACCLIB_EXTERN_NOINLINE(int, acc_debug_align_check_query) (void);
3874 ACCLIB_EXTERN_NOINLINE(int, acc_debug_align_check_enable) (int);
3875 ACCLIB_EXTERN_NOINLINE(unsigned, acc_debug_running_on_qemu) (void);
3876 ACCLIB_EXTERN_NOINLINE(unsigned, acc_debug_running_on_valgrind) (void);
3877 #if !defined(acc_int64l_t) || defined(ACC_CFG_NO_DOUBLE)
3878 # undef __ACCLIB_PCLOCK_USE_RDTSC
3879 # undef __ACCLIB_PCLOCK_USE_PERFCTR
3880 # undef __ACCLIB_UCLOCK_USE_RDTSC
3881 # undef __ACCLIB_UCLOCK_USE_PERFCTR
3882 #else
3883 typedef struct {
3884 void* h;
3885 int mode;
3886 double tsc_to_seconds;
3887 unsigned cpu_type, cpu_features, cpu_khz, cpu_nrctrs;
3888 const char* cpu_name;
3889 } acc_perfctr_handle_t;
3890 typedef struct {
3891 acc_uint64l_t tsc;
3892 #if (ACC_OS_POSIX_LINUX)
3893 acc_uint64l_t pmc[18];
3894 #else
3895 acc_uint64l_t pmc[1];
3896 #endif
3897 } acc_perfctr_clock_t;
3898 #ifndef acc_perfctr_handle_p
3899 #define acc_perfctr_handle_p acc_perfctr_handle_t *
3900 #endif
3901 #ifndef acc_perfctr_clock_p
3902 #define acc_perfctr_clock_p acc_perfctr_clock_t *
3903 #endif
3904 ACCLIB_EXTERN(int, acc_perfctr_open) (acc_perfctr_handle_p);
3905 ACCLIB_EXTERN(int, acc_perfctr_close) (acc_perfctr_handle_p);
3906 ACCLIB_EXTERN(void, acc_perfctr_read) (acc_perfctr_handle_p, acc_perfctr_clock_p);
3907 #if !defined(ACC_CFG_NO_DOUBLE)
3908 ACCLIB_EXTERN(double, acc_perfctr_get_elapsed) (acc_perfctr_handle_p, const acc_perfctr_clock_p, const acc_perfctr_clock_p);
3909 ACCLIB_EXTERN(double, acc_perfctr_get_elapsed_tsc) (acc_perfctr_handle_p, acc_uint64l_t);
3910 #endif
3911 ACCLIB_EXTERN(int, acc_perfctr_flush_cpu_cache) (acc_perfctr_handle_p, unsigned);
3912 #endif
3913 #if defined(acc_int32e_t)
3914 ACCLIB_EXTERN(int, acc_tsc_read) (acc_uint32e_t*);
3915 #else
3916 # undef __ACCLIB_PCLOCK_USE_RDTSC
3917 # undef __ACCLIB_UCLOCK_USE_RDTSC
3918 #endif
3919 struct acc_pclock_handle_t;
3920 struct acc_pclock_t;
3921 typedef struct acc_pclock_handle_t acc_pclock_handle_t;
3922 typedef struct acc_pclock_t acc_pclock_t;
3923 #ifndef acc_pclock_handle_p
3924 #define acc_pclock_handle_p acc_pclock_handle_t *
3925 #endif
3926 #ifndef acc_pclock_p
3927 #define acc_pclock_p acc_pclock_t *
3928 #endif
3929 #define ACC_PCLOCK_REALTIME 0
3930 #define ACC_PCLOCK_MONOTONIC 1
3931 #define ACC_PCLOCK_PROCESS_CPUTIME_ID 2
3932 #define ACC_PCLOCK_THREAD_CPUTIME_ID 3
3933 #define ACC_PCLOCK_REALTIME_HR 4
3934 #define ACC_PCLOCK_MONOTONIC_HR 5
3935 struct acc_pclock_handle_t {
3936 acclib_handle_t h;
3937 int mode;
3938 const char* name;
3939 int (*gettime) (acc_pclock_handle_p, acc_pclock_p);
3940 #if defined(acc_int64l_t)
3941 acc_uint64l_t ticks_base;
3942 #endif
3943 #if defined(__ACCLIB_PCLOCK_USE_PERFCTR)
3944 acc_perfctr_handle_t pch;
3945 #endif
3947 struct acc_pclock_t {
3948 #if defined(acc_int64l_t)
3949 acc_int64l_t tv_sec;
3950 #else
3951 acc_int32l_t tv_sec_high;
3952 acc_uint32l_t tv_sec_low;
3953 #endif
3954 acc_uint32l_t tv_nsec;
3956 ACCLIB_EXTERN(int, acc_pclock_open) (acc_pclock_handle_p, int);
3957 ACCLIB_EXTERN(int, acc_pclock_open_default) (acc_pclock_handle_p);
3958 ACCLIB_EXTERN(int, acc_pclock_close) (acc_pclock_handle_p);
3959 ACCLIB_EXTERN(void, acc_pclock_read) (acc_pclock_handle_p, acc_pclock_p);
3960 #if !defined(ACC_CFG_NO_DOUBLE)
3961 ACCLIB_EXTERN(double, acc_pclock_get_elapsed) (acc_pclock_handle_p, const acc_pclock_p, const acc_pclock_p);
3962 #endif
3963 ACCLIB_EXTERN(int, acc_pclock_flush_cpu_cache) (acc_pclock_handle_p, unsigned);
3964 #if !defined(acc_int64l_t) || defined(ACC_CFG_NO_DOUBLE)
3965 # undef __ACCLIB_UCLOCK_USE_QPC
3966 #elif (ACC_OS_CYGWIN || ACC_OS_EMX || ACC_OS_WIN32 || ACC_OS_WIN64) && (ACC_HAVE_WINDOWS_H)
3967 # define __ACCLIB_UCLOCK_USE_QPC 1
3968 #else
3969 # undef __ACCLIB_UCLOCK_USE_QPC
3970 #endif
3971 typedef struct {
3972 acclib_handle_t h;
3973 int mode;
3974 const char* name;
3975 #if defined(__ACCLIB_UCLOCK_USE_PERFCTR)
3976 acc_perfctr_handle_t pch;
3977 #endif
3978 #if defined(__ACCLIB_UCLOCK_USE_QPC)
3979 double qpf;
3980 #endif
3981 } acc_uclock_handle_t;
3982 typedef struct {
3983 union {
3984 acc_uint32l_t t32;
3985 #if !(ACC_OS_DOS16 || ACC_OS_WIN16)
3986 # if !defined(ACC_CFG_NO_DOUBLE)
3987 double td;
3988 # endif
3989 # if defined(acc_int64l_t)
3990 acc_int64l_t t64;
3991 # endif
3992 #endif
3993 } ticks;
3994 #if defined(__ACCLIB_UCLOCK_USE_RDTSC)
3995 acc_uint64l_t tsc;
3996 #endif
3997 #if defined(__ACCLIB_UCLOCK_USE_PERFCTR)
3998 acc_perfctr_clock_t pcc;
3999 #endif
4000 #if defined(__ACCLIB_UCLOCK_USE_QPC)
4001 acc_int64l_t qpc;
4002 #endif
4003 } acc_uclock_t;
4004 #ifndef acc_uclock_handle_p
4005 #define acc_uclock_handle_p acc_uclock_handle_t *
4006 #endif
4007 #ifndef acc_uclock_p
4008 #define acc_uclock_p acc_uclock_t *
4009 #endif
4010 ACCLIB_EXTERN(int, acc_uclock_open) (acc_uclock_handle_p);
4011 ACCLIB_EXTERN(int, acc_uclock_close) (acc_uclock_handle_p);
4012 ACCLIB_EXTERN(void, acc_uclock_read) (acc_uclock_handle_p, acc_uclock_p);
4013 #if !defined(ACC_CFG_NO_DOUBLE)
4014 ACCLIB_EXTERN(double, acc_uclock_get_elapsed) (acc_uclock_handle_p, const acc_uclock_p, const acc_uclock_p);
4015 #endif
4016 ACCLIB_EXTERN(int, acc_uclock_flush_cpu_cache) (acc_uclock_handle_p, unsigned);
4017 struct acc_getopt_t;
4018 typedef struct acc_getopt_t acc_getopt_t;
4019 #ifndef acc_getopt_p
4020 #define acc_getopt_p acc_getopt_t *
4021 #endif
4022 struct acc_getopt_longopt_t;
4023 typedef struct acc_getopt_longopt_t acc_getopt_longopt_t;
4024 #ifndef acc_getopt_longopt_p
4025 #define acc_getopt_longopt_p acc_getopt_longopt_t *
4026 #endif
4027 struct acc_getopt_longopt_t {
4028 const char* name;
4029 int has_arg;
4030 int* flag;
4031 int val;
4033 struct acc_getopt_t {
4034 void *user;
4035 char *optarg;
4036 void (*opterr)(acc_getopt_p, const char*, void *);
4037 int optind;
4038 int optopt;
4039 int errcount;
4040 const char* progname;
4041 int argc; char** argv;
4042 int eof; int shortpos;
4043 int pending_rotate_first, pending_rotate_middle;
4045 enum { ACC_GETOPT_NO_ARG, ACC_GETOPT_REQUIRED_ARG, ACC_GETOPT_OPTIONAL_ARG, ACC_GETOPT_EXACT_ARG = 0x10 };
4046 enum { ACC_GETOPT_PERMUTE, ACC_GETOPT_RETURN_IN_ORDER, ACC_GETOPT_REQUIRE_ORDER };
4047 ACCLIB_EXTERN(void, acc_getopt_init) (acc_getopt_p g,
4048 int start_argc, int argc, char** argv);
4049 ACCLIB_EXTERN(int, acc_getopt) (acc_getopt_p g,
4050 const char* shortopts,
4051 const acc_getopt_longopt_p longopts,
4052 int* longind);
4053 typedef struct {
4054 acc_uint32l_t seed;
4055 } acc_rand31_t;
4056 #ifndef acc_rand31_p
4057 #define acc_rand31_p acc_rand31_t *
4058 #endif
4059 ACCLIB_EXTERN(void, acc_srand31) (acc_rand31_p, acc_uint32l_t);
4060 ACCLIB_EXTERN(acc_uint32l_t, acc_rand31) (acc_rand31_p);
4061 #if defined(acc_int64l_t)
4062 typedef struct {
4063 acc_uint64l_t seed;
4064 } acc_rand48_t;
4065 #ifndef acc_rand48_p
4066 #define acc_rand48_p acc_rand48_t *
4067 #endif
4068 ACCLIB_EXTERN(void, acc_srand48) (acc_rand48_p, acc_uint32l_t);
4069 ACCLIB_EXTERN(acc_uint32l_t, acc_rand48) (acc_rand48_p);
4070 ACCLIB_EXTERN(acc_uint32l_t, acc_rand48_r32) (acc_rand48_p);
4071 #endif
4072 #if defined(acc_int64l_t)
4073 typedef struct {
4074 acc_uint64l_t seed;
4075 } acc_rand64_t;
4076 #ifndef acc_rand64_p
4077 #define acc_rand64_p acc_rand64_t *
4078 #endif
4079 ACCLIB_EXTERN(void, acc_srand64) (acc_rand64_p, acc_uint64l_t);
4080 ACCLIB_EXTERN(acc_uint32l_t, acc_rand64) (acc_rand64_p);
4081 ACCLIB_EXTERN(acc_uint32l_t, acc_rand64_r32) (acc_rand64_p);
4082 #endif
4083 typedef struct {
4084 unsigned n;
4085 acc_uint32l_t s[624];
4086 } acc_randmt_t;
4087 #ifndef acc_randmt_p
4088 #define acc_randmt_p acc_randmt_t *
4089 #endif
4090 ACCLIB_EXTERN(void, acc_srandmt) (acc_randmt_p, acc_uint32l_t);
4091 ACCLIB_EXTERN(acc_uint32l_t, acc_randmt) (acc_randmt_p);
4092 ACCLIB_EXTERN(acc_uint32l_t, acc_randmt_r32) (acc_randmt_p);
4093 #if defined(acc_int64l_t)
4094 typedef struct {
4095 unsigned n;
4096 acc_uint64l_t s[312];
4097 } acc_randmt64_t;
4098 #ifndef acc_randmt64_p
4099 #define acc_randmt64_p acc_randmt64_t *
4100 #endif
4101 ACCLIB_EXTERN(void, acc_srandmt64) (acc_randmt64_p, acc_uint64l_t);
4102 ACCLIB_EXTERN(acc_uint64l_t, acc_randmt64_r64) (acc_randmt64_p);
4103 #endif
4104 #define ACC_SPAWN_P_WAIT 0
4105 #define ACC_SPAWN_P_NOWAIT 1
4106 ACCLIB_EXTERN(int, acc_spawnv) (int mode, const char* fn, const char* const * argv);
4107 ACCLIB_EXTERN(int, acc_spawnvp) (int mode, const char* fn, const char* const * argv);
4108 ACCLIB_EXTERN(int, acc_spawnve) (int mode, const char* fn, const char* const * argv, const char * const envp);
4109 #endif
4110 #endif
4111 #if defined(ACC_WANT_ACC_CXX_H)
4112 # undef ACC_WANT_ACC_CXX_H
4113 #ifndef __ACC_CXX_H_INCLUDED
4114 #define __ACC_CXX_H_INCLUDED 1
4115 #if defined(__cplusplus)
4116 #if defined(ACC_CXX_NOTHROW)
4117 #elif (ACC_CC_GNUC && (ACC_CC_GNUC < 0x020800ul))
4118 #elif (ACC_CC_BORLANDC && (__BORLANDC__ < 0x0450))
4119 #elif (ACC_CC_HIGHC)
4120 #elif (ACC_CC_MSC && (_MSC_VER < 1100))
4121 #elif (ACC_CC_NDPC)
4122 #elif (ACC_CC_TURBOC)
4123 #elif (ACC_CC_WATCOMC && !defined(_CPPUNWIND))
4124 #elif (ACC_CC_ZORTECHC)
4125 #else
4126 # define ACC_CXX_NOTHROW throw()
4127 #endif
4128 #if !defined(ACC_CXX_NOTHROW)
4129 # define ACC_CXX_NOTHROW
4130 #endif
4131 #if defined(__ACC_CXX_DO_NEW)
4132 #elif (ACC_CC_NDPC || ACC_CC_PGI)
4133 # define __ACC_CXX_DO_NEW { return 0; }
4134 #elif ((ACC_CC_BORLANDC || ACC_CC_TURBOC) && ACC_ARCH_I086)
4135 # define __ACC_CXX_DO_NEW { return 0; }
4136 #else
4137 # define __ACC_CXX_DO_NEW ;
4138 #endif
4139 #if defined(__ACC_CXX_DO_DELETE)
4140 #elif (ACC_CC_BORLANDC || ACC_CC_TURBOC)
4141 # define __ACC_CXX_DO_DELETE { }
4142 #else
4143 # define __ACC_CXX_DO_DELETE ACC_CXX_NOTHROW { }
4144 #endif
4145 #if (ACC_CC_BORLANDC && (__BORLANDC__ < 0x0450))
4146 #elif (ACC_CC_MSC && ACC_MM_HUGE)
4147 # define ACC_CXX_DISABLE_NEW_DELETE private:
4148 #elif (ACC_CC_MSC && (_MSC_VER < 1100))
4149 #elif (ACC_CC_NDPC)
4150 #elif (ACC_CC_SYMANTECC || ACC_CC_ZORTECHC)
4151 #elif (ACC_CC_TURBOC)
4152 #elif (ACC_CC_WATCOMC && (__WATCOMC__ < 1100))
4153 #else
4154 # define __ACC_CXX_HAVE_ARRAY_NEW 1
4155 #endif
4156 #if (__ACC_CXX_HAVE_ARRAY_NEW)
4157 # define __ACC_CXX_HAVE_PLACEMENT_NEW 1
4158 #endif
4159 #if (__ACC_CXX_HAVE_PLACEMENT_NEW)
4160 # if (ACC_CC_GNUC >= 0x030000ul)
4161 # define __ACC_CXX_HAVE_PLACEMENT_DELETE 1
4162 # elif (ACC_CC_INTELC)
4163 # define __ACC_CXX_HAVE_PLACEMENT_DELETE 1
4164 # elif (ACC_CC_MSC && (_MSC_VER >= 1200))
4165 # define __ACC_CXX_HAVE_PLACEMENT_DELETE 1
4166 # elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
4167 # define __ACC_CXX_HAVE_PLACEMENT_DELETE 1
4168 # elif (ACC_CC_PGI)
4169 # define __ACC_CXX_HAVE_PLACEMENT_DELETE 1
4170 # endif
4171 #endif
4172 #if defined(ACC_CXX_DISABLE_NEW_DELETE)
4173 #elif defined(new) || defined(delete)
4174 # define ACC_CXX_DISABLE_NEW_DELETE private:
4175 #elif (ACC_CC_GNUC && (ACC_CC_GNUC < 0x025b00ul))
4176 # define ACC_CXX_DISABLE_NEW_DELETE private:
4177 #elif (ACC_CC_HIGHC)
4178 # define ACC_CXX_DISABLE_NEW_DELETE private:
4179 #elif !defined(__ACC_CXX_HAVE_ARRAY_NEW)
4180 # define ACC_CXX_DISABLE_NEW_DELETE \
4181 protected: static void operator delete(void*) __ACC_CXX_DO_DELETE \
4182 protected: static void* operator new(size_t) __ACC_CXX_DO_NEW \
4183 private:
4184 #else
4185 # define ACC_CXX_DISABLE_NEW_DELETE \
4186 protected: static void operator delete(void*) __ACC_CXX_DO_DELETE \
4187 static void operator delete[](void*) __ACC_CXX_DO_DELETE \
4188 private: static void* operator new(size_t) __ACC_CXX_DO_NEW \
4189 static void* operator new[](size_t) __ACC_CXX_DO_NEW
4190 #endif
4191 #if defined(ACC_CXX_TRIGGER_FUNCTION)
4192 #else
4193 # define ACC_CXX_TRIGGER_FUNCTION \
4194 protected: virtual const void* acc_cxx_trigger_function() const; \
4195 private:
4196 #endif
4197 #if defined(ACC_CXX_TRIGGER_FUNCTION_IMPL)
4198 #else
4199 # define ACC_CXX_TRIGGER_FUNCTION_IMPL(klass) \
4200 const void* klass::acc_cxx_trigger_function() const { return 0; }
4201 #endif
4202 #endif
4203 #endif
4204 #endif
4205 #if defined(ACC_WANT_ACC_CHK_CH)
4206 # undef ACC_WANT_ACC_CHK_CH
4207 #if !defined(ACCCHK_ASSERT)
4208 # define ACCCHK_ASSERT(expr) ACC_COMPILE_TIME_ASSERT_HEADER(expr)
4209 #endif
4210 #if !defined(ACCCHK_ASSERT_SIGN_T)
4211 # define ACCCHK_ASSERT_SIGN_T(type,relop) \
4212 ACCCHK_ASSERT( (type) (-1) relop (type) 0 ) \
4213 ACCCHK_ASSERT( (type) (~(type)0) relop (type) 0 ) \
4214 ACCCHK_ASSERT( (type) (~(type)0) == (type) (-1) )
4215 #endif
4216 #if !defined(ACCCHK_ASSERT_IS_SIGNED_T)
4217 # define ACCCHK_ASSERT_IS_SIGNED_T(type) ACCCHK_ASSERT_SIGN_T(type,<)
4218 #endif
4219 #if !defined(ACCCHK_ASSERT_IS_UNSIGNED_T)
4220 # if (ACC_BROKEN_INTEGRAL_PROMOTION)
4221 # define ACCCHK_ASSERT_IS_UNSIGNED_T(type) \
4222 ACCCHK_ASSERT( (type) (-1) > (type) 0 )
4223 # else
4224 # define ACCCHK_ASSERT_IS_UNSIGNED_T(type) ACCCHK_ASSERT_SIGN_T(type,>)
4225 # endif
4226 #endif
4227 #if (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0550) && (__BORLANDC__ < 0x0560))
4228 # pragma option push -w-8055
4229 #elif (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0530) && (__BORLANDC__ < 0x0550))
4230 # pragma option push -w-osh
4231 #endif
4232 #if (ACC_0xffffffffL - ACC_UINT32_C(4294967294) != 1)
4233 # error "preprocessor error 1"
4234 #endif
4235 #if (ACC_0xffffffffL - ACC_UINT32_C(0xfffffffd) != 2)
4236 # error "preprocessor error 2"
4237 #endif
4238 #define ACCCHK_VAL 1
4239 #define ACCCHK_TMP1 ACCCHK_VAL
4240 #undef ACCCHK_VAL
4241 #define ACCCHK_VAL 2
4242 #define ACCCHK_TMP2 ACCCHK_VAL
4243 #if (ACCCHK_TMP1 != 2)
4244 # error "preprocessor error 3a"
4245 #endif
4246 #if (ACCCHK_TMP2 != 2)
4247 # error "preprocessor error 3b"
4248 #endif
4249 #undef ACCCHK_VAL
4250 #if (ACCCHK_TMP2)
4251 # error "preprocessor error 3c"
4252 #endif
4253 #if (ACCCHK_TMP2 + 0 != 0)
4254 # error "preprocessor error 3d"
4255 #endif
4256 #undef ACCCHK_TMP1
4257 #undef ACCCHK_TMP2
4258 #if 0 || defined(ACCCHK_CFG_PEDANTIC)
4259 # if (ACC_ARCH_MIPS) && defined(_MIPS_SZINT)
4260 ACCCHK_ASSERT((_MIPS_SZINT) == 8 * sizeof(int))
4261 # endif
4262 # if (ACC_ARCH_MIPS) && defined(_MIPS_SZLONG)
4263 ACCCHK_ASSERT((_MIPS_SZLONG) == 8 * sizeof(long))
4264 # endif
4265 # if (ACC_ARCH_MIPS) && defined(_MIPS_SZPTR)
4266 ACCCHK_ASSERT((_MIPS_SZPTR) == 8 * sizeof(void *))
4267 # endif
4268 #endif
4269 ACCCHK_ASSERT(1 == 1)
4270 ACCCHK_ASSERT(__ACC_MASK_GEN(1u,2) == 3)
4271 ACCCHK_ASSERT(__ACC_MASK_GEN(1u,8) == 255)
4272 #if (SIZEOF_INT >= 2)
4273 ACCCHK_ASSERT(__ACC_MASK_GEN(1,15) == 32767)
4274 ACCCHK_ASSERT(__ACC_MASK_GEN(1u,16) == 0xffffU)
4275 #else
4276 ACCCHK_ASSERT(__ACC_MASK_GEN(1ul,16) == 0xffffUL)
4277 #endif
4278 #if (SIZEOF_INT >= 4)
4279 ACCCHK_ASSERT(__ACC_MASK_GEN(1,31) == 2147483647)
4280 ACCCHK_ASSERT(__ACC_MASK_GEN(1u,32) == 0xffffffffU)
4281 #endif
4282 #if (SIZEOF_LONG >= 4)
4283 ACCCHK_ASSERT(__ACC_MASK_GEN(1ul,32) == 0xffffffffUL)
4284 #endif
4285 #if (SIZEOF_LONG >= 8)
4286 ACCCHK_ASSERT(__ACC_MASK_GEN(1ul,64) == 0xffffffffffffffffUL)
4287 #endif
4288 #if !defined(ACC_BROKEN_INTEGRAL_PROMOTION)
4289 ACCCHK_ASSERT(__ACC_MASK_GEN(1u,SIZEOF_INT*8) == ~0u)
4290 ACCCHK_ASSERT(__ACC_MASK_GEN(1ul,SIZEOF_LONG*8) == ~0ul)
4291 #endif
4292 #if !defined(ACC_BROKEN_SIGNED_RIGHT_SHIFT)
4293 ACCCHK_ASSERT(((-1) >> 7) == -1)
4294 #endif
4295 ACCCHK_ASSERT(((1) >> 7) == 0)
4296 ACCCHK_ASSERT((~0l & ~0) == ~0l)
4297 ACCCHK_ASSERT((~0l & ~0u) == ~0u)
4298 ACCCHK_ASSERT((~0ul & ~0) == ~0ul)
4299 ACCCHK_ASSERT((~0ul & ~0u) == ~0u)
4300 #if defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0150)
4301 #elif (SIZEOF_INT == 2)
4302 ACCCHK_ASSERT((~0l & ~0u) == 0xffffU)
4303 ACCCHK_ASSERT((~0ul & ~0u) == 0xffffU)
4304 #elif (SIZEOF_INT == 4)
4305 ACCCHK_ASSERT((~0l & ~0u) == 0xffffffffU)
4306 ACCCHK_ASSERT((~0ul & ~0u) == 0xffffffffU)
4307 #endif
4308 ACCCHK_ASSERT_IS_SIGNED_T(signed char)
4309 ACCCHK_ASSERT_IS_UNSIGNED_T(unsigned char)
4310 ACCCHK_ASSERT(sizeof(signed char) == sizeof(char))
4311 ACCCHK_ASSERT(sizeof(unsigned char) == sizeof(char))
4312 ACCCHK_ASSERT(sizeof(char) == 1)
4313 #if (ACC_CC_CILLY) && (!defined(__CILLY__) || (__CILLY__ < 0x010302L))
4314 #else
4315 ACCCHK_ASSERT(sizeof(char) == sizeof((char)0))
4316 #endif
4317 #if defined(__cplusplus)
4318 ACCCHK_ASSERT(sizeof('\0') == sizeof(char))
4319 #else
4320 # if (ACC_CC_DMC)
4321 # else
4322 ACCCHK_ASSERT(sizeof('\0') == sizeof(int))
4323 # endif
4324 #endif
4325 #if defined(__acc_alignof)
4326 ACCCHK_ASSERT(__acc_alignof(char) == 1)
4327 ACCCHK_ASSERT(__acc_alignof(signed char) == 1)
4328 ACCCHK_ASSERT(__acc_alignof(unsigned char) == 1)
4329 #if defined(acc_int16e_t)
4330 ACCCHK_ASSERT(__acc_alignof(acc_int16e_t) >= 1)
4331 ACCCHK_ASSERT(__acc_alignof(acc_int16e_t) <= 2)
4332 #endif
4333 #if defined(acc_int32e_t)
4334 ACCCHK_ASSERT(__acc_alignof(acc_int32e_t) >= 1)
4335 ACCCHK_ASSERT(__acc_alignof(acc_int32e_t) <= 4)
4336 #endif
4337 #endif
4338 ACCCHK_ASSERT_IS_SIGNED_T(short)
4339 ACCCHK_ASSERT_IS_UNSIGNED_T(unsigned short)
4340 ACCCHK_ASSERT(sizeof(short) == sizeof(unsigned short))
4341 #if !defined(ACC_ABI_I8LP16)
4342 ACCCHK_ASSERT(sizeof(short) >= 2)
4343 #endif
4344 ACCCHK_ASSERT(sizeof(short) >= sizeof(char))
4345 #if (ACC_CC_CILLY) && (!defined(__CILLY__) || (__CILLY__ < 0x010302L))
4346 #else
4347 ACCCHK_ASSERT(sizeof(short) == sizeof((short)0))
4348 #endif
4349 #if (SIZEOF_SHORT > 0)
4350 ACCCHK_ASSERT(sizeof(short) == SIZEOF_SHORT)
4351 #endif
4352 ACCCHK_ASSERT_IS_SIGNED_T(int)
4353 ACCCHK_ASSERT_IS_UNSIGNED_T(unsigned int)
4354 ACCCHK_ASSERT(sizeof(int) == sizeof(unsigned int))
4355 #if !defined(ACC_ABI_I8LP16)
4356 ACCCHK_ASSERT(sizeof(int) >= 2)
4357 #endif
4358 ACCCHK_ASSERT(sizeof(int) >= sizeof(short))
4359 ACCCHK_ASSERT(sizeof(int) == sizeof(0))
4360 ACCCHK_ASSERT(sizeof(int) == sizeof((int)0))
4361 #if (SIZEOF_INT > 0)
4362 ACCCHK_ASSERT(sizeof(int) == SIZEOF_INT)
4363 #endif
4364 ACCCHK_ASSERT(sizeof(0) == sizeof(int))
4365 ACCCHK_ASSERT_IS_SIGNED_T(long)
4366 ACCCHK_ASSERT_IS_UNSIGNED_T(unsigned long)
4367 ACCCHK_ASSERT(sizeof(long) == sizeof(unsigned long))
4368 #if !defined(ACC_ABI_I8LP16)
4369 ACCCHK_ASSERT(sizeof(long) >= 4)
4370 #endif
4371 ACCCHK_ASSERT(sizeof(long) >= sizeof(int))
4372 ACCCHK_ASSERT(sizeof(long) == sizeof(0L))
4373 ACCCHK_ASSERT(sizeof(long) == sizeof((long)0))
4374 #if (SIZEOF_LONG > 0)
4375 ACCCHK_ASSERT(sizeof(long) == SIZEOF_LONG)
4376 #endif
4377 ACCCHK_ASSERT(sizeof(0L) == sizeof(long))
4378 ACCCHK_ASSERT_IS_UNSIGNED_T(size_t)
4379 ACCCHK_ASSERT(sizeof(size_t) >= sizeof(int))
4380 ACCCHK_ASSERT(sizeof(size_t) == sizeof(sizeof(0)))
4381 #if (SIZEOF_SIZE_T > 0)
4382 ACCCHK_ASSERT(sizeof(size_t) == SIZEOF_SIZE_T)
4383 #endif
4384 ACCCHK_ASSERT_IS_SIGNED_T(ptrdiff_t)
4385 ACCCHK_ASSERT(sizeof(ptrdiff_t) >= sizeof(int))
4386 ACCCHK_ASSERT(sizeof(ptrdiff_t) >= sizeof(size_t))
4387 #if !defined(ACC_BROKEN_SIZEOF)
4388 ACCCHK_ASSERT(sizeof(ptrdiff_t) == sizeof((char*)0 - (char*)0))
4389 # if (ACC_HAVE_MM_HUGE_PTR)
4390 ACCCHK_ASSERT(4 == sizeof((char __huge*)0 - (char __huge*)0))
4391 # endif
4392 #endif
4393 #if (SIZEOF_PTRDIFF_T > 0)
4394 ACCCHK_ASSERT(sizeof(ptrdiff_t) == SIZEOF_PTRDIFF_T)
4395 #endif
4396 ACCCHK_ASSERT(sizeof(void*) >= sizeof(char*))
4397 #if (SIZEOF_VOID_P > 0)
4398 ACCCHK_ASSERT(sizeof(void*) == SIZEOF_VOID_P)
4399 ACCCHK_ASSERT(sizeof(char*) == SIZEOF_VOID_P)
4400 #endif
4401 #if (ACC_HAVE_MM_HUGE_PTR)
4402 ACCCHK_ASSERT(4 == sizeof(void __huge*))
4403 ACCCHK_ASSERT(4 == sizeof(char __huge*))
4404 #endif
4405 #if defined(ACC_ABI_I8LP16)
4406 ACCCHK_ASSERT((((1u << 7) + 1) >> 7) == 1)
4407 ACCCHK_ASSERT((((1ul << 15) + 1) >> 15) == 1)
4408 #else
4409 ACCCHK_ASSERT((((1u << 15) + 1) >> 15) == 1)
4410 ACCCHK_ASSERT((((1ul << 31) + 1) >> 31) == 1)
4411 #endif
4412 #if defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0150)
4413 #elif 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC)
4414 #else
4415 ACCCHK_ASSERT((1 << (8*SIZEOF_INT-1)) < 0)
4416 #endif
4417 ACCCHK_ASSERT((1u << (8*SIZEOF_INT-1)) > 0)
4418 #if 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC)
4419 #else
4420 ACCCHK_ASSERT((1l << (8*SIZEOF_LONG-1)) < 0)
4421 #endif
4422 ACCCHK_ASSERT((1ul << (8*SIZEOF_LONG-1)) > 0)
4423 #if defined(acc_int16e_t)
4424 ACCCHK_ASSERT(sizeof(acc_int16e_t) == 2)
4425 ACCCHK_ASSERT(sizeof(acc_int16e_t) == SIZEOF_ACC_INT16E_T)
4426 ACCCHK_ASSERT(sizeof(acc_uint16e_t) == 2)
4427 ACCCHK_ASSERT(sizeof(acc_int16e_t) == sizeof(acc_uint16e_t))
4428 ACCCHK_ASSERT_IS_SIGNED_T(acc_int16e_t)
4429 ACCCHK_ASSERT_IS_UNSIGNED_T(acc_uint16e_t)
4430 #if defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0150)
4431 #else
4432 ACCCHK_ASSERT(((acc_uint16e_t)(~(acc_uint16e_t)0ul) >> 15) == 1)
4433 #endif
4434 ACCCHK_ASSERT( (acc_int16e_t) (1 + ~(acc_int16e_t)0) == 0)
4435 #if defined(ACCCHK_CFG_PEDANTIC)
4436 ACCCHK_ASSERT( (acc_uint16e_t)(1 + ~(acc_uint16e_t)0) == 0)
4437 #endif
4438 #endif
4439 #if defined(acc_int32e_t)
4440 ACCCHK_ASSERT(sizeof(acc_int32e_t) == 4)
4441 ACCCHK_ASSERT(sizeof(acc_int32e_t) == SIZEOF_ACC_INT32E_T)
4442 ACCCHK_ASSERT(sizeof(acc_uint32e_t) == 4)
4443 ACCCHK_ASSERT(sizeof(acc_int32e_t) == sizeof(acc_uint32e_t))
4444 ACCCHK_ASSERT_IS_SIGNED_T(acc_int32e_t)
4445 ACCCHK_ASSERT(((( (acc_int32e_t)1 << 30) + 1) >> 30) == 1)
4446 ACCCHK_ASSERT_IS_UNSIGNED_T(acc_uint32e_t)
4447 ACCCHK_ASSERT(((( (acc_uint32e_t)1 << 31) + 1) >> 31) == 1)
4448 ACCCHK_ASSERT(((acc_uint32e_t)(~(acc_uint32e_t)0ul) >> 31) == 1)
4449 ACCCHK_ASSERT( (acc_int32e_t) (1 + ~(acc_int32e_t)0) == 0)
4450 #if defined(ACCCHK_CFG_PEDANTIC)
4451 ACCCHK_ASSERT( (acc_uint32e_t)(1 + ~(acc_uint32e_t)0) == 0)
4452 #endif
4453 #endif
4454 #if defined(acc_int32e_t)
4455 ACCCHK_ASSERT(sizeof(acc_int32l_t) >= sizeof(acc_int32e_t))
4456 #endif
4457 ACCCHK_ASSERT(sizeof(acc_int32l_t) >= 4)
4458 ACCCHK_ASSERT(sizeof(acc_int32l_t) == SIZEOF_ACC_INT32L_T)
4459 ACCCHK_ASSERT(sizeof(acc_uint32l_t) >= 4)
4460 ACCCHK_ASSERT(sizeof(acc_int32l_t) == sizeof(acc_uint32l_t))
4461 ACCCHK_ASSERT_IS_SIGNED_T(acc_int32l_t)
4462 ACCCHK_ASSERT(((( (acc_int32l_t)1 << 30) + 1) >> 30) == 1)
4463 ACCCHK_ASSERT_IS_UNSIGNED_T(acc_uint32l_t)
4464 ACCCHK_ASSERT(((( (acc_uint32l_t)1 << 31) + 1) >> 31) == 1)
4465 ACCCHK_ASSERT(sizeof(acc_int32f_t) >= sizeof(int))
4466 #if defined(acc_int32e_t)
4467 ACCCHK_ASSERT(sizeof(acc_int32f_t) >= sizeof(acc_int32e_t))
4468 #endif
4469 ACCCHK_ASSERT(sizeof(acc_int32f_t) >= sizeof(acc_int32l_t))
4470 ACCCHK_ASSERT(sizeof(acc_int32f_t) >= 4)
4471 ACCCHK_ASSERT(sizeof(acc_int32f_t) >= sizeof(acc_int32l_t))
4472 ACCCHK_ASSERT(sizeof(acc_int32f_t) == SIZEOF_ACC_INT32F_T)
4473 ACCCHK_ASSERT(sizeof(acc_uint32f_t) >= 4)
4474 ACCCHK_ASSERT(sizeof(acc_uint32f_t) >= sizeof(acc_uint32l_t))
4475 ACCCHK_ASSERT(sizeof(acc_int32f_t) == sizeof(acc_uint32f_t))
4476 ACCCHK_ASSERT_IS_SIGNED_T(acc_int32f_t)
4477 ACCCHK_ASSERT(((( (acc_int32f_t)1 << 30) + 1) >> 30) == 1)
4478 ACCCHK_ASSERT_IS_UNSIGNED_T(acc_uint32f_t)
4479 ACCCHK_ASSERT(((( (acc_uint32f_t)1 << 31) + 1) >> 31) == 1)
4480 #if defined(acc_int64e_t)
4481 ACCCHK_ASSERT(sizeof(acc_int64e_t) == 8)
4482 ACCCHK_ASSERT(sizeof(acc_int64e_t) == SIZEOF_ACC_INT64E_T)
4483 ACCCHK_ASSERT(sizeof(acc_uint64e_t) == 8)
4484 ACCCHK_ASSERT(sizeof(acc_int64e_t) == sizeof(acc_uint64e_t))
4485 ACCCHK_ASSERT_IS_SIGNED_T(acc_int64e_t)
4486 #if (ACC_CC_BORLANDC && (__BORLANDC__ < 0x0530))
4487 #else
4488 ACCCHK_ASSERT_IS_UNSIGNED_T(acc_uint64e_t)
4489 #endif
4490 #endif
4491 #if defined(acc_int64l_t)
4492 #if defined(acc_int64e_t)
4493 ACCCHK_ASSERT(sizeof(acc_int64l_t) >= sizeof(acc_int64e_t))
4494 #endif
4495 ACCCHK_ASSERT(sizeof(acc_int64l_t) >= 8)
4496 ACCCHK_ASSERT(sizeof(acc_int64l_t) == SIZEOF_ACC_INT64L_T)
4497 ACCCHK_ASSERT(sizeof(acc_uint64l_t) >= 8)
4498 ACCCHK_ASSERT(sizeof(acc_int64l_t) == sizeof(acc_uint64l_t))
4499 ACCCHK_ASSERT_IS_SIGNED_T(acc_int64l_t)
4500 ACCCHK_ASSERT(((( (acc_int64l_t)1 << 62) + 1) >> 62) == 1)
4501 ACCCHK_ASSERT(((( ACC_INT64_C(1) << 62) + 1) >> 62) == 1)
4502 #if (ACC_CC_BORLANDC && (__BORLANDC__ < 0x0530))
4503 #else
4504 ACCCHK_ASSERT_IS_UNSIGNED_T(acc_uint64l_t)
4505 ACCCHK_ASSERT(ACC_UINT64_C(18446744073709551615) > 0)
4506 #endif
4507 ACCCHK_ASSERT(((( (acc_uint64l_t)1 << 63) + 1) >> 63) == 1)
4508 ACCCHK_ASSERT(((( ACC_UINT64_C(1) << 63) + 1) >> 63) == 1)
4509 #if (ACC_CC_GNUC && (ACC_CC_GNUC < 0x020600ul))
4510 ACCCHK_ASSERT(ACC_INT64_C(9223372036854775807) > ACC_INT64_C(0))
4511 #else
4512 ACCCHK_ASSERT(ACC_INT64_C(9223372036854775807) > 0)
4513 #endif
4514 ACCCHK_ASSERT(ACC_INT64_C(-9223372036854775807) - 1 < 0)
4515 ACCCHK_ASSERT( ACC_INT64_C(9223372036854775807) % ACC_INT32_C(2147483629) == 721)
4516 ACCCHK_ASSERT( ACC_INT64_C(9223372036854775807) % ACC_INT32_C(2147483647) == 1)
4517 ACCCHK_ASSERT(ACC_UINT64_C(9223372036854775807) % ACC_UINT32_C(2147483629) == 721)
4518 ACCCHK_ASSERT(ACC_UINT64_C(9223372036854775807) % ACC_UINT32_C(2147483647) == 1)
4519 #endif
4520 #if !defined(__ACC_INTPTR_T_IS_POINTER)
4521 ACCCHK_ASSERT_IS_SIGNED_T(acc_intptr_t)
4522 ACCCHK_ASSERT_IS_UNSIGNED_T(acc_uintptr_t)
4523 #endif
4524 ACCCHK_ASSERT(sizeof(acc_intptr_t) >= sizeof(void *))
4525 ACCCHK_ASSERT(sizeof(acc_intptr_t) == SIZEOF_ACC_INTPTR_T)
4526 ACCCHK_ASSERT(sizeof(acc_intptr_t) == sizeof(acc_uintptr_t))
4527 #if defined(acc_word_t)
4528 ACCCHK_ASSERT(ACC_WORDSIZE == SIZEOF_ACC_WORD_T)
4529 ACCCHK_ASSERT_IS_UNSIGNED_T(acc_word_t)
4530 ACCCHK_ASSERT_IS_SIGNED_T(acc_sword_t)
4531 ACCCHK_ASSERT(sizeof(acc_word_t) == SIZEOF_ACC_WORD_T)
4532 ACCCHK_ASSERT(sizeof(acc_word_t) == sizeof(acc_sword_t))
4533 #endif
4534 #if defined(ACC_INT16_C)
4535 ACCCHK_ASSERT(sizeof(ACC_INT16_C(0)) >= 2)
4536 ACCCHK_ASSERT(sizeof(ACC_UINT16_C(0)) >= 2)
4537 ACCCHK_ASSERT((ACC_UINT16_C(0xffff) >> 15) == 1)
4538 #endif
4539 #if defined(ACC_INT32_C)
4540 ACCCHK_ASSERT(sizeof(ACC_INT32_C(0)) >= 4)
4541 ACCCHK_ASSERT(sizeof(ACC_UINT32_C(0)) >= 4)
4542 ACCCHK_ASSERT((ACC_UINT32_C(0xffffffff) >> 31) == 1)
4543 #endif
4544 #if defined(ACC_INT64_C)
4545 #if (ACC_CC_BORLANDC && (__BORLANDC__ < 0x0560))
4546 #else
4547 ACCCHK_ASSERT(sizeof(ACC_INT64_C(0)) >= 8)
4548 ACCCHK_ASSERT(sizeof(ACC_UINT64_C(0)) >= 8)
4549 #endif
4550 ACCCHK_ASSERT((ACC_UINT64_C(0xffffffffffffffff) >> 63) == 1)
4551 ACCCHK_ASSERT((ACC_UINT64_C(0xffffffffffffffff) & ~0) == ACC_UINT64_C(0xffffffffffffffff))
4552 ACCCHK_ASSERT((ACC_UINT64_C(0xffffffffffffffff) & ~0l) == ACC_UINT64_C(0xffffffffffffffff))
4553 #if (SIZEOF_INT == 4)
4554 # if (ACC_CC_GNUC && (ACC_CC_GNUC < 0x020000ul))
4555 # else
4556 ACCCHK_ASSERT((ACC_UINT64_C(0xffffffffffffffff) & ~0u) == 0xffffffffu)
4557 # endif
4558 #endif
4559 #if (SIZEOF_LONG == 4)
4560 # if (ACC_CC_GNUC && (ACC_CC_GNUC < 0x020000ul))
4561 # else
4562 ACCCHK_ASSERT((ACC_UINT64_C(0xffffffffffffffff) & ~0ul) == 0xfffffffful)
4563 # endif
4564 #endif
4565 #endif
4566 #if (ACC_MM_TINY || ACC_MM_SMALL || ACC_MM_MEDIUM)
4567 ACCCHK_ASSERT(sizeof(void*) == 2)
4568 ACCCHK_ASSERT(sizeof(ptrdiff_t) == 2)
4569 #elif (ACC_MM_COMPACT || ACC_MM_LARGE || ACC_MM_HUGE)
4570 ACCCHK_ASSERT(sizeof(void*) == 4)
4571 #endif
4572 #if (ACC_MM_TINY || ACC_MM_SMALL || ACC_MM_COMPACT)
4573 ACCCHK_ASSERT(sizeof(void (*)(void)) == 2)
4574 #elif (ACC_MM_MEDIUM || ACC_MM_LARGE || ACC_MM_HUGE)
4575 ACCCHK_ASSERT(sizeof(void (*)(void)) == 4)
4576 #endif
4577 #if (ACC_ABI_ILP32)
4578 ACCCHK_ASSERT(sizeof(int) == 4)
4579 ACCCHK_ASSERT(sizeof(long) == 4)
4580 ACCCHK_ASSERT(sizeof(void*) == 4)
4581 ACCCHK_ASSERT(sizeof(ptrdiff_t) == sizeof(void*))
4582 ACCCHK_ASSERT(sizeof(size_t) == sizeof(void*))
4583 ACCCHK_ASSERT(sizeof(acc_intptr_t) == sizeof(void *))
4584 #endif
4585 #if (ACC_ABI_ILP64)
4586 ACCCHK_ASSERT(sizeof(int) == 8)
4587 ACCCHK_ASSERT(sizeof(long) == 8)
4588 ACCCHK_ASSERT(sizeof(void*) == 8)
4589 ACCCHK_ASSERT(sizeof(ptrdiff_t) == sizeof(void*))
4590 ACCCHK_ASSERT(sizeof(size_t) == sizeof(void*))
4591 ACCCHK_ASSERT(sizeof(acc_intptr_t) == sizeof(void *))
4592 #endif
4593 #if (ACC_ABI_IP32L64)
4594 ACCCHK_ASSERT(sizeof(int) == 4)
4595 ACCCHK_ASSERT(sizeof(long) == 8)
4596 ACCCHK_ASSERT(sizeof(void*) == 4)
4597 ACCCHK_ASSERT(sizeof(ptrdiff_t) == sizeof(void*))
4598 ACCCHK_ASSERT(sizeof(size_t) == sizeof(void*))
4599 ACCCHK_ASSERT(sizeof(acc_intptr_t) == sizeof(void *))
4600 #endif
4601 #if (ACC_ABI_LLP64)
4602 ACCCHK_ASSERT(sizeof(int) == 4)
4603 ACCCHK_ASSERT(sizeof(long) == 4)
4604 ACCCHK_ASSERT(sizeof(void*) == 8)
4605 ACCCHK_ASSERT(sizeof(ptrdiff_t) == sizeof(void*))
4606 ACCCHK_ASSERT(sizeof(size_t) == sizeof(void*))
4607 ACCCHK_ASSERT(sizeof(acc_intptr_t) == sizeof(void *))
4608 #endif
4609 #if (ACC_ABI_LP32)
4610 ACCCHK_ASSERT(sizeof(int) == 2)
4611 ACCCHK_ASSERT(sizeof(long) == 4)
4612 ACCCHK_ASSERT(sizeof(void*) == 4)
4613 ACCCHK_ASSERT(sizeof(acc_intptr_t) == sizeof(void *))
4614 #endif
4615 #if (ACC_ABI_LP64)
4616 ACCCHK_ASSERT(sizeof(int) == 4)
4617 ACCCHK_ASSERT(sizeof(long) == 8)
4618 ACCCHK_ASSERT(sizeof(void*) == 8)
4619 ACCCHK_ASSERT(sizeof(ptrdiff_t) == sizeof(void*))
4620 ACCCHK_ASSERT(sizeof(size_t) == sizeof(void*))
4621 ACCCHK_ASSERT(sizeof(acc_intptr_t) == sizeof(void *))
4622 #endif
4623 #if (ACC_ARCH_I086)
4624 ACCCHK_ASSERT(sizeof(size_t) == 2)
4625 ACCCHK_ASSERT(sizeof(acc_intptr_t) == sizeof(void *))
4626 #elif (ACC_ARCH_I386 || ACC_ARCH_M68K)
4627 ACCCHK_ASSERT(sizeof(size_t) == 4)
4628 ACCCHK_ASSERT(sizeof(ptrdiff_t) == 4)
4629 ACCCHK_ASSERT(sizeof(acc_intptr_t) == sizeof(void *))
4630 #endif
4631 #if (ACC_OS_DOS32 || ACC_OS_OS2 || ACC_OS_WIN32)
4632 ACCCHK_ASSERT(sizeof(size_t) == 4)
4633 ACCCHK_ASSERT(sizeof(ptrdiff_t) == 4)
4634 ACCCHK_ASSERT(sizeof(void (*)(void)) == 4)
4635 #elif (ACC_OS_WIN64)
4636 ACCCHK_ASSERT(sizeof(size_t) == 8)
4637 ACCCHK_ASSERT(sizeof(ptrdiff_t) == 8)
4638 ACCCHK_ASSERT(sizeof(void (*)(void)) == 8)
4639 #endif
4640 #if (ACC_CC_NDPC)
4641 #elif (SIZEOF_INT > 1)
4642 ACCCHK_ASSERT( (int) ((unsigned char) ((signed char) -1)) == 255)
4643 #endif
4644 #if (ACC_CC_KEILC)
4645 #elif (ACC_CC_NDPC)
4646 #elif 1 && (ACC_CC_LCC || ACC_CC_LCCWIN32) && !defined(ACCCHK_CFG_PEDANTIC)
4647 #elif 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC)
4648 #elif !defined(ACC_BROKEN_INTEGRAL_PROMOTION) && (SIZEOF_INT > 1)
4649 ACCCHK_ASSERT( (((unsigned char)128) << (int)(8*sizeof(int)-8)) < 0)
4650 #endif
4651 #if (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0530) && (__BORLANDC__ < 0x0560))
4652 # pragma option pop
4653 #endif
4654 #endif
4655 #if defined(ACC_WANT_ACCLIB_UA)
4656 # undef ACC_WANT_ACCLIB_UA
4657 #define __ACCLIB_UA_CH_INCLUDED 1
4658 #if !defined(ACCLIB_PUBLIC)
4659 # define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
4660 #endif
4661 ACCLIB_PUBLIC(unsigned, acc_ua_get_be16) (const acc_hvoid_p p)
4663 #if defined(ACC_UA_GET_BE16)
4664 return ACC_UA_GET_BE16(p);
4665 #else
4666 const acc_hbyte_p b = (const acc_hbyte_p) p;
4667 return ((unsigned)b[1]) | ((unsigned)b[0] << 8);
4668 #endif
4670 ACCLIB_PUBLIC(acc_uint32l_t, acc_ua_get_be24) (const acc_hvoid_p p)
4672 const acc_hbyte_p b = (const acc_hbyte_p) p;
4673 return ((acc_uint32l_t)b[2]) | ((acc_uint32l_t)b[1] << 8) | ((acc_uint32l_t)b[0] << 16);
4675 ACCLIB_PUBLIC(acc_uint32l_t, acc_ua_get_be32) (const acc_hvoid_p p)
4677 #if defined(ACC_UA_GET_BE32)
4678 return ACC_UA_GET_BE32(p);
4679 #else
4680 const acc_hbyte_p b = (const acc_hbyte_p) p;
4681 return ((acc_uint32l_t)b[3]) | ((acc_uint32l_t)b[2] << 8) | ((acc_uint32l_t)b[1] << 16) | ((acc_uint32l_t)b[0] << 24);
4682 #endif
4684 ACCLIB_PUBLIC(void, acc_ua_set_be16) (acc_hvoid_p p, unsigned v)
4686 #if defined(ACC_UA_SET_BE16)
4687 ACC_UA_SET_BE16(p, v);
4688 #else
4689 acc_hbyte_p b = (acc_hbyte_p) p;
4690 b[1] = (unsigned char) ((v >> 0) & 0xff);
4691 b[0] = (unsigned char) ((v >> 8) & 0xff);
4692 #endif
4694 ACCLIB_PUBLIC(void, acc_ua_set_be24) (acc_hvoid_p p, acc_uint32l_t v)
4696 acc_hbyte_p b = (acc_hbyte_p) p;
4697 b[2] = (unsigned char) ((v >> 0) & 0xff);
4698 b[1] = (unsigned char) ((v >> 8) & 0xff);
4699 b[0] = (unsigned char) ((v >> 16) & 0xff);
4701 ACCLIB_PUBLIC(void, acc_ua_set_be32) (acc_hvoid_p p, acc_uint32l_t v)
4703 #if defined(ACC_UA_SET_BE32)
4704 ACC_UA_SET_BE32(p, v);
4705 #else
4706 acc_hbyte_p b = (acc_hbyte_p) p;
4707 b[3] = (unsigned char) ((v >> 0) & 0xff);
4708 b[2] = (unsigned char) ((v >> 8) & 0xff);
4709 b[1] = (unsigned char) ((v >> 16) & 0xff);
4710 b[0] = (unsigned char) ((v >> 24) & 0xff);
4711 #endif
4713 ACCLIB_PUBLIC(unsigned, acc_ua_get_le16) (const acc_hvoid_p p)
4715 #if defined(ACC_UA_GET_LE16)
4716 return ACC_UA_GET_LE16(p);
4717 #else
4718 const acc_hbyte_p b = (const acc_hbyte_p) p;
4719 return ((unsigned)b[0]) | ((unsigned)b[1] << 8);
4720 #endif
4722 ACCLIB_PUBLIC(acc_uint32l_t, acc_ua_get_le24) (const acc_hvoid_p p)
4724 const acc_hbyte_p b = (const acc_hbyte_p) p;
4725 return ((acc_uint32l_t)b[0]) | ((acc_uint32l_t)b[1] << 8) | ((acc_uint32l_t)b[2] << 16);
4727 ACCLIB_PUBLIC(acc_uint32l_t, acc_ua_get_le32) (const acc_hvoid_p p)
4729 #if defined(ACC_UA_GET_LE32)
4730 return ACC_UA_GET_LE32(p);
4731 #else
4732 const acc_hbyte_p b = (const acc_hbyte_p) p;
4733 return ((acc_uint32l_t)b[0]) | ((acc_uint32l_t)b[1] << 8) | ((acc_uint32l_t)b[2] << 16) | ((acc_uint32l_t)b[3] << 24);
4734 #endif
4736 ACCLIB_PUBLIC(void, acc_ua_set_le16) (acc_hvoid_p p, unsigned v)
4738 #if defined(ACC_UA_SET_LE16)
4739 ACC_UA_SET_LE16(p, v);
4740 #else
4741 acc_hbyte_p b = (acc_hbyte_p) p;
4742 b[0] = (unsigned char) ((v >> 0) & 0xff);
4743 b[1] = (unsigned char) ((v >> 8) & 0xff);
4744 #endif
4746 ACCLIB_PUBLIC(void, acc_ua_set_le24) (acc_hvoid_p p, acc_uint32l_t v)
4748 acc_hbyte_p b = (acc_hbyte_p) p;
4749 b[0] = (unsigned char) ((v >> 0) & 0xff);
4750 b[1] = (unsigned char) ((v >> 8) & 0xff);
4751 b[2] = (unsigned char) ((v >> 16) & 0xff);
4753 ACCLIB_PUBLIC(void, acc_ua_set_le32) (acc_hvoid_p p, acc_uint32l_t v)
4755 #if defined(ACC_UA_SET_LE32)
4756 ACC_UA_SET_LE32(p, v);
4757 #else
4758 acc_hbyte_p b = (acc_hbyte_p) p;
4759 b[0] = (unsigned char) ((v >> 0) & 0xff);
4760 b[1] = (unsigned char) ((v >> 8) & 0xff);
4761 b[2] = (unsigned char) ((v >> 16) & 0xff);
4762 b[3] = (unsigned char) ((v >> 24) & 0xff);
4763 #endif
4765 #if defined(acc_int64l_t)
4766 ACCLIB_PUBLIC(acc_uint64l_t, acc_ua_get_be64) (const acc_hvoid_p p)
4768 #if defined(ACC_UA_GET_BE64)
4769 return ACC_UA_GET_BE64(p);
4770 #elif defined(ACC_UA_GET_BE32)
4771 const acc_hbyte_p b = (const acc_hbyte_p) p;
4772 acc_uint32e_t v0, v1;
4773 v1 = ACC_UA_GET_BE32(b + 0);
4774 v0 = ACC_UA_GET_BE32(b + 4);
4775 return ((acc_uint64l_t)v0) | ((acc_uint64l_t)v1 << 32);
4776 #elif (ACC_SIZEOF_LONG >= 8) || (ACC_SIZEOF_SIZE_T >= 8)
4777 const acc_hbyte_p b = (const acc_hbyte_p) p;
4778 return ((acc_uint64l_t)b[7]) | ((acc_uint64l_t)b[6] << 8) | ((acc_uint64l_t)b[5] << 16) | ((acc_uint64l_t)b[4] << 24) | ((acc_uint64l_t)b[3] << 32) | ((acc_uint64l_t)b[2] << 40) | ((acc_uint64l_t)b[1] << 48) | ((acc_uint64l_t)b[0] << 56);
4779 #else
4780 const acc_hbyte_p b = (const acc_hbyte_p) p;
4781 acc_uint32l_t v0, v1;
4782 v1 = ((acc_uint32l_t)b[3]) | ((acc_uint32l_t)b[2] << 8) | ((acc_uint32l_t)b[1] << 16) | ((acc_uint32l_t)b[0] << 24);
4783 b += 4;
4784 v0 = ((acc_uint32l_t)b[3]) | ((acc_uint32l_t)b[2] << 8) | ((acc_uint32l_t)b[1] << 16) | ((acc_uint32l_t)b[0] << 24);
4785 return ((acc_uint64l_t)v0) | ((acc_uint64l_t)v1 << 32);
4786 #endif
4788 ACCLIB_PUBLIC(void, acc_ua_set_be64) (acc_hvoid_p p, acc_uint64l_t v)
4790 #if defined(ACC_UA_SET_BE64)
4791 ACC_UA_SET_BE64(p, v);
4792 #elif defined(ACC_UA_SET_BE32)
4793 acc_hbyte_p b = (acc_hbyte_p) p;
4794 ACC_UA_SET_BE32(b + 4, (v >> 0));
4795 ACC_UA_SET_BE32(b + 0, (v >> 32));
4796 #elif (ACC_SIZEOF_LONG >= 8) || (ACC_SIZEOF_SIZE_T >= 8)
4797 acc_hbyte_p b = (acc_hbyte_p) p;
4798 b[7] = (unsigned char) ((v >> 0) & 0xff);
4799 b[6] = (unsigned char) ((v >> 8) & 0xff);
4800 b[5] = (unsigned char) ((v >> 16) & 0xff);
4801 b[4] = (unsigned char) ((v >> 24) & 0xff);
4802 b[3] = (unsigned char) ((v >> 32) & 0xff);
4803 b[2] = (unsigned char) ((v >> 40) & 0xff);
4804 b[1] = (unsigned char) ((v >> 48) & 0xff);
4805 b[0] = (unsigned char) ((v >> 56) & 0xff);
4806 #else
4807 acc_hbyte_p b = (acc_hbyte_p) p;
4808 acc_uint32l_t x;
4809 x = (acc_uint32l_t) (v >> 0);
4810 b[7] = (unsigned char) ((x >> 0) & 0xff);
4811 b[6] = (unsigned char) ((x >> 8) & 0xff);
4812 b[5] = (unsigned char) ((x >> 16) & 0xff);
4813 b[4] = (unsigned char) ((x >> 24) & 0xff);
4814 x = (acc_uint32l_t) (v >> 32);
4815 b[3] = (unsigned char) ((x >> 0) & 0xff);
4816 b[2] = (unsigned char) ((x >> 8) & 0xff);
4817 b[1] = (unsigned char) ((x >> 16) & 0xff);
4818 b[0] = (unsigned char) ((x >> 24) & 0xff);
4819 #endif
4821 #endif
4822 #if defined(acc_int64l_t)
4823 ACCLIB_PUBLIC(acc_uint64l_t, acc_ua_get_le64) (const acc_hvoid_p p)
4825 #if defined(ACC_UA_GET_LE64)
4826 return ACC_UA_GET_LE64(p);
4827 #elif defined(ACC_UA_GET_LE32)
4828 const acc_hbyte_p b = (const acc_hbyte_p) p;
4829 acc_uint32e_t v0, v1;
4830 v0 = ACC_UA_GET_LE32(b + 0);
4831 v1 = ACC_UA_GET_LE32(b + 4);
4832 return ((acc_uint64l_t)v0) | ((acc_uint64l_t)v1 << 32);
4833 #elif (ACC_SIZEOF_LONG >= 8) || (ACC_SIZEOF_SIZE_T >= 8)
4834 const acc_hbyte_p b = (const acc_hbyte_p) p;
4835 return ((acc_uint64l_t)b[0]) | ((acc_uint64l_t)b[1] << 8) | ((acc_uint64l_t)b[2] << 16) | ((acc_uint64l_t)b[3] << 24) | ((acc_uint64l_t)b[4] << 32) | ((acc_uint64l_t)b[5] << 40) | ((acc_uint64l_t)b[6] << 48) | ((acc_uint64l_t)b[7] << 56);
4836 #else
4837 const acc_hbyte_p b = (const acc_hbyte_p) p;
4838 acc_uint32l_t v0, v1;
4839 v0 = ((acc_uint32l_t)b[0]) | ((acc_uint32l_t)b[1] << 8) | ((acc_uint32l_t)b[2] << 16) | ((acc_uint32l_t)b[3] << 24);
4840 b += 4;
4841 v1 = ((acc_uint32l_t)b[0]) | ((acc_uint32l_t)b[1] << 8) | ((acc_uint32l_t)b[2] << 16) | ((acc_uint32l_t)b[3] << 24);
4842 return ((acc_uint64l_t)v0) | ((acc_uint64l_t)v1 << 32);
4843 #endif
4845 ACCLIB_PUBLIC(void, acc_ua_set_le64) (acc_hvoid_p p, acc_uint64l_t v)
4847 #if defined(ACC_UA_SET_LE64)
4848 ACC_UA_SET_LE64(p, v);
4849 #elif defined(ACC_UA_SET_LE32)
4850 acc_hbyte_p b = (acc_hbyte_p) p;
4851 ACC_UA_SET_LE32(b + 0, (v >> 0));
4852 ACC_UA_SET_LE32(b + 4, (v >> 32));
4853 #elif (ACC_SIZEOF_LONG >= 8) || (ACC_SIZEOF_SIZE_T >= 8)
4854 acc_hbyte_p b = (acc_hbyte_p) p;
4855 b[0] = (unsigned char) ((v >> 0) & 0xff);
4856 b[1] = (unsigned char) ((v >> 8) & 0xff);
4857 b[2] = (unsigned char) ((v >> 16) & 0xff);
4858 b[3] = (unsigned char) ((v >> 24) & 0xff);
4859 b[4] = (unsigned char) ((v >> 32) & 0xff);
4860 b[5] = (unsigned char) ((v >> 40) & 0xff);
4861 b[6] = (unsigned char) ((v >> 48) & 0xff);
4862 b[7] = (unsigned char) ((v >> 56) & 0xff);
4863 #else
4864 acc_hbyte_p b = (acc_hbyte_p) p;
4865 acc_uint32l_t x;
4866 x = (acc_uint32l_t) (v >> 0);
4867 b[0] = (unsigned char) ((x >> 0) & 0xff);
4868 b[1] = (unsigned char) ((x >> 8) & 0xff);
4869 b[2] = (unsigned char) ((x >> 16) & 0xff);
4870 b[3] = (unsigned char) ((x >> 24) & 0xff);
4871 x = (acc_uint32l_t) (v >> 32);
4872 b[4] = (unsigned char) ((x >> 0) & 0xff);
4873 b[5] = (unsigned char) ((x >> 8) & 0xff);
4874 b[6] = (unsigned char) ((x >> 16) & 0xff);
4875 b[7] = (unsigned char) ((x >> 24) & 0xff);
4876 #endif
4878 #endif
4879 #endif
4880 #if defined(ACC_WANT_ACCLIB_VGET)
4881 # undef ACC_WANT_ACCLIB_VGET
4882 #define __ACCLIB_VGET_CH_INCLUDED 1
4883 #if !defined(ACCLIB_PUBLIC)
4884 # define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
4885 #endif
4886 #if !defined(ACCLIB_PUBLIC_NOINLINE)
4887 # if !defined(__acc_noinline)
4888 # define ACCLIB_PUBLIC_NOINLINE(r,f) r __ACCLIB_FUNCNAME(f)
4889 # elif (ACC_CC_GNUC >= 0x030400ul) || (ACC_CC_LLVM)
4890 # define ACCLIB_PUBLIC_NOINLINE(r,f) __acc_noinline __attribute__((__used__)) r __ACCLIB_FUNCNAME(f)
4891 # else
4892 # define ACCLIB_PUBLIC_NOINLINE(r,f) __acc_noinline r __ACCLIB_FUNCNAME(f)
4893 # endif
4894 #endif
4895 #if (ACC_CC_GNUC >= 0x030400ul) || (ACC_CC_LLVM)
4896 extern void* volatile __acc_vget_ptr;
4897 void* volatile __attribute__((__used__)) __acc_vget_ptr = (void *) 0;
4898 #else
4899 extern void* volatile __acc_vget_ptr;
4900 void* volatile __acc_vget_ptr = (void *) 0;
4901 #endif
4902 #ifndef __ACCLIB_VGET_BODY
4903 #define __ACCLIB_VGET_BODY(T) \
4904 if __acc_unlikely(__acc_vget_ptr) { \
4905 * (T *) __acc_vget_ptr = v; \
4906 * (int *) __acc_vget_ptr = expr; \
4907 v = * (T *) __acc_vget_ptr; \
4909 return v;
4910 #endif
4911 ACCLIB_PUBLIC_NOINLINE(short, acc_vget_short) (short v, int expr)
4913 __ACCLIB_VGET_BODY(short)
4915 ACCLIB_PUBLIC_NOINLINE(int, acc_vget_int) (int v, int expr)
4917 __ACCLIB_VGET_BODY(int)
4919 ACCLIB_PUBLIC_NOINLINE(long, acc_vget_long) (long v, int expr)
4921 __ACCLIB_VGET_BODY(long)
4923 #if defined(acc_int64l_t)
4924 ACCLIB_PUBLIC_NOINLINE(acc_int64l_t, acc_vget_acc_int64l_t) (acc_int64l_t v, int expr)
4926 __ACCLIB_VGET_BODY(acc_int64l_t)
4928 #endif
4929 ACCLIB_PUBLIC_NOINLINE(acc_hsize_t, acc_vget_acc_hsize_t) (acc_hsize_t v, int expr)
4931 __ACCLIB_VGET_BODY(acc_hsize_t)
4933 #if !defined(ACC_CFG_NO_FLOAT)
4934 ACCLIB_PUBLIC_NOINLINE(float, acc_vget_float) (float v, int expr)
4936 __ACCLIB_VGET_BODY(float)
4938 #endif
4939 #if !defined(ACC_CFG_NO_DOUBLE)
4940 ACCLIB_PUBLIC_NOINLINE(double, acc_vget_double) (double v, int expr)
4942 __ACCLIB_VGET_BODY(double)
4944 #endif
4945 ACCLIB_PUBLIC_NOINLINE(acc_hvoid_p, acc_vget_acc_hvoid_p) (acc_hvoid_p v, int expr)
4947 __ACCLIB_VGET_BODY(acc_hvoid_p)
4949 #if (ACC_ARCH_I086 && ACC_CC_TURBOC && (__TURBOC__ == 0x0295)) && !defined(__cplusplus)
4950 ACCLIB_PUBLIC_NOINLINE(acc_hvoid_p, acc_vget_acc_hvoid_cp) (const acc_hvoid_p vv, int expr)
4952 acc_hvoid_p v = (acc_hvoid_p) vv;
4953 __ACCLIB_VGET_BODY(acc_hvoid_p)
4955 #else
4956 ACCLIB_PUBLIC_NOINLINE(const acc_hvoid_p, acc_vget_acc_hvoid_cp) (const acc_hvoid_p v, int expr)
4958 __ACCLIB_VGET_BODY(const acc_hvoid_p)
4960 #endif
4961 #endif
4962 #if defined(ACC_WANT_ACCLIB_HMEMCPY)
4963 # undef ACC_WANT_ACCLIB_HMEMCPY
4964 #define __ACCLIB_HMEMCPY_CH_INCLUDED 1
4965 #if !defined(ACCLIB_PUBLIC)
4966 # define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
4967 #endif
4968 ACCLIB_PUBLIC(int, acc_hmemcmp) (const acc_hvoid_p s1, const acc_hvoid_p s2, acc_hsize_t len)
4970 #if (ACC_HAVE_MM_HUGE_PTR) || !defined(HAVE_MEMCMP)
4971 const acc_hbyte_p p1 = (const acc_hbyte_p) s1;
4972 const acc_hbyte_p p2 = (const acc_hbyte_p) s2;
4973 if __acc_likely(len > 0) do
4975 int d = *p1 - *p2;
4976 if (d != 0)
4977 return d;
4978 p1++; p2++;
4979 } while __acc_likely(--len > 0);
4980 return 0;
4981 #else
4982 return memcmp(s1, s2, len);
4983 #endif
4985 ACCLIB_PUBLIC(acc_hvoid_p, acc_hmemcpy) (acc_hvoid_p dest, const acc_hvoid_p src, acc_hsize_t len)
4987 #if (ACC_HAVE_MM_HUGE_PTR) || !defined(HAVE_MEMCPY)
4988 acc_hbyte_p p1 = (acc_hbyte_p) dest;
4989 const acc_hbyte_p p2 = (const acc_hbyte_p) src;
4990 if (!(len > 0) || p1 == p2)
4991 return dest;
4993 *p1++ = *p2++;
4994 while __acc_likely(--len > 0);
4995 return dest;
4996 #else
4997 return memcpy(dest, src, len);
4998 #endif
5000 ACCLIB_PUBLIC(acc_hvoid_p, acc_hmemmove) (acc_hvoid_p dest, const acc_hvoid_p src, acc_hsize_t len)
5002 #if (ACC_HAVE_MM_HUGE_PTR) || !defined(HAVE_MEMMOVE)
5003 acc_hbyte_p p1 = (acc_hbyte_p) dest;
5004 const acc_hbyte_p p2 = (const acc_hbyte_p) src;
5005 if (!(len > 0) || p1 == p2)
5006 return dest;
5007 if (p1 < p2)
5010 *p1++ = *p2++;
5011 while __acc_likely(--len > 0);
5013 else
5015 p1 += len;
5016 p2 += len;
5018 *--p1 = *--p2;
5019 while __acc_likely(--len > 0);
5021 return dest;
5022 #else
5023 return memmove(dest, src, len);
5024 #endif
5026 ACCLIB_PUBLIC(acc_hvoid_p, acc_hmemset) (acc_hvoid_p s, int c, acc_hsize_t len)
5028 #if (ACC_HAVE_MM_HUGE_PTR) || !defined(HAVE_MEMSET)
5029 acc_hbyte_p p = (acc_hbyte_p) s;
5030 if __acc_likely(len > 0) do
5031 *p++ = (unsigned char) c;
5032 while __acc_likely(--len > 0);
5033 return s;
5034 #else
5035 return memset(s, c, len);
5036 #endif
5038 #endif
5039 #if defined(ACC_WANT_ACCLIB_RAND)
5040 # undef ACC_WANT_ACCLIB_RAND
5041 #define __ACCLIB_RAND_CH_INCLUDED 1
5042 #if !defined(ACCLIB_PUBLIC)
5043 # define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
5044 #endif
5045 ACCLIB_PUBLIC(void, acc_srand31) (acc_rand31_p r, acc_uint32l_t seed)
5047 r->seed = seed & ACC_UINT32_C(0xffffffff);
5049 ACCLIB_PUBLIC(acc_uint32l_t, acc_rand31) (acc_rand31_p r)
5051 r->seed = r->seed * ACC_UINT32_C(1103515245) + 12345;
5052 r->seed &= ACC_UINT32_C(0x7fffffff);
5053 return r->seed;
5055 #if defined(acc_int64l_t)
5056 ACCLIB_PUBLIC(void, acc_srand48) (acc_rand48_p r, acc_uint32l_t seed)
5058 r->seed = seed & ACC_UINT32_C(0xffffffff);
5059 r->seed <<= 16; r->seed |= 0x330e;
5061 ACCLIB_PUBLIC(acc_uint32l_t, acc_rand48) (acc_rand48_p r)
5063 r->seed = r->seed * ACC_UINT64_C(25214903917) + 11;
5064 r->seed &= ACC_UINT64_C(0xffffffffffff);
5065 return (acc_uint32l_t) (r->seed >> 17);
5067 ACCLIB_PUBLIC(acc_uint32l_t, acc_rand48_r32) (acc_rand48_p r)
5069 r->seed = r->seed * ACC_UINT64_C(25214903917) + 11;
5070 r->seed &= ACC_UINT64_C(0xffffffffffff);
5071 return (acc_uint32l_t) (r->seed >> 16);
5073 #endif
5074 #if defined(acc_int64l_t)
5075 ACCLIB_PUBLIC(void, acc_srand64) (acc_rand64_p r, acc_uint64l_t seed)
5077 r->seed = seed & ACC_UINT64_C(0xffffffffffffffff);
5079 ACCLIB_PUBLIC(acc_uint32l_t, acc_rand64) (acc_rand64_p r)
5081 r->seed = r->seed * ACC_UINT64_C(6364136223846793005) + 1;
5082 #if (ACC_SIZEOF_ACC_INT64L_T > 8)
5083 r->seed &= ACC_UINT64_C(0xffffffffffffffff);
5084 #endif
5085 return (acc_uint32l_t) (r->seed >> 33);
5087 ACCLIB_PUBLIC(acc_uint32l_t, acc_rand64_r32) (acc_rand64_p r)
5089 r->seed = r->seed * ACC_UINT64_C(6364136223846793005) + 1;
5090 #if (ACC_SIZEOF_ACC_INT64L_T > 8)
5091 r->seed &= ACC_UINT64_C(0xffffffffffffffff);
5092 #endif
5093 return (acc_uint32l_t) (r->seed >> 32);
5095 #endif
5096 ACCLIB_PUBLIC(void, acc_srandmt) (acc_randmt_p r, acc_uint32l_t seed)
5098 unsigned i = 0;
5099 do {
5100 r->s[i++] = (seed &= ACC_UINT32_C(0xffffffff));
5101 seed ^= seed >> 30;
5102 seed = seed * ACC_UINT32_C(0x6c078965) + i;
5103 } while (i != 624);
5104 r->n = i;
5106 ACCLIB_PUBLIC(acc_uint32l_t, acc_randmt) (acc_randmt_p r)
5108 return (__ACCLIB_FUNCNAME(acc_randmt_r32)(r)) >> 1;
5110 ACCLIB_PUBLIC(acc_uint32l_t, acc_randmt_r32) (acc_randmt_p r)
5112 acc_uint32l_t v;
5113 if __acc_unlikely(r->n == 624) {
5114 int i = 0, j;
5115 r->n = 0;
5116 do {
5117 j = i - 623; if (j < 0) j += 624;
5118 v = (r->s[i] & ACC_UINT32_C(0x80000000)) ^ (r->s[j] & ACC_UINT32_C(0x7fffffff));
5119 j = i - 227; if (j < 0) j += 624;
5120 r->s[i] = r->s[j] ^ (v >> 1);
5121 if (v & 1) r->s[i] ^= ACC_UINT32_C(0x9908b0df);
5122 } while (++i != 624);
5124 v = r->s[r->n++];
5125 v ^= v >> 11; v ^= (v & ACC_UINT32_C(0x013a58ad)) << 7;
5126 v ^= (v & ACC_UINT32_C(0x0001df8c)) << 15; v ^= v >> 18;
5127 return v;
5129 #if defined(acc_int64l_t)
5130 ACCLIB_PUBLIC(void, acc_srandmt64) (acc_randmt64_p r, acc_uint64l_t seed)
5132 unsigned i = 0;
5133 do {
5134 r->s[i++] = (seed &= ACC_UINT64_C(0xffffffffffffffff));
5135 seed ^= seed >> 62;
5136 seed = seed * ACC_UINT64_C(0x5851f42d4c957f2d) + i;
5137 } while (i != 312);
5138 r->n = i;
5140 #if 0
5141 ACCLIB_PUBLIC(acc_uint32l_t, acc_randmt64) (acc_randmt64_p r)
5143 acc_uint64l_t v;
5144 v = (__ACCLIB_FUNCNAME(acc_randmt64_r64)(r)) >> 33;
5145 return (acc_uint32l_t) v;
5147 #endif
5148 ACCLIB_PUBLIC(acc_uint64l_t, acc_randmt64_r64) (acc_randmt64_p r)
5150 acc_uint64l_t v;
5151 if __acc_unlikely(r->n == 312) {
5152 int i = 0, j;
5153 r->n = 0;
5154 do {
5155 j = i - 311; if (j < 0) j += 312;
5156 v = (r->s[i] & ACC_UINT64_C(0xffffffff80000000)) ^ (r->s[j] & ACC_UINT64_C(0x7fffffff));
5157 j = i - 156; if (j < 0) j += 312;
5158 r->s[i] = r->s[j] ^ (v >> 1);
5159 if (v & 1) r->s[i] ^= ACC_UINT64_C(0xb5026f5aa96619e9);
5160 } while (++i != 312);
5162 v = r->s[r->n++];
5163 v ^= (v & ACC_UINT64_C(0xaaaaaaaaa0000000)) >> 29;
5164 v ^= (v & ACC_UINT64_C(0x38eb3ffff6d3)) << 17;
5165 v ^= (v & ACC_UINT64_C(0x7ffbf77)) << 37;
5166 return v ^ (v >> 43);
5168 #endif
5169 #endif
5170 #if defined(ACC_WANT_ACCLIB_RDTSC)
5171 # undef ACC_WANT_ACCLIB_RDTSC
5172 #define __ACCLIB_RDTSC_CH_INCLUDED 1
5173 #if !defined(ACCLIB_PUBLIC)
5174 # define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
5175 #endif
5176 #if defined(acc_int32e_t)
5177 #if (ACC_OS_WIN32 && ACC_CC_PELLESC && (__POCC__ >= 290))
5178 # pragma warn(push)
5179 # pragma warn(disable:2007)
5180 #endif
5181 #if (ACC_ARCH_AMD64 || ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
5182 #if (ACC_ARCH_AMD64 && ACC_CC_PATHSCALE)
5183 # define __ACCLIB_RDTSC_REGS : : "c" (t) : "cc", "memory", "rax", "rdx"
5184 #elif (ACC_ARCH_AMD64 && ACC_CC_INTELC)
5185 # define __ACCLIB_RDTSC_REGS : : "r" (t) : "memory", "rax", "rdx"
5186 #elif (ACC_ARCH_AMD64)
5187 # define __ACCLIB_RDTSC_REGS : : "r" (t) : "cc", "memory", "rax", "rdx"
5188 #elif (ACC_ARCH_I386 && ACC_CC_GNUC && (ACC_CC_GNUC < 0x020000ul))
5189 # define __ACCLIB_RDTSC_REGS : : "r" (t) : "ax", "dx"
5190 #elif (ACC_ARCH_I386 && ACC_CC_INTELC)
5191 # define __ACCLIB_RDTSC_REGS : : "r" (t) : "memory", "eax", "edx"
5192 #elif (ACC_ARCH_I386 && ACC_CC_PATHSCALE)
5193 # define __ACCLIB_RDTSC_REGS : : "c" (t) : "memory", "eax", "edx"
5194 #else
5195 # define __ACCLIB_RDTSC_REGS : : "r" (t) : "cc", "memory", "eax", "edx"
5196 #endif
5197 #endif
5198 ACCLIB_PUBLIC(int, acc_tsc_read) (acc_uint32e_t* t)
5200 #if (ACC_ARCH_AMD64 || ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
5201 __asm__ __volatile__(
5202 "clc \n" ".byte 0x0f,0x31\n"
5203 "movl %%eax,(%0)\n" "movl %%edx,4(%0)\n"
5204 __ACCLIB_RDTSC_REGS
5206 return 0;
5207 #elif (ACC_ARCH_I386) && (ACC_ASM_SYNTAX_MSC)
5208 ACC_UNUSED(t);
5209 __asm {
5210 mov ecx, t
5212 # if (ACC_CC_MSC && (_MSC_VER < 1200))
5213 _emit 0x0f
5214 _emit 0x31
5215 # else
5216 rdtsc
5217 # endif
5218 mov [ecx], eax
5219 mov [ecx+4], edx
5221 return 0;
5222 #else
5223 t[0] = t[1] = 0; return -1;
5224 #endif
5226 #if (ACC_OS_WIN32 && ACC_CC_PELLESC && (__POCC__ >= 290))
5227 # pragma warn(pop)
5228 #endif
5229 #endif
5230 #endif
5231 #if defined(ACC_WANT_ACCLIB_DOSALLOC)
5232 # undef ACC_WANT_ACCLIB_DOSALLOC
5233 #define __ACCLIB_DOSALLOC_CH_INCLUDED 1
5234 #if !defined(ACCLIB_PUBLIC)
5235 # define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
5236 #endif
5237 #if (ACC_OS_OS216)
5238 ACC_EXTERN_C unsigned short __far __pascal DosAllocHuge(unsigned short, unsigned short, unsigned short __far *, unsigned short, unsigned short);
5239 ACC_EXTERN_C unsigned short __far __pascal DosFreeSeg(unsigned short);
5240 #endif
5241 #if (ACC_OS_DOS16 || ACC_OS_WIN16)
5242 #if !defined(ACC_CC_AZTECC)
5243 ACCLIB_PUBLIC(void __far*, acc_dos_alloc) (unsigned long size)
5245 void __far* p = 0;
5246 union REGS ri, ro;
5247 if ((long)size <= 0)
5248 return p;
5249 size = (size + 15) >> 4;
5250 if (size > 0xffffu)
5251 return p;
5252 ri.x.ax = 0x4800;
5253 ri.x.bx = (unsigned short) size;
5254 int86(0x21, &ri, &ro);
5255 if ((ro.x.cflag & 1) == 0)
5256 p = (void __far*) ACC_PTR_MK_FP(ro.x.ax, 0);
5257 return p;
5259 ACCLIB_PUBLIC(int, acc_dos_free) (void __far* p)
5261 union REGS ri, ro;
5262 struct SREGS rs;
5263 if (!p)
5264 return 0;
5265 if (ACC_PTR_FP_OFF(p) != 0)
5266 return -1;
5267 segread(&rs);
5268 ri.x.ax = 0x4900;
5269 rs.es = ACC_PTR_FP_SEG(p);
5270 int86x(0x21, &ri, &ro, &rs);
5271 if (ro.x.cflag & 1)
5272 return -1;
5273 return 0;
5275 #endif
5276 #endif
5277 #if (ACC_OS_OS216)
5278 ACCLIB_PUBLIC(void __far*, acc_dos_alloc) (unsigned long size)
5280 void __far* p = 0;
5281 unsigned short sel = 0;
5282 if ((long)size <= 0)
5283 return p;
5284 if (DosAllocHuge((unsigned short)(size >> 16), (unsigned short)size, &sel, 0, 0) == 0)
5285 p = (void __far*) ACC_PTR_MK_FP(sel, 0);
5286 return p;
5288 ACCLIB_PUBLIC(int, acc_dos_free) (void __far* p)
5290 if (!p)
5291 return 0;
5292 if (ACC_PTR_FP_OFF(p) != 0)
5293 return -1;
5294 if (DosFreeSeg(ACC_PTR_FP_SEG(p)) != 0)
5295 return -1;
5296 return 0;
5298 #endif
5299 #endif
5300 #if defined(ACC_WANT_ACCLIB_HALLOC)
5301 # undef ACC_WANT_ACCLIB_HALLOC
5302 #define __ACCLIB_HALLOC_CH_INCLUDED 1
5303 #if !defined(ACCLIB_PUBLIC)
5304 # define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
5305 #endif
5306 #if (ACC_HAVE_MM_HUGE_PTR)
5307 #if 1 && (ACC_OS_DOS16 && defined(BLX286))
5308 # define __ACCLIB_HALLOC_USE_DAH 1
5309 #elif 1 && (ACC_OS_DOS16 && defined(DOSX286))
5310 # define __ACCLIB_HALLOC_USE_DAH 1
5311 #elif 1 && (ACC_OS_OS216)
5312 # define __ACCLIB_HALLOC_USE_DAH 1
5313 #elif 1 && (ACC_OS_WIN16)
5314 # define __ACCLIB_HALLOC_USE_GA 1
5315 #elif 1 && (ACC_OS_DOS16) && (ACC_CC_BORLANDC) && defined(__DPMI16__)
5316 # define __ACCLIB_HALLOC_USE_GA 1
5317 #endif
5318 #endif
5319 #if (__ACCLIB_HALLOC_USE_DAH)
5320 #if 0 && (ACC_OS_OS216)
5321 #include <os2.h>
5322 #else
5323 ACC_EXTERN_C unsigned short __far __pascal DosAllocHuge(unsigned short, unsigned short, unsigned short __far *, unsigned short, unsigned short);
5324 ACC_EXTERN_C unsigned short __far __pascal DosFreeSeg(unsigned short);
5325 #endif
5326 #endif
5327 #if (__ACCLIB_HALLOC_USE_GA)
5328 #if 0
5329 #define STRICT 1
5330 #include <windows.h>
5331 #else
5332 ACC_EXTERN_C const void __near* __far __pascal GlobalAlloc(unsigned, unsigned long);
5333 ACC_EXTERN_C const void __near* __far __pascal GlobalFree(const void __near*);
5334 ACC_EXTERN_C unsigned long __far __pascal GlobalHandle(unsigned);
5335 ACC_EXTERN_C void __far* __far __pascal GlobalLock(const void __near*);
5336 ACC_EXTERN_C int __far __pascal GlobalUnlock(const void __near*);
5337 #endif
5338 #endif
5339 ACCLIB_PUBLIC(acc_hvoid_p, acc_halloc) (acc_hsize_t size)
5341 acc_hvoid_p p = 0;
5342 if (!(size > 0))
5343 return p;
5344 #if 0 && defined(__palmos__)
5345 p = MemPtrNew(size);
5346 #elif !defined(ACC_HAVE_MM_HUGE_PTR)
5347 if (size < (size_t) -1)
5348 p = malloc((size_t) size);
5349 #else
5350 if ((long)size <= 0)
5351 return p;
5353 #if (__ACCLIB_HALLOC_USE_DAH)
5354 unsigned short sel = 0;
5355 if (DosAllocHuge((unsigned short)(size >> 16), (unsigned short)size, &sel, 0, 0) == 0)
5356 p = (acc_hvoid_p) ACC_PTR_MK_FP(sel, 0);
5357 #elif (__ACCLIB_HALLOC_USE_GA)
5358 const void __near* h = GlobalAlloc(2, size);
5359 if (h) {
5360 p = GlobalLock(h);
5361 if (p && ACC_PTR_FP_OFF(p) != 0) {
5362 GlobalUnlock(h);
5363 p = 0;
5365 if (!p)
5366 GlobalFree(h);
5368 #elif (ACC_CC_MSC && (_MSC_VER >= 700))
5369 p = _halloc(size, 1);
5370 #elif (ACC_CC_MSC || ACC_CC_WATCOMC)
5371 p = halloc(size, 1);
5372 #elif (ACC_CC_DMC || ACC_CC_SYMANTECC || ACC_CC_ZORTECHC)
5373 p = farmalloc(size);
5374 #elif (ACC_CC_BORLANDC || ACC_CC_TURBOC)
5375 p = farmalloc(size);
5376 #elif defined(ACC_CC_AZTECC)
5377 p = lmalloc(size);
5378 #else
5379 if (size < (size_t) -1)
5380 p = malloc((size_t) size);
5381 #endif
5383 #endif
5384 return p;
5386 ACCLIB_PUBLIC(void, acc_hfree) (acc_hvoid_p p)
5388 if (!p)
5389 return;
5390 #if 0 && defined(__palmos__)
5391 MemPtrFree(p);
5392 #elif !defined(ACC_HAVE_MM_HUGE_PTR)
5393 free(p);
5394 #else
5395 #if (__ACCLIB_HALLOC_USE_DAH)
5396 if (ACC_PTR_FP_OFF(p) == 0)
5397 DosFreeSeg((unsigned short) ACC_PTR_FP_SEG(p));
5398 #elif (__ACCLIB_HALLOC_USE_GA)
5399 if (ACC_PTR_FP_OFF(p) == 0) {
5400 const void __near* h = (const void __near*) (unsigned) GlobalHandle(ACC_PTR_FP_SEG(p));
5401 if (h) {
5402 GlobalUnlock(h);
5403 GlobalFree(h);
5406 #elif (ACC_CC_MSC && (_MSC_VER >= 700))
5407 _hfree(p);
5408 #elif (ACC_CC_MSC || ACC_CC_WATCOMC)
5409 hfree(p);
5410 #elif (ACC_CC_DMC || ACC_CC_SYMANTECC || ACC_CC_ZORTECHC)
5411 farfree((void __far*) p);
5412 #elif (ACC_CC_BORLANDC || ACC_CC_TURBOC)
5413 farfree((void __far*) p);
5414 #elif defined(ACC_CC_AZTECC)
5415 lfree(p);
5416 #else
5417 free(p);
5418 #endif
5419 #endif
5421 #endif
5422 #if defined(ACC_WANT_ACCLIB_HFREAD)
5423 # undef ACC_WANT_ACCLIB_HFREAD
5424 #define __ACCLIB_HFREAD_CH_INCLUDED 1
5425 #if !defined(ACCLIB_PUBLIC)
5426 # define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
5427 #endif
5428 ACCLIB_PUBLIC(acc_hsize_t, acc_hfread) (void* vfp, acc_hvoid_p buf, acc_hsize_t size)
5430 FILE* fp = (FILE *) vfp;
5431 #if (ACC_HAVE_MM_HUGE_PTR)
5432 #if (ACC_MM_TINY || ACC_MM_SMALL || ACC_MM_MEDIUM)
5433 #define __ACCLIB_REQUIRE_HMEMCPY_CH 1
5434 unsigned char tmp[512];
5435 acc_hsize_t l = 0;
5436 while (l < size)
5438 size_t n = size - l > sizeof(tmp) ? sizeof(tmp) : (size_t) (size - l);
5439 n = fread(tmp, 1, n, fp);
5440 if (n == 0)
5441 break;
5442 __ACCLIB_FUNCNAME(acc_hmemcpy)((acc_hbyte_p)buf + l, tmp, (acc_hsize_t)n);
5443 l += n;
5445 return l;
5446 #elif (ACC_MM_COMPACT || ACC_MM_LARGE || ACC_MM_HUGE)
5447 acc_hbyte_p b = (acc_hbyte_p) buf;
5448 acc_hsize_t l = 0;
5449 while (l < size)
5451 size_t n;
5452 n = ACC_PTR_FP_OFF(b); n = (n <= 1) ? 0x8000u : (0u - n);
5453 if ((acc_hsize_t) n > size - l)
5454 n = (size_t) (size - l);
5455 n = fread((void __far*)b, 1, n, fp);
5456 if (n == 0)
5457 break;
5458 b += n; l += n;
5460 return l;
5461 #else
5462 # error "unknown memory model"
5463 #endif
5464 #else
5465 return fread(buf, 1, size, fp);
5466 #endif
5468 ACCLIB_PUBLIC(acc_hsize_t, acc_hfwrite) (void* vfp, const acc_hvoid_p buf, acc_hsize_t size)
5470 FILE* fp = (FILE *) vfp;
5471 #if (ACC_HAVE_MM_HUGE_PTR)
5472 #if (ACC_MM_TINY || ACC_MM_SMALL || ACC_MM_MEDIUM)
5473 #define __ACCLIB_REQUIRE_HMEMCPY_CH 1
5474 unsigned char tmp[512];
5475 acc_hsize_t l = 0;
5476 while (l < size)
5478 size_t n = size - l > sizeof(tmp) ? sizeof(tmp) : (size_t) (size - l);
5479 __ACCLIB_FUNCNAME(acc_hmemcpy)(tmp, (const acc_hbyte_p)buf + l, (acc_hsize_t)n);
5480 n = fwrite(tmp, 1, n, fp);
5481 if (n == 0)
5482 break;
5483 l += n;
5485 return l;
5486 #elif (ACC_MM_COMPACT || ACC_MM_LARGE || ACC_MM_HUGE)
5487 const acc_hbyte_p b = (const acc_hbyte_p) buf;
5488 acc_hsize_t l = 0;
5489 while (l < size)
5491 size_t n;
5492 n = ACC_PTR_FP_OFF(b); n = (n <= 1) ? 0x8000u : (0u - n);
5493 if ((acc_hsize_t) n > size - l)
5494 n = (size_t) (size - l);
5495 n = fwrite((void __far*)b, 1, n, fp);
5496 if (n == 0)
5497 break;
5498 b += n; l += n;
5500 return l;
5501 #else
5502 # error "unknown memory model"
5503 #endif
5504 #else
5505 return fwrite(buf, 1, size, fp);
5506 #endif
5508 #endif
5509 #if defined(ACC_WANT_ACCLIB_HSREAD)
5510 # undef ACC_WANT_ACCLIB_HSREAD
5511 #define __ACCLIB_HSREAD_CH_INCLUDED 1
5512 #if !defined(ACCLIB_PUBLIC)
5513 # define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
5514 #endif
5515 ACCLIB_PUBLIC(long, acc_safe_hread) (int fd, acc_hvoid_p buf, long size)
5517 acc_hbyte_p b = (acc_hbyte_p) buf;
5518 long l = 0;
5519 int saved_errno;
5520 saved_errno = errno;
5521 while (l < size)
5523 long n = size - l;
5524 #if (ACC_HAVE_MM_HUGE_PTR)
5525 # define __ACCLIB_REQUIRE_HREAD_CH 1
5526 errno = 0; n = acc_hread(fd, b, n);
5527 #elif (ACC_OS_DOS32) && defined(__DJGPP__)
5528 errno = 0; n = _read(fd, b, n);
5529 #else
5530 errno = 0; n = read(fd, b, n);
5531 #endif
5532 if (n == 0)
5533 break;
5534 if (n < 0) {
5535 #if defined(EAGAIN)
5536 if (errno == (EAGAIN)) continue;
5537 #endif
5538 #if defined(EINTR)
5539 if (errno == (EINTR)) continue;
5540 #endif
5541 if (errno == 0) errno = 1;
5542 return l;
5544 b += n; l += n;
5546 errno = saved_errno;
5547 return l;
5549 ACCLIB_PUBLIC(long, acc_safe_hwrite) (int fd, const acc_hvoid_p buf, long size)
5551 const acc_hbyte_p b = (const acc_hbyte_p) buf;
5552 long l = 0;
5553 int saved_errno;
5554 saved_errno = errno;
5555 while (l < size)
5557 long n = size - l;
5558 #if (ACC_HAVE_MM_HUGE_PTR)
5559 # define __ACCLIB_REQUIRE_HREAD_CH 1
5560 errno = 0; n = acc_hwrite(fd, b, n);
5561 #elif (ACC_OS_DOS32) && defined(__DJGPP__)
5562 errno = 0; n = _write(fd, b, n);
5563 #else
5564 errno = 0; n = write(fd, b, n);
5565 #endif
5566 if (n == 0)
5567 break;
5568 if (n < 0) {
5569 #if defined(EAGAIN)
5570 if (errno == (EAGAIN)) continue;
5571 #endif
5572 #if defined(EINTR)
5573 if (errno == (EINTR)) continue;
5574 #endif
5575 if (errno == 0) errno = 1;
5576 return l;
5578 b += n; l += n;
5580 errno = saved_errno;
5581 return l;
5583 #endif
5584 #if defined(ACC_WANT_ACCLIB_PCLOCK)
5585 # undef ACC_WANT_ACCLIB_PCLOCK
5586 #define __ACCLIB_PCLOCK_CH_INCLUDED 1
5587 #if !defined(ACCLIB_PUBLIC)
5588 # define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
5589 #endif
5590 #if defined(HAVE_GETTIMEOFDAY)
5591 #ifndef acc_pclock_read_gettimeofday
5592 #define acc_pclock_read_gettimeofday acc_pclock_read_gettimeofday
5593 #endif
5594 static int acc_pclock_read_gettimeofday(acc_pclock_handle_p h, acc_pclock_p c)
5596 struct timeval tv;
5597 if (gettimeofday(&tv, 0) != 0)
5598 return -1;
5599 #if defined(acc_int64l_t)
5600 c->tv_sec = tv.tv_sec;
5601 #else
5602 c->tv_sec_high = 0;
5603 c->tv_sec_low = tv.tv_sec;
5604 #endif
5605 c->tv_nsec = (acc_uint32l_t) (tv.tv_usec * 1000u);
5606 ACC_UNUSED(h); return 0;
5608 #endif
5609 #if defined(CLOCKS_PER_SEC)
5610 #ifndef acc_pclock_read_clock
5611 #define acc_pclock_read_clock acc_pclock_read_clock
5612 #endif
5613 static int acc_pclock_read_clock(acc_pclock_handle_p h, acc_pclock_p c)
5615 clock_t ticks;
5616 double secs;
5617 #if defined(acc_int64l_t)
5618 acc_uint64l_t nsecs;
5619 ticks = clock();
5620 secs = (double)ticks / (CLOCKS_PER_SEC);
5621 nsecs = (acc_uint64l_t) (secs * 1000000000.0);
5622 c->tv_sec = (acc_int64l_t) (nsecs / 1000000000ul);
5623 c->tv_nsec = (acc_uint32l_t) (nsecs % 1000000000ul);
5624 #else
5625 ticks = clock();
5626 secs = (double)ticks / (CLOCKS_PER_SEC);
5627 c->tv_sec_high = 0;
5628 c->tv_sec_low = (acc_uint32l_t) (secs + 0.5);
5629 c->tv_nsec = 0;
5630 #endif
5631 ACC_UNUSED(h); return 0;
5633 #endif
5634 #if (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__) && defined(UCLOCKS_PER_SEC)
5635 #ifndef acc_pclock_read_uclock
5636 #define acc_pclock_read_uclock acc_pclock_read_uclock
5637 #endif
5638 static int acc_pclock_read_uclock(acc_pclock_handle_p h, acc_pclock_p c)
5640 acc_uint64l_t ticks;
5641 double secs;
5642 acc_uint64l_t nsecs;
5643 ticks = uclock();
5644 secs = (double)ticks / (UCLOCKS_PER_SEC);
5645 nsecs = (acc_uint64l_t) (secs * 1000000000.0);
5646 c->tv_sec = nsecs / 1000000000ul;
5647 c->tv_nsec = (acc_uint32l_t) (nsecs % 1000000000ul);
5648 ACC_UNUSED(h); return 0;
5650 #endif
5651 #if 0 && defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID) && defined(acc_int64l_t)
5652 #ifndef acc_pclock_read_clock_gettime_p
5653 #define acc_pclock_read_clock_gettime_p acc_pclock_read_clock_gettime_p
5654 #endif
5655 static int acc_pclock_read_clock_gettime_p(acc_pclock_handle_p h, acc_pclock_p c)
5657 struct timespec ts;
5658 if (clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts) != 0)
5659 return -1;
5660 c->tv_sec = ts.tv_sec;
5661 c->tv_nsec = ts.tv_nsec;
5662 ACC_UNUSED(h); return 0;
5664 #endif
5665 #if (ACC_OS_CYGWIN || ACC_OS_WIN32 || ACC_OS_WIN64) && (ACC_HAVE_WINDOWS_H) && defined(acc_int64l_t)
5666 #ifndef acc_pclock_read_getprocesstimes
5667 #define acc_pclock_read_getprocesstimes acc_pclock_read_getprocesstimes
5668 #endif
5669 static int acc_pclock_read_getprocesstimes(acc_pclock_handle_p h, acc_pclock_p c)
5671 FILETIME ct, et, kt, ut;
5672 acc_uint64l_t ticks;
5673 if (GetProcessTimes(GetCurrentProcess(), &ct, &et, &kt, &ut) == 0)
5674 return -1;
5675 ticks = ((acc_uint64l_t)ut.dwHighDateTime << 32) | ut.dwLowDateTime;
5676 if __acc_unlikely(h->ticks_base == 0)
5677 h->ticks_base = ticks;
5678 else
5679 ticks -= h->ticks_base;
5680 c->tv_sec = (acc_int64l_t) (ticks / 10000000ul);
5681 c->tv_nsec = (acc_uint32l_t)(ticks % 10000000ul) * 100u;
5682 ACC_UNUSED(h); return 0;
5684 #endif
5685 #if defined(HAVE_GETRUSAGE) && defined(RUSAGE_SELF)
5686 #ifndef acc_pclock_read_getrusage
5687 #define acc_pclock_read_getrusage acc_pclock_read_getrusage
5688 #endif
5689 static int acc_pclock_read_getrusage(acc_pclock_handle_p h, acc_pclock_p c)
5691 struct rusage ru;
5692 if (getrusage(RUSAGE_SELF, &ru) != 0)
5693 return -1;
5694 #if defined(acc_int64l_t)
5695 c->tv_sec = ru.ru_utime.tv_sec;
5696 #else
5697 c->tv_sec_high = 0;
5698 c->tv_sec_low = ru.ru_utime.tv_sec;
5699 #endif
5700 c->tv_nsec = (acc_uint32l_t) (ru.ru_utime.tv_usec * 1000u);
5701 ACC_UNUSED(h); return 0;
5703 #endif
5704 #if (__ACCLIB_PCLOCK_USE_PERFCTR)
5705 #ifndef acc_pclock_read_perfctr
5706 #define acc_pclock_read_perfctr acc_pclock_read_perfctr
5707 #endif
5708 static int acc_pclock_read_perfctr(acc_pclock_handle_p h, acc_pclock_p c)
5710 acc_perfctr_clock_t pcc;
5711 double secs;
5712 acc_uint64l_t nsecs;
5713 acc_perfctr_read(&h->pch, &pcc);
5714 if __acc_unlikely(h->ticks_base == 0)
5715 h->ticks_base = pcc.tsc;
5716 else
5717 pcc.tsc -= h->ticks_base;
5718 secs = pcc.tsc * h->pch.tsc_to_seconds;
5719 nsecs = (acc_uint64l_t) (secs * 1000000000.0);
5720 c->tv_sec = nsecs / 1000000000ul;
5721 c->tv_nsec = (acc_uint32l_t) (nsecs % 1000000000ul);
5722 ACC_UNUSED(h); return 0;
5724 #endif
5725 #if 0 && defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_THREAD_CPUTIME_ID) && defined(acc_int64l_t)
5726 #ifndef acc_pclock_read_clock_gettime_t
5727 #define acc_pclock_read_clock_gettime_t acc_pclock_read_clock_gettime_t
5728 #endif
5729 static int acc_pclock_read_clock_gettime_t(acc_pclock_handle_p h, acc_pclock_p c)
5731 struct timespec ts;
5732 if (clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts) != 0)
5733 return -1;
5734 c->tv_sec = ts.tv_sec;
5735 c->tv_nsec = ts.tv_nsec;
5736 ACC_UNUSED(h); return 0;
5738 #endif
5739 #if (ACC_OS_CYGWIN || ACC_OS_WIN32 || ACC_OS_WIN64) && (ACC_HAVE_WINDOWS_H) && defined(acc_int64l_t)
5740 #ifndef acc_pclock_read_getthreadtimes
5741 #define acc_pclock_read_getthreadtimes acc_pclock_read_getthreadtimes
5742 #endif
5743 static int acc_pclock_read_getthreadtimes(acc_pclock_handle_p h, acc_pclock_p c)
5745 FILETIME ct, et, kt, ut;
5746 acc_uint64l_t ticks;
5747 if (GetThreadTimes(GetCurrentThread(), &ct, &et, &kt, &ut) == 0)
5748 return -1;
5749 ticks = ((acc_uint64l_t)ut.dwHighDateTime << 32) | ut.dwLowDateTime;
5750 if __acc_unlikely(h->ticks_base == 0)
5751 h->ticks_base = ticks;
5752 else
5753 ticks -= h->ticks_base;
5754 c->tv_sec = (acc_int64l_t) (ticks / 10000000ul);
5755 c->tv_nsec = (acc_uint32l_t)(ticks % 10000000ul) * 100;
5756 ACC_UNUSED(h); return 0;
5758 #endif
5759 ACCLIB_PUBLIC(int, acc_pclock_open) (acc_pclock_handle_p h, int mode)
5761 acc_pclock_t c;
5762 int i;
5763 h->h = (acclib_handle_t) 0;
5764 h->mode = -1;
5765 h->name = NULL;
5766 h->gettime = 0;
5767 #if defined(acc_int64l_t)
5768 h->ticks_base = 0;
5769 #endif
5770 switch (mode)
5772 case ACC_PCLOCK_REALTIME_HR:
5773 # if defined(acc_pclock_read_gettimeofday)
5774 h->gettime = acc_pclock_read_gettimeofday;
5775 h->name = "gettimeofday";
5776 # endif
5777 break;
5778 case ACC_PCLOCK_REALTIME:
5779 # if defined(acc_pclock_read_gettimeofday)
5780 h->gettime = acc_pclock_read_gettimeofday;
5781 h->name = "gettimeofday";
5782 # endif
5783 break;
5784 case ACC_PCLOCK_MONOTONIC_HR:
5785 # if defined(acc_pclock_read_uclock)
5786 h->gettime = acc_pclock_read_uclock;
5787 h->name = "uclock";
5788 # endif
5789 break;
5790 case ACC_PCLOCK_MONOTONIC:
5791 # if defined(acc_pclock_read_clock)
5792 if (!h->gettime) {
5793 h->gettime = acc_pclock_read_clock;
5794 h->name = "clock";
5796 # endif
5797 break;
5798 case ACC_PCLOCK_PROCESS_CPUTIME_ID:
5799 # if defined(acc_pclock_read_perfctr)
5800 if (acc_perfctr_open(&h->pch) == 0) {
5801 h->gettime = acc_pclock_read_perfctr;
5802 h->name = "perfctr";
5803 break;
5805 # endif
5806 # if defined(acc_pclock_read_getprocesstimes)
5807 if (!h->gettime && acc_pclock_read_getprocesstimes(h, &c) == 0) {
5808 h->gettime = acc_pclock_read_getprocesstimes;
5809 h->name = "GetProcessTimes";
5810 break;
5812 # endif
5813 # if defined(acc_pclock_read_clock_gettime_p)
5814 if (!h->gettime && acc_pclock_read_clock_gettime_p(h, &c) == 0) {
5815 h->gettime = acc_pclock_read_clock_gettime_p;
5816 h->name = "CLOCK_PROCESS_CPUTIME_ID";
5817 break;
5819 # endif
5820 # if defined(acc_pclock_read_getrusage)
5821 h->gettime = acc_pclock_read_getrusage;
5822 h->name = "getrusage";
5823 # endif
5824 break;
5825 case ACC_PCLOCK_THREAD_CPUTIME_ID:
5826 # if defined(acc_pclock_read_getthreadtimes)
5827 if (!h->gettime && acc_pclock_read_getthreadtimes(h, &c) == 0) {
5828 h->gettime = acc_pclock_read_getthreadtimes;
5829 h->name = "GetThreadTimes";
5831 # endif
5832 # if defined(acc_pclock_read_clock_gettime_t)
5833 if (!h->gettime && acc_pclock_read_clock_gettime_t(h, &c) == 0) {
5834 h->gettime = acc_pclock_read_clock_gettime_t;
5835 h->name = "CLOCK_THREAD_CPUTIME_ID";
5836 break;
5838 # endif
5839 break;
5841 if (!h->gettime)
5842 return -1;
5843 if (!h->h)
5844 h->h = (acclib_handle_t) 1;
5845 h->mode = mode;
5846 if (!h->name)
5847 h->name = "unknown";
5848 for (i = 0; i < 10; i++) {
5849 acc_pclock_read(h, &c);
5851 return 0;
5853 ACCLIB_PUBLIC(int, acc_pclock_open_default) (acc_pclock_handle_p h)
5855 if (acc_pclock_open(h, ACC_PCLOCK_PROCESS_CPUTIME_ID) == 0)
5856 return 0;
5857 if (acc_pclock_open(h, ACC_PCLOCK_MONOTONIC_HR) == 0)
5858 return 0;
5859 if (acc_pclock_open(h, ACC_PCLOCK_REALTIME_HR) == 0)
5860 return 0;
5861 if (acc_pclock_open(h, ACC_PCLOCK_MONOTONIC) == 0)
5862 return 0;
5863 if (acc_pclock_open(h, ACC_PCLOCK_REALTIME) == 0)
5864 return 0;
5865 if (acc_pclock_open(h, ACC_PCLOCK_THREAD_CPUTIME_ID) == 0)
5866 return 0;
5867 return -1;
5869 ACCLIB_PUBLIC(int, acc_pclock_close) (acc_pclock_handle_p h)
5871 h->h = (acclib_handle_t) 0;
5872 h->mode = -1;
5873 h->name = NULL;
5874 h->gettime = 0;
5875 #if (__ACCLIB_PCLOCK_USE_PERFCTR)
5876 acc_perfctr_close(&h->pch);
5877 #endif
5878 return 0;
5880 ACCLIB_PUBLIC(void, acc_pclock_read) (acc_pclock_handle_p h, acc_pclock_p c)
5882 if (h->gettime) {
5883 if (h->gettime(h, c) == 0)
5884 return;
5886 #if defined(acc_int64l_t)
5887 c->tv_sec = 0;
5888 #else
5889 c->tv_sec_high = 0;
5890 c->tv_sec_low = 0;
5891 #endif
5892 c->tv_nsec = 0;
5894 #if !defined(ACC_CFG_NO_DOUBLE)
5895 ACCLIB_PUBLIC(double, acc_pclock_get_elapsed) (acc_pclock_handle_p h, const acc_pclock_p start, const acc_pclock_p stop)
5897 double tstop, tstart;
5898 if (!h->h) {
5899 h->mode = -1;
5900 return 0.0;
5902 #if defined(acc_int64l_t)
5903 tstop = stop->tv_sec + stop->tv_nsec / 1000000000.0;
5904 tstart = start->tv_sec + start->tv_nsec / 1000000000.0;
5905 #else
5906 tstop = stop->tv_sec_low + stop->tv_nsec / 1000000000.0;
5907 tstart = start->tv_sec_low + start->tv_nsec / 1000000000.0;
5908 #endif
5909 return tstop - tstart;
5911 #endif
5912 ACCLIB_PUBLIC(int, acc_pclock_flush_cpu_cache) (acc_pclock_handle_p h, unsigned flags)
5914 if (h->h) {
5915 #if (__ACCLIB_PCLOCK_USE_PERFCTR)
5916 return acc_perfctr_flush_cpu_cache(&h->pch, flags);
5917 #endif
5919 ACC_UNUSED(h); ACC_UNUSED(flags);
5920 return -1;
5922 #if defined(__ACCLIB_PCLOCK_NEED_WARN_POP)
5923 # if (ACC_CC_MSC && (_MSC_VER >= 1200))
5924 # pragma warning(pop)
5925 # else
5926 # error "__ACCLIB_PCLOCK_NEED_WARN_POP"
5927 # endif
5928 # undef __ACCLIB_PCLOCK_NEED_WARN_POP
5929 #endif
5930 #endif
5931 #if defined(ACC_WANT_ACCLIB_UCLOCK)
5932 # undef ACC_WANT_ACCLIB_UCLOCK
5933 #define __ACCLIB_UCLOCK_CH_INCLUDED 1
5934 #if !defined(ACCLIB_PUBLIC)
5935 # define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
5936 #endif
5937 #if (ACC_OS_DOS16 || ACC_OS_WIN16)
5938 #elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
5939 #elif (ACC_OS_CYGWIN || ACC_OS_WIN32 || ACC_OS_WIN64) && (ACC_HAVE_WINDOWS_H)
5940 # if ((ACC_CC_DMC && (__DMC__ < 0x838)) || ACC_CC_LCCWIN32)
5941 # define __ACCLIB_UCLOCK_USE_CLOCK 1
5942 # else
5943 # define __ACCLIB_UCLOCK_USE_WINMM 1
5944 # if (ACC_CC_MSC && (_MSC_VER >= 1200))
5945 # pragma warning(push)
5946 # define __ACCLIB_UCLOCK_NEED_WARN_POP 1
5947 # endif
5948 # if (ACC_CC_MSC && (_MSC_VER >= 900))
5949 # pragma warning(disable: 4201)
5950 # elif (ACC_CC_MWERKS)
5951 # define LPUINT __ACC_MMSYSTEM_H_LPUINT
5952 # endif
5953 # if 1
5954 # include <mmsystem.h>
5955 # else
5956 # if (ACC_CC_INTELC || ACC_CC_MSC || ACC_CC_PELLESC)
5957 ACC_EXTERN_C __declspec(dllimport) unsigned long __stdcall timeGetTime(void);
5958 # else
5959 ACC_EXTERN_C unsigned long __stdcall timeGetTime(void);
5960 # endif
5961 # endif
5962 # if (ACC_CC_DMC)
5963 # pragma DMC includelib "winmm.lib"
5964 # elif (ACC_CC_INTELC || ACC_CC_MSC || ACC_CC_PELLESC)
5965 # pragma comment(lib, "winmm.lib")
5966 # elif (ACC_CC_MWERKS && (__MWERKS__ >= 0x3000))
5967 # pragma comment(lib, "winmm.lib")
5968 # elif (ACC_CC_SYMANTECC)
5969 # pragma SC includelib "winmm.lib"
5970 # elif (ACC_CC_WATCOMC && (__WATCOMC__ >= 1050))
5971 # pragma library("winmm.lib")
5972 # endif
5973 # endif
5974 #elif (ACC_OS_CYGWIN || ACC_OS_DOS32 || ACC_OS_EMX || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_TOS || ACC_OS_WIN32 || ACC_OS_WIN64)
5975 # define __ACCLIB_UCLOCK_USE_CLOCK 1
5976 #elif (ACC_OS_CONSOLE) && defined(CLOCKS_PER_SEC)
5977 # define __ACCLIB_UCLOCK_USE_CLOCK 1
5978 #elif (ACC_LIBC_ISOC90 || ACC_LIBC_ISOC99) && defined(CLOCKS_PER_SEC)
5979 # define __ACCLIB_UCLOCK_USE_CLOCK 1
5980 #endif
5981 #if (__ACCLIB_UCLOCK_USE_CLOCK) && !defined(CLOCKS_PER_SEC)
5982 # if defined(CLK_TCK)
5983 # define CLOCKS_PER_SEC CLK_TCK
5984 # else
5985 # undef __ACCLIB_UCLOCK_USE_CLOCK
5986 # endif
5987 #endif
5988 #if (__ACCLIB_UCLOCK_USE_GETRUSAGE)
5989 # if !defined(RUSAGE_SELF)
5990 # undef __ACCLIB_UCLOCK_USE_GETRUSAGE
5991 # endif
5992 #endif
5993 ACCLIB_PUBLIC(int, acc_uclock_open) (acc_uclock_handle_p h)
5995 int i;
5996 #if (__ACCLIB_UCLOCK_USE_QPC)
5997 LARGE_INTEGER li;
5998 #endif
5999 h->h = (acclib_handle_t) 1;
6000 h->mode = 0;
6001 h->name = NULL;
6002 #if (__ACCLIB_UCLOCK_USE_PERFCTR)
6003 h->pch.h = 0;
6004 if (h->mode == 0 && acc_perfctr_open(&h->pch) == 0)
6005 h->mode = 2;
6006 #endif
6007 #if (__ACCLIB_UCLOCK_USE_QPC)
6008 h->qpf = 0.0;
6009 if (h->mode == 0 && QueryPerformanceFrequency(&li) != 0) {
6010 double d = (double) li.QuadPart;
6011 if (d > 0.0 && QueryPerformanceCounter(&li) != 0) {
6012 h->mode = 3;
6013 h->qpf = d;
6016 #endif
6017 for (i = 0; i < 10; i++) {
6018 acc_uclock_t c;
6019 acc_uclock_read(h, &c);
6021 return 0;
6023 ACCLIB_PUBLIC(int, acc_uclock_close) (acc_uclock_handle_p h)
6025 h->h = (acclib_handle_t) 0;
6026 h->mode = -1;
6027 h->name = NULL;
6028 #if (__ACCLIB_UCLOCK_USE_PERFCTR)
6029 acc_perfctr_close(&h->pch);
6030 #endif
6031 return 0;
6033 ACCLIB_PUBLIC(void, acc_uclock_read) (acc_uclock_handle_p h, acc_uclock_p c)
6035 #if (__ACCLIB_UCLOCK_USE_RDTSC)
6036 acc_tsc_read((acc_uint32e_t*) (void*) &c->tsc);
6037 #endif
6038 #if (__ACCLIB_UCLOCK_USE_PERFCTR)
6039 if (h->pch.h) {
6040 acc_perfctr_read(&h->pch, &c->pcc);
6041 if (h->mode > 0 && h->mode <= 2)
6042 return;
6044 #endif
6045 #if (__ACCLIB_UCLOCK_USE_QPC)
6046 if (h->qpf > 0.0) {
6047 LARGE_INTEGER li;
6048 if (QueryPerformanceCounter(&li) != 0) {
6049 c->qpc = (acc_int64l_t) li.QuadPart;
6050 if (h->mode > 0 && h->mode <= 3)
6051 return;
6052 } else {
6053 h->mode = 0; h->qpf = 0.0; c->qpc = 0;
6056 #endif
6058 #if (ACC_OS_DOS16 || ACC_OS_WIN16)
6059 # if (ACC_CC_AZTECC)
6060 c->ticks.t32 = 0;
6061 # else
6062 union REGS ri, ro;
6063 ri.x.ax = 0x2c00; int86(0x21, &ri, &ro);
6064 c->ticks.t32 = ro.h.ch*60UL*60UL*100UL + ro.h.cl*60UL*100UL + ro.h.dh*100UL + ro.h.dl;
6065 # endif
6066 #elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
6067 c->ticks.t64 = uclock();
6068 #elif (__ACCLIB_UCLOCK_USE_CLOCK) && defined(acc_int64l_t)
6069 c->ticks.t64 = clock();
6070 #elif (__ACCLIB_UCLOCK_USE_CLOCK)
6071 c->ticks.t32 = clock();
6072 #elif (__ACCLIB_UCLOCK_USE_WINMM)
6073 c->ticks.t32 = timeGetTime();
6074 #elif (__ACCLIB_UCLOCK_USE_GETRUSAGE)
6075 struct rusage ru;
6076 if (getrusage(RUSAGE_SELF, &ru) != 0) c->ticks.td = 0;
6077 else c->ticks.td = ru.ru_utime.tv_sec + ru.ru_utime.tv_usec / 1000000.0;
6078 #elif (HAVE_GETTIMEOFDAY)
6079 struct timeval tv;
6080 if (gettimeofday(&tv, 0) != 0) c->ticks.td = 0;
6081 else c->ticks.td = tv.tv_sec + tv.tv_usec / 1000000.0;
6082 #else
6083 ACC_UNUSED(c);
6084 #endif
6086 ACC_UNUSED(h);
6088 ACCLIB_PUBLIC(double, acc_uclock_get_elapsed) (acc_uclock_handle_p h, const acc_uclock_p start, const acc_uclock_p stop)
6090 double d;
6091 if (!h->h) {
6092 h->mode = -1;
6093 return 0.0;
6095 #if (__ACCLIB_UCLOCK_USE_RDTSC)
6096 if (h->mode == 1) {
6097 if (!h->name) h->name = "rdtsc";
6098 d = (double) ((acc_int64l_t)stop->tsc - (acc_int64l_t)start->tsc);
6099 return d / 1000000000.0;
6101 #endif
6102 #if (__ACCLIB_UCLOCK_USE_PERFCTR)
6103 if (h->pch.h && h->mode == 2) {
6104 if (!h->name) h->name = "perfctr";
6105 return acc_perfctr_get_elapsed(&h->pch, &start->pcc, &stop->pcc);
6107 #endif
6108 #if (__ACCLIB_UCLOCK_USE_QPC)
6109 if (h->qpf > 0.0 && h->mode == 3) {
6110 if (!h->name) h->name = "qpc";
6111 if (start->qpc == 0 || stop->qpc == 0) return 0.0;
6112 return (double) (stop->qpc - start->qpc) / h->qpf;
6114 #endif
6115 #if (ACC_OS_DOS16 || ACC_OS_WIN16)
6116 h->mode = 11;
6117 if (!h->name) h->name = "uclock";
6118 d = (double) (stop->ticks.t32 - start->ticks.t32) / 100.0;
6119 if (d < 0.0) d += 86400.0;
6120 #elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
6121 h->mode = 12;
6122 if (!h->name) h->name = "uclock";
6123 d = (double) (stop->ticks.t64 - start->ticks.t64) / (UCLOCKS_PER_SEC);
6124 #elif (__ACCLIB_UCLOCK_USE_CLOCK) && defined(acc_int64l_t)
6125 h->mode = 13;
6126 if (!h->name) h->name = "clock";
6128 acc_int64l_t t;
6129 t = stop->ticks.t64 - start->ticks.t64;
6130 if (t < 0)
6131 t += sizeof(clock_t) == 4 ? ACC_INT64_C(0x100000000) : ACC_INT64_C(0);
6132 d = (double) t / (CLOCKS_PER_SEC);
6134 #elif (__ACCLIB_UCLOCK_USE_CLOCK)
6135 h->mode = 14;
6136 if (!h->name) h->name = "clock";
6137 d = (double) (stop->ticks.t32 - start->ticks.t32) / (CLOCKS_PER_SEC);
6138 #elif (__ACCLIB_UCLOCK_USE_WINMM)
6139 h->mode = 15;
6140 if (!h->name) h->name = "timeGetTime";
6141 d = (double) (stop->ticks.t32 - start->ticks.t32) / 1000.0;
6142 #elif (__ACCLIB_UCLOCK_USE_GETRUSAGE)
6143 h->mode = 16;
6144 if (!h->name) h->name = "getrusage";
6145 d = stop->ticks.td - start->ticks.td;
6146 #elif (HAVE_GETTIMEOFDAY)
6147 h->mode = 17;
6148 if (!h->name) h->name = "gettimeofday";
6149 d = stop->ticks.td - start->ticks.td;
6150 #else
6151 h->mode = 0;
6152 d = 0.0;
6153 #endif
6154 return d;
6156 ACCLIB_PUBLIC(int, acc_uclock_flush_cpu_cache) (acc_uclock_handle_p h, unsigned flags)
6158 if (h->h) {
6159 #if (__ACCLIB_UCLOCK_USE_PERFCTR)
6160 return acc_perfctr_flush_cpu_cache(&h->pch, flags);
6161 #endif
6163 ACC_UNUSED(h); ACC_UNUSED(flags);
6164 return -1;
6166 #if defined(__ACCLIB_UCLOCK_NEED_WARN_POP)
6167 # if (ACC_CC_MSC && (_MSC_VER >= 1200))
6168 # pragma warning(pop)
6169 # else
6170 # error "__ACCLIB_UCLOCK_NEED_WARN_POP"
6171 # endif
6172 # undef __ACCLIB_UCLOCK_NEED_WARN_POP
6173 #endif
6174 #endif
6175 #if defined(ACC_WANT_ACCLIB_MISC)
6176 # undef ACC_WANT_ACCLIB_MISC
6177 #define __ACCLIB_MISC_CH_INCLUDED 1
6178 #if !defined(ACCLIB_PUBLIC)
6179 # define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
6180 #endif
6181 #if !defined(ACCLIB_PUBLIC_NOINLINE)
6182 # if !defined(__acc_noinline)
6183 # define ACCLIB_PUBLIC_NOINLINE(r,f) r __ACCLIB_FUNCNAME(f)
6184 # elif (ACC_CC_GNUC >= 0x030400ul) || (ACC_CC_LLVM)
6185 # define ACCLIB_PUBLIC_NOINLINE(r,f) __acc_noinline __attribute__((__used__)) r __ACCLIB_FUNCNAME(f)
6186 # else
6187 # define ACCLIB_PUBLIC_NOINLINE(r,f) __acc_noinline r __ACCLIB_FUNCNAME(f)
6188 # endif
6189 #endif
6190 #if (ACC_OS_WIN32 && ACC_CC_PELLESC && (__POCC__ >= 290))
6191 # pragma warn(push)
6192 # pragma warn(disable:2007)
6193 #endif
6194 ACCLIB_PUBLIC(const char *, acc_getenv) (const char *s)
6196 #if defined(HAVE_GETENV)
6197 return getenv(s);
6198 #else
6199 ACC_UNUSED(s); return (const char *) 0;
6200 #endif
6202 ACCLIB_PUBLIC(acclib_handle_t, acc_get_osfhandle) (int fd)
6204 if (fd < 0)
6205 return -1;
6206 #if (ACC_OS_CYGWIN)
6207 return get_osfhandle(fd);
6208 #elif (ACC_OS_EMX && defined(__RSXNT__))
6209 return -1;
6210 #elif (ACC_OS_WIN32 && ACC_CC_GNUC) && defined(__PW32__)
6211 return -1;
6212 #elif (ACC_OS_WIN32 || ACC_OS_WIN64)
6213 # if (ACC_CC_PELLESC && (__POCC__ < 280))
6214 return -1;
6215 # elif (ACC_CC_WATCOMC && (__WATCOMC__ < 1000))
6216 return -1;
6217 # elif (ACC_CC_WATCOMC && (__WATCOMC__ < 1100))
6218 return _os_handle(fd);
6219 # else
6220 return _get_osfhandle(fd);
6221 # endif
6222 #else
6223 return fd;
6224 #endif
6226 ACCLIB_PUBLIC(int, acc_set_binmode) (int fd, int binary)
6228 #if (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC) && defined(__MINT__)
6229 FILE* fp; int old_binary;
6230 if (fd == STDIN_FILENO) fp = stdin;
6231 else if (fd == STDOUT_FILENO) fp = stdout;
6232 else if (fd == STDERR_FILENO) fp = stderr;
6233 else return -1;
6234 old_binary = fp->__mode.__binary;
6235 __set_binmode(fp, binary ? 1 : 0);
6236 return old_binary ? 1 : 0;
6237 #elif (ACC_ARCH_M68K && ACC_OS_TOS)
6238 ACC_UNUSED(fd); ACC_UNUSED(binary);
6239 return -1;
6240 #elif (ACC_OS_DOS16 && (ACC_CC_AZTECC || ACC_CC_PACIFICC))
6241 ACC_UNUSED(fd); ACC_UNUSED(binary);
6242 return -1;
6243 #elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
6244 int r; unsigned old_flags = __djgpp_hwint_flags;
6245 ACC_COMPILE_TIME_ASSERT(O_BINARY > 0)
6246 ACC_COMPILE_TIME_ASSERT(O_TEXT > 0)
6247 if (fd < 0) return -1;
6248 r = setmode(fd, binary ? O_BINARY : O_TEXT);
6249 if ((old_flags & 1u) != (__djgpp_hwint_flags & 1u))
6250 __djgpp_set_ctrl_c(!(old_flags & 1));
6251 if (r == -1) return -1;
6252 return (r & O_TEXT) ? 0 : 1;
6253 #elif (ACC_OS_WIN32 && ACC_CC_GNUC) && defined(__PW32__)
6254 if (fd < 0) return -1;
6255 ACC_UNUSED(binary);
6256 return 1;
6257 #elif (ACC_OS_DOS32 && ACC_CC_HIGHC)
6258 FILE* fp; int r;
6259 if (fd == fileno(stdin)) fp = stdin;
6260 else if (fd == fileno(stdout)) fp = stdout;
6261 else if (fd == fileno(stderr)) fp = stderr;
6262 else return -1;
6263 r = _setmode(fp, binary ? _BINARY : _TEXT);
6264 if (r == -1) return -1;
6265 return (r & _BINARY) ? 1 : 0;
6266 #elif (ACC_OS_WIN32 && ACC_CC_MWERKS) && defined(__MSL__)
6267 ACC_UNUSED(fd); ACC_UNUSED(binary);
6268 return -1;
6269 #elif (ACC_OS_CYGWIN && (ACC_CC_GNUC < 0x025a00ul))
6270 ACC_UNUSED(fd); ACC_UNUSED(binary);
6271 return -1;
6272 #elif (ACC_OS_CYGWIN || ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_EMX || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64)
6273 int r;
6274 #if !defined(ACC_CC_ZORTECHC)
6275 ACC_COMPILE_TIME_ASSERT(O_BINARY > 0)
6276 #endif
6277 ACC_COMPILE_TIME_ASSERT(O_TEXT > 0)
6278 if (fd < 0) return -1;
6279 r = setmode(fd, binary ? O_BINARY : O_TEXT);
6280 if (r == -1) return -1;
6281 return (r & O_TEXT) ? 0 : 1;
6282 #else
6283 if (fd < 0) return -1;
6284 ACC_UNUSED(binary);
6285 return 1;
6286 #endif
6288 ACCLIB_PUBLIC(int, acc_isatty) (int fd)
6290 if (fd < 0)
6291 return 0;
6292 #if (ACC_OS_DOS16 && !defined(ACC_CC_AZTECC))
6294 union REGS ri, ro;
6295 ri.x.ax = 0x4400; ri.x.bx = fd;
6296 int86(0x21, &ri, &ro);
6297 if ((ro.x.cflag & 1) == 0)
6298 if ((ro.x.ax & 0x83) != 0x83)
6299 return 0;
6301 #elif (ACC_OS_DOS32 && ACC_CC_WATCOMC)
6303 union REGS ri, ro;
6304 ri.w.ax = 0x4400; ri.w.bx = (unsigned short) fd;
6305 int386(0x21, &ri, &ro);
6306 if ((ro.w.cflag & 1) == 0)
6307 if ((ro.w.ax & 0x83) != 0x83)
6308 return 0;
6310 #elif (ACC_HAVE_WINDOWS_H)
6312 acclib_handle_t h = __ACCLIB_FUNCNAME(acc_get_osfhandle)(fd);
6313 if ((HANDLE)h != INVALID_HANDLE_VALUE)
6315 DWORD d = 0;
6316 if (GetConsoleMode((HANDLE)h, &d) == 0)
6317 return 0;
6320 #endif
6321 #if defined(HAVE_ISATTY)
6322 return (isatty(fd)) ? 1 : 0;
6323 #else
6324 return 0;
6325 #endif
6327 ACCLIB_PUBLIC(int, acc_mkdir) (const char* name, unsigned mode)
6329 #if !defined(HAVE_MKDIR)
6330 ACC_UNUSED(name); ACC_UNUSED(mode);
6331 return -1;
6332 #elif (ACC_ARCH_M68K && ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
6333 ACC_UNUSED(mode);
6334 return Dcreate(name);
6335 #elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
6336 return mkdir(name, mode);
6337 #elif (ACC_OS_WIN32 && ACC_CC_GNUC) && defined(__PW32__)
6338 return mkdir(name, mode);
6339 #elif (ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64)
6340 ACC_UNUSED(mode);
6341 # if (ACC_CC_HIGHC || ACC_CC_PACIFICC)
6342 return mkdir((char*) name);
6343 # else
6344 return mkdir(name);
6345 # endif
6346 #else
6347 return mkdir(name, mode);
6348 #endif
6350 ACCLIB_PUBLIC(int, acc_rmdir) (const char* name)
6352 #if !defined(HAVE_RMDIR)
6353 ACC_UNUSED(name);
6354 return -1;
6355 #elif ((ACC_OS_DOS16 || ACC_OS_DOS32) && (ACC_CC_HIGHC || ACC_CC_PACIFICC))
6356 return rmdir((char *) name);
6357 #else
6358 return rmdir(name);
6359 #endif
6361 #if defined(acc_int32e_t)
6362 ACCLIB_PUBLIC(acc_int32e_t, acc_muldiv32s) (acc_int32e_t a, acc_int32e_t b, acc_int32e_t x)
6364 acc_int32e_t r = 0;
6365 if __acc_likely(x != 0)
6367 #if defined(acc_int64l_t)
6368 r = (acc_int32e_t) (((acc_int64l_t) a * b) / x);
6369 #else
6370 ACC_UNUSED(a); ACC_UNUSED(b);
6371 #endif
6373 return r;
6375 ACCLIB_PUBLIC(acc_uint32e_t, acc_muldiv32u) (acc_uint32e_t a, acc_uint32e_t b, acc_uint32e_t x)
6377 acc_uint32e_t r = 0;
6378 if __acc_likely(x != 0)
6380 #if defined(acc_int64l_t)
6381 r = (acc_uint32e_t) (((acc_uint64l_t) a * b) / x);
6382 #else
6383 ACC_UNUSED(a); ACC_UNUSED(b);
6384 #endif
6386 return r;
6388 #endif
6389 #if 0
6390 ACCLIB_PUBLIC_NOINLINE(int, acc_syscall_clock_gettime) (int c)
6393 #endif
6394 #if (ACC_OS_WIN16)
6395 ACC_EXTERN_C void __far __pascal DebugBreak(void);
6396 #endif
6397 ACCLIB_PUBLIC_NOINLINE(void, acc_debug_break) (void)
6399 #if (ACC_OS_WIN16)
6400 DebugBreak();
6401 #elif (ACC_ARCH_I086)
6402 #elif (ACC_OS_WIN64) && (ACC_HAVE_WINDOWS_H)
6403 DebugBreak();
6404 #elif defined(ACC_CFG_NO_INLINE_ASM) && (ACC_OS_WIN32) && (ACC_HAVE_WINDOWS_H)
6405 DebugBreak();
6406 #elif (ACC_ARCH_AMD64 || ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
6407 __asm__ __volatile__("int $3\n" : : : __ACC_ASM_CLOBBER);
6408 #elif (ACC_ARCH_I386) && (ACC_ASM_SYNTAX_MSC)
6409 __asm { int 3 }
6410 #elif (ACC_OS_WIN32) && (ACC_HAVE_WINDOWS_H)
6411 DebugBreak();
6412 #else
6413 * (volatile int *) 0x1 = -1;
6414 #endif
6416 ACCLIB_PUBLIC_NOINLINE(void, acc_debug_nop) (void)
6419 ACCLIB_PUBLIC_NOINLINE(int, acc_debug_align_check_query) (void)
6421 #if (ACC_ARCH_AMD64 || ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
6422 size_t r;
6423 __asm__ __volatile__("pushf\n pop %0\n" : "=a" (r) : : __ACC_ASM_CLOBBER);
6424 return (int)(r >> 18) & 1;
6425 #elif (ACC_ARCH_I386) && (ACC_ASM_SYNTAX_MSC)
6426 unsigned long r;
6427 __asm {
6428 pushf
6429 pop eax
6430 mov r,eax
6432 return (int)(r >> 18) & 1;
6433 #else
6434 return -1;
6435 #endif
6437 ACCLIB_PUBLIC_NOINLINE(int, acc_debug_align_check_enable) (int v)
6439 int r;
6440 #if (ACC_ARCH_AMD64) && (ACC_ASM_SYNTAX_GNUC)
6441 if (v) {
6442 __asm__ __volatile__("pushf\n orl $262144,(%%rsp)\n popf\n" : : : __ACC_ASM_CLOBBER);
6443 } else {
6444 __asm__ __volatile__("pushf\n andl $-262145,(%%rsp)\n popf\n" : : : __ACC_ASM_CLOBBER);
6446 r = 0;
6447 #elif (ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
6448 if (v) {
6449 __asm__ __volatile__("pushf\n orl $262144,(%%esp)\n popf\n" : : : __ACC_ASM_CLOBBER);
6450 } else {
6451 __asm__ __volatile__("pushf\n andl $-262145,(%%esp)\n popf\n" : : : __ACC_ASM_CLOBBER);
6453 r = 0;
6454 #elif (ACC_ARCH_I386) && (ACC_ASM_SYNTAX_MSC)
6455 if (v) { __asm {
6456 pushf
6457 or dword ptr [esp],262144
6458 popf
6459 }} else { __asm {
6460 pushf
6461 and dword ptr [esp],-262145
6462 popf
6464 r = 0;
6465 #else
6466 r = -1;
6467 #endif
6468 ACC_UNUSED(v); return r;
6470 ACCLIB_PUBLIC_NOINLINE(unsigned, acc_debug_running_on_qemu) (void)
6472 unsigned r = 0;
6473 #if (ACC_OS_POSIX_LINUX || ACC_OS_WIN32 || ACC_OS_WIN64)
6474 const char* p;
6475 p = acc_getenv("ACC_ENV_RUNNING_ON_QEMU");
6476 if (p) {
6477 if (p[0] == 0) r = 0;
6478 else if ((p[0] >= '0' && p[0] <= '9') && p[1] == 0) r = p[0] - '0';
6479 else r = 1;
6481 #endif
6482 return r;
6484 ACCLIB_PUBLIC_NOINLINE(unsigned, acc_debug_running_on_valgrind) (void)
6486 #if (ACC_ARCH_AMD64 || ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
6487 volatile unsigned long args[5] = { 0x1001, 0, 0, 0, 0 };
6488 unsigned long r = 0;
6489 __asm__ __volatile__(".byte 0xc1,0xc0,0x1d,0xc1,0xc0,0x03,0xc1,0xc8,0x1b,0xc1,0xc8,0x05,0xc1,0xc0,0x0d,0xc1,0xc0,0x13\n" : "=d" (r) : "a" (&args[0]), "d" (r) : __ACC_ASM_CLOBBER);
6490 return (unsigned) r;
6491 #else
6492 return 0;
6493 #endif
6495 #if (ACC_OS_WIN32 && ACC_CC_PELLESC && (__POCC__ >= 290))
6496 # pragma warn(pop)
6497 #endif
6498 #endif
6499 #if defined(ACC_WANT_ACCLIB_WILDARGV)
6500 # undef ACC_WANT_ACCLIB_WILDARGV
6501 #define __ACCLIB_WILDARGV_CH_INCLUDED 1
6502 #if !defined(ACCLIB_PUBLIC)
6503 # define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
6504 #endif
6505 #if (ACC_OS_DOS16 || ACC_OS216 || ACC_OS_WIN16)
6506 #if 0 && (ACC_CC_MSC)
6507 ACC_EXTERN_C int __acc_cdecl __setargv(void);
6508 ACC_EXTERN_C int __acc_cdecl _setargv(void);
6509 ACC_EXTERN_C int __acc_cdecl _setargv(void) { return __setargv(); }
6510 #endif
6511 #endif
6512 #if (ACC_OS_WIN32 || ACC_OS_WIN64)
6513 #if (ACC_CC_INTELC || ACC_CC_MSC)
6514 ACC_EXTERN_C int __acc_cdecl __setargv(void);
6515 ACC_EXTERN_C int __acc_cdecl _setargv(void);
6516 ACC_EXTERN_C int __acc_cdecl _setargv(void) { return __setargv(); }
6517 #endif
6518 #endif
6519 #if (ACC_OS_EMX)
6520 #define __ACCLIB_HAVE_ACC_WILDARGV 1
6521 ACCLIB_PUBLIC(void, acc_wildargv) (int* argc, char*** argv)
6523 if (argc && argv) {
6524 _response(argc, argv);
6525 _wildcard(argc, argv);
6528 #endif
6529 #if (ACC_OS_CONSOLE_PSP) && defined(__PSPSDK_DEBUG__)
6530 #define __ACCLIB_HAVE_ACC_WILDARGV 1
6531 ACC_EXTERN_C int acc_psp_init_module(int*, char***, int);
6532 ACCLIB_PUBLIC(void, acc_wildargv) (int* argc, char*** argv)
6534 acc_psp_init_module(argc, argv, -1);
6536 #endif
6537 #if !defined(__ACCLIB_HAVE_ACC_WILDARGV)
6538 #define __ACCLIB_HAVE_ACC_WILDARGV 1
6539 ACCLIB_PUBLIC(void, acc_wildargv) (int* argc, char*** argv)
6541 #if 1 && (ACC_ARCH_I086PM)
6542 if (ACC_MM_AHSHIFT != 3) { exit(1); }
6543 #elif 1 && (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC) && defined(__MINT__)
6544 __binmode(1);
6545 if (isatty(1)) __set_binmode(stdout, 0);
6546 if (isatty(2)) __set_binmode(stderr, 0);
6547 #endif
6548 ACC_UNUSED(argc); ACC_UNUSED(argv);
6550 #endif
6551 #endif
6553 /* vim:set ts=4 et: */