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