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