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