1/* lzodefs.h -- architecture, OS and compiler specific defines
2
3   This file is part of the LZO real-time data compression library.
4
5   Copyright (C) 1996-2014 Markus Franz Xaver Johannes Oberhumer
6   All Rights Reserved.
7
8   The LZO library is free software; you can redistribute it and/or
9   modify it under the terms of the GNU General Public License as
10   published by the Free Software Foundation; either version 2 of
11   the License, or (at your option) any later version.
12
13   The LZO library is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU General Public License for more details.
17
18   You should have received a copy of the GNU General Public License
19   along with the LZO library; see the file COPYING.
20   If not, write to the Free Software Foundation, Inc.,
21   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22
23   Markus F.X.J. Oberhumer
24   <markus@oberhumer.com>
25   http://www.oberhumer.com/opensource/lzo/
26 */
27
28
29#ifndef __LZODEFS_H_INCLUDED
30#define __LZODEFS_H_INCLUDED 1
31
32#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
33#  define __CYGWIN__ __CYGWIN32__
34#endif
35#if 1 && defined(__INTERIX) && defined(__GNUC__) && !defined(_ALL_SOURCE)
36#  define _ALL_SOURCE 1
37#endif
38#if defined(__mips__) && defined(__R5900__)
39#  if !defined(__LONG_MAX__)
40#    define __LONG_MAX__ 9223372036854775807L
41#  endif
42#endif
43#if !defined(LZO_CFG_NO_DISABLE_WUNDEF)
44#if defined(__ARMCC_VERSION)
45#  pragma diag_suppress 193
46#elif defined(__clang__) && defined(__clang_minor__)
47#  pragma clang diagnostic ignored "-Wundef"
48#elif defined(__INTEL_COMPILER)
49#  pragma warning(disable: 193)
50#elif defined(__KEIL__) && defined(__C166__)
51#  pragma warning disable = 322
52#elif defined(__GNUC__) && defined(__GNUC_MINOR__) && !defined(__PATHSCALE__)
53#  if ((__GNUC__-0) >= 5 || ((__GNUC__-0) == 4 && (__GNUC_MINOR__-0) >= 2))
54#    pragma GCC diagnostic ignored "-Wundef"
55#  endif
56#elif defined(_MSC_VER) && !defined(__clang__) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__)
57#  if ((_MSC_VER-0) >= 1300)
58#    pragma warning(disable: 4668)
59#  endif
60#endif
61#endif
62#if 0 && defined(__POCC__) && defined(_WIN32)
63#  if (__POCC__ >= 400)
64#    pragma warn(disable: 2216)
65#  endif
66#endif
67#if 0 && defined(__WATCOMC__)
68#  if (__WATCOMC__ >= 1050) && (__WATCOMC__ < 1060)
69#    pragma warning 203 9
70#  endif
71#endif
72#if defined(__BORLANDC__) && defined(__MSDOS__) && !defined(__FLAT__)
73#  pragma option -h
74#endif
75#if !(LZO_CFG_NO_DISABLE_WCRTNONSTDC)
76#ifndef _CRT_NONSTDC_NO_DEPRECATE
77#define _CRT_NONSTDC_NO_DEPRECATE 1
78#endif
79#ifndef _CRT_NONSTDC_NO_WARNINGS
80#define _CRT_NONSTDC_NO_WARNINGS 1
81#endif
82#ifndef _CRT_SECURE_NO_DEPRECATE
83#define _CRT_SECURE_NO_DEPRECATE 1
84#endif
85#ifndef _CRT_SECURE_NO_WARNINGS
86#define _CRT_SECURE_NO_WARNINGS 1
87#endif
88#endif
89#if 0
90#define LZO_0xffffUL            0xfffful
91#define LZO_0xffffffffUL        0xfffffffful
92#else
93#define LZO_0xffffUL            65535ul
94#define LZO_0xffffffffUL        4294967295ul
95#endif
96#define LZO_0xffffL             LZO_0xffffUL
97#define LZO_0xffffffffL         LZO_0xffffffffUL
98#if (LZO_0xffffL == LZO_0xffffffffL)
99#  error "your preprocessor is broken 1"
100#endif
101#if (16ul * 16384ul != 262144ul)
102#  error "your preprocessor is broken 2"
103#endif
104#if 0
105#if (32767 >= 4294967295ul)
106#  error "your preprocessor is broken 3"
107#endif
108#if (65535u >= 4294967295ul)
109#  error "your preprocessor is broken 4"
110#endif
111#endif
112#if defined(__COUNTER__)
113#  ifndef LZO_CFG_USE_COUNTER
114#  define LZO_CFG_USE_COUNTER 1
115#  endif
116#else
117#  undef LZO_CFG_USE_COUNTER
118#endif
119#if (UINT_MAX == LZO_0xffffL)
120#if defined(__ZTC__) && defined(__I86__) && !defined(__OS2__)
121#  if !defined(MSDOS)
122#    define MSDOS 1
123#  endif
124#  if !defined(_MSDOS)
125#    define _MSDOS 1
126#  endif
127#elif 0 && defined(__VERSION) && defined(MB_LEN_MAX)
128#  if (__VERSION == 520) && (MB_LEN_MAX == 1)
129#    if !defined(__AZTEC_C__)
130#      define __AZTEC_C__ __VERSION
131#    endif
132#    if !defined(__DOS__)
133#      define __DOS__ 1
134#    endif
135#  endif
136#endif
137#endif
138#if defined(_MSC_VER) && defined(M_I86HM) && (UINT_MAX == LZO_0xffffL)
139#  define ptrdiff_t long
140#  define _PTRDIFF_T_DEFINED 1
141#endif
142#if (UINT_MAX == LZO_0xffffL)
143#  undef __LZO_RENAME_A
144#  undef __LZO_RENAME_B
145#  if defined(__AZTEC_C__) && defined(__DOS__)
146#    define __LZO_RENAME_A 1
147#  elif defined(_MSC_VER) && defined(MSDOS)
148#    if (_MSC_VER < 600)
149#      define __LZO_RENAME_A 1
150#    elif (_MSC_VER < 700)
151#      define __LZO_RENAME_B 1
152#    endif
153#  elif defined(__TSC__) && defined(__OS2__)
154#    define __LZO_RENAME_A 1
155#  elif defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0410)
156#    define __LZO_RENAME_A 1
157#  elif defined(__PACIFIC__) && defined(DOS)
158#    if !defined(__far)
159#      define __far far
160#    endif
161#    if !defined(__near)
162#      define __near near
163#    endif
164#  endif
165#  if defined(__LZO_RENAME_A)
166#    if !defined(__cdecl)
167#      define __cdecl cdecl
168#    endif
169#    if !defined(__far)
170#      define __far far
171#    endif
172#    if !defined(__huge)
173#      define __huge huge
174#    endif
175#    if !defined(__near)
176#      define __near near
177#    endif
178#    if !defined(__pascal)
179#      define __pascal pascal
180#    endif
181#    if !defined(__huge)
182#      define __huge huge
183#    endif
184#  elif defined(__LZO_RENAME_B)
185#    if !defined(__cdecl)
186#      define __cdecl _cdecl
187#    endif
188#    if !defined(__far)
189#      define __far _far
190#    endif
191#    if !defined(__huge)
192#      define __huge _huge
193#    endif
194#    if !defined(__near)
195#      define __near _near
196#    endif
197#    if !defined(__pascal)
198#      define __pascal _pascal
199#    endif
200#  elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__)
201#    if !defined(__cdecl)
202#      define __cdecl cdecl
203#    endif
204#    if !defined(__pascal)
205#      define __pascal pascal
206#    endif
207#  endif
208#  undef __LZO_RENAME_A
209#  undef __LZO_RENAME_B
210#endif
211#if (UINT_MAX == LZO_0xffffL)
212#if defined(__AZTEC_C__) && defined(__DOS__)
213#  define LZO_BROKEN_CDECL_ALT_SYNTAX 1
214#elif defined(_MSC_VER) && defined(MSDOS)
215#  if (_MSC_VER < 600)
216#    define LZO_BROKEN_INTEGRAL_CONSTANTS 1
217#  endif
218#  if (_MSC_VER < 700)
219#    define LZO_BROKEN_INTEGRAL_PROMOTION 1
220#    define LZO_BROKEN_SIZEOF 1
221#  endif
222#elif defined(__PACIFIC__) && defined(DOS)
223#  define LZO_BROKEN_INTEGRAL_CONSTANTS 1
224#elif defined(__TURBOC__) && defined(__MSDOS__)
225#  if (__TURBOC__ < 0x0150)
226#    define LZO_BROKEN_CDECL_ALT_SYNTAX 1
227#    define LZO_BROKEN_INTEGRAL_CONSTANTS 1
228#    define LZO_BROKEN_INTEGRAL_PROMOTION 1
229#  endif
230#  if (__TURBOC__ < 0x0200)
231#    define LZO_BROKEN_SIZEOF 1
232#  endif
233#  if (__TURBOC__ < 0x0400) && defined(__cplusplus)
234#    define LZO_BROKEN_CDECL_ALT_SYNTAX 1
235#  endif
236#elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__)
237#  define LZO_BROKEN_CDECL_ALT_SYNTAX 1
238#  define LZO_BROKEN_SIZEOF 1
239#endif
240#endif
241#if defined(__WATCOMC__) && (__WATCOMC__ < 900)
242#  define LZO_BROKEN_INTEGRAL_CONSTANTS 1
243#endif
244#if defined(_CRAY) && defined(_CRAY1)
245#  define LZO_BROKEN_SIGNED_RIGHT_SHIFT 1
246#endif
247#define LZO_PP_STRINGIZE(x)             #x
248#define LZO_PP_MACRO_EXPAND(x)          LZO_PP_STRINGIZE(x)
249#define LZO_PP_CONCAT0()                /*empty*/
250#define LZO_PP_CONCAT1(a)               a
251#define LZO_PP_CONCAT2(a,b)             a ## b
252#define LZO_PP_CONCAT3(a,b,c)           a ## b ## c
253#define LZO_PP_CONCAT4(a,b,c,d)         a ## b ## c ## d
254#define LZO_PP_CONCAT5(a,b,c,d,e)       a ## b ## c ## d ## e
255#define LZO_PP_CONCAT6(a,b,c,d,e,f)     a ## b ## c ## d ## e ## f
256#define LZO_PP_CONCAT7(a,b,c,d,e,f,g)   a ## b ## c ## d ## e ## f ## g
257#define LZO_PP_ECONCAT0()               LZO_PP_CONCAT0()
258#define LZO_PP_ECONCAT1(a)              LZO_PP_CONCAT1(a)
259#define LZO_PP_ECONCAT2(a,b)            LZO_PP_CONCAT2(a,b)
260#define LZO_PP_ECONCAT3(a,b,c)          LZO_PP_CONCAT3(a,b,c)
261#define LZO_PP_ECONCAT4(a,b,c,d)        LZO_PP_CONCAT4(a,b,c,d)
262#define LZO_PP_ECONCAT5(a,b,c,d,e)      LZO_PP_CONCAT5(a,b,c,d,e)
263#define LZO_PP_ECONCAT6(a,b,c,d,e,f)    LZO_PP_CONCAT6(a,b,c,d,e,f)
264#define LZO_PP_ECONCAT7(a,b,c,d,e,f,g)  LZO_PP_CONCAT7(a,b,c,d,e,f,g)
265#define LZO_PP_EMPTY                    /*empty*/
266#define LZO_PP_EMPTY0()                 /*empty*/
267#define LZO_PP_EMPTY1(a)                /*empty*/
268#define LZO_PP_EMPTY2(a,b)              /*empty*/
269#define LZO_PP_EMPTY3(a,b,c)            /*empty*/
270#define LZO_PP_EMPTY4(a,b,c,d)          /*empty*/
271#define LZO_PP_EMPTY5(a,b,c,d,e)        /*empty*/
272#define LZO_PP_EMPTY6(a,b,c,d,e,f)      /*empty*/
273#define LZO_PP_EMPTY7(a,b,c,d,e,f,g)    /*empty*/
274#if 1
275#define LZO_CPP_STRINGIZE(x)            #x
276#define LZO_CPP_MACRO_EXPAND(x)         LZO_CPP_STRINGIZE(x)
277#define LZO_CPP_CONCAT2(a,b)            a ## b
278#define LZO_CPP_CONCAT3(a,b,c)          a ## b ## c
279#define LZO_CPP_CONCAT4(a,b,c,d)        a ## b ## c ## d
280#define LZO_CPP_CONCAT5(a,b,c,d,e)      a ## b ## c ## d ## e
281#define LZO_CPP_CONCAT6(a,b,c,d,e,f)    a ## b ## c ## d ## e ## f
282#define LZO_CPP_CONCAT7(a,b,c,d,e,f,g)  a ## b ## c ## d ## e ## f ## g
283#define LZO_CPP_ECONCAT2(a,b)           LZO_CPP_CONCAT2(a,b)
284#define LZO_CPP_ECONCAT3(a,b,c)         LZO_CPP_CONCAT3(a,b,c)
285#define LZO_CPP_ECONCAT4(a,b,c,d)       LZO_CPP_CONCAT4(a,b,c,d)
286#define LZO_CPP_ECONCAT5(a,b,c,d,e)     LZO_CPP_CONCAT5(a,b,c,d,e)
287#define LZO_CPP_ECONCAT6(a,b,c,d,e,f)   LZO_CPP_CONCAT6(a,b,c,d,e,f)
288#define LZO_CPP_ECONCAT7(a,b,c,d,e,f,g) LZO_CPP_CONCAT7(a,b,c,d,e,f,g)
289#endif
290#define __LZO_MASK_GEN(o,b)     (((((o) << ((b)-!!(b))) - (o)) << 1) + (o)*!!(b))
291#if 1 && defined(__cplusplus)
292#  if !defined(__STDC_CONSTANT_MACROS)
293#    define __STDC_CONSTANT_MACROS 1
294#  endif
295#  if !defined(__STDC_LIMIT_MACROS)
296#    define __STDC_LIMIT_MACROS 1
297#  endif
298#endif
299#if defined(__cplusplus)
300#  define LZO_EXTERN_C          extern "C"
301#  define LZO_EXTERN_C_BEGIN    extern "C" {
302#  define LZO_EXTERN_C_END      }
303#else
304#  define LZO_EXTERN_C          extern
305#  define LZO_EXTERN_C_BEGIN    /*empty*/
306#  define LZO_EXTERN_C_END      /*empty*/
307#endif
308#if !defined(__LZO_OS_OVERRIDE)
309#if (LZO_OS_FREESTANDING)
310#  define LZO_INFO_OS           "freestanding"
311#elif (LZO_OS_EMBEDDED)
312#  define LZO_INFO_OS           "embedded"
313#elif 1 && defined(__IAR_SYSTEMS_ICC__)
314#  define LZO_OS_EMBEDDED       1
315#  define LZO_INFO_OS           "embedded"
316#elif defined(__CYGWIN__) && defined(__GNUC__)
317#  define LZO_OS_CYGWIN         1
318#  define LZO_INFO_OS           "cygwin"
319#elif defined(__EMX__) && defined(__GNUC__)
320#  define LZO_OS_EMX            1
321#  define LZO_INFO_OS           "emx"
322#elif defined(__BEOS__)
323#  define LZO_OS_BEOS           1
324#  define LZO_INFO_OS           "beos"
325#elif defined(__Lynx__)
326#  define LZO_OS_LYNXOS         1
327#  define LZO_INFO_OS           "lynxos"
328#elif defined(__OS400__)
329#  define LZO_OS_OS400          1
330#  define LZO_INFO_OS           "os400"
331#elif defined(__QNX__)
332#  define LZO_OS_QNX            1
333#  define LZO_INFO_OS           "qnx"
334#elif defined(__BORLANDC__) && defined(__DPMI32__) && (__BORLANDC__ >= 0x0460)
335#  define LZO_OS_DOS32          1
336#  define LZO_INFO_OS           "dos32"
337#elif defined(__BORLANDC__) && defined(__DPMI16__)
338#  define LZO_OS_DOS16          1
339#  define LZO_INFO_OS           "dos16"
340#elif defined(__ZTC__) && defined(DOS386)
341#  define LZO_OS_DOS32          1
342#  define LZO_INFO_OS           "dos32"
343#elif defined(__OS2__) || defined(__OS2V2__)
344#  if (UINT_MAX == LZO_0xffffL)
345#    define LZO_OS_OS216        1
346#    define LZO_INFO_OS         "os216"
347#  elif (UINT_MAX == LZO_0xffffffffL)
348#    define LZO_OS_OS2          1
349#    define LZO_INFO_OS         "os2"
350#  else
351#    error "check your limits.h header"
352#  endif
353#elif defined(__WIN64__) || defined(_WIN64) || defined(WIN64)
354#  define LZO_OS_WIN64          1
355#  define LZO_INFO_OS           "win64"
356#elif defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__WINDOWS_386__)
357#  define LZO_OS_WIN32          1
358#  define LZO_INFO_OS           "win32"
359#elif defined(__MWERKS__) && defined(__INTEL__)
360#  define LZO_OS_WIN32          1
361#  define LZO_INFO_OS           "win32"
362#elif defined(__WINDOWS__) || defined(_WINDOWS) || defined(_Windows)
363#  if (UINT_MAX == LZO_0xffffL)
364#    define LZO_OS_WIN16        1
365#    define LZO_INFO_OS         "win16"
366#  elif (UINT_MAX == LZO_0xffffffffL)
367#    define LZO_OS_WIN32        1
368#    define LZO_INFO_OS         "win32"
369#  else
370#    error "check your limits.h header"
371#  endif
372#elif defined(__DOS__) || defined(__MSDOS__) || defined(_MSDOS) || defined(MSDOS) || (defined(__PACIFIC__) && defined(DOS))
373#  if (UINT_MAX == LZO_0xffffL)
374#    define LZO_OS_DOS16        1
375#    define LZO_INFO_OS         "dos16"
376#  elif (UINT_MAX == LZO_0xffffffffL)
377#    define LZO_OS_DOS32        1
378#    define LZO_INFO_OS         "dos32"
379#  else
380#    error "check your limits.h header"
381#  endif
382#elif defined(__WATCOMC__)
383#  if defined(__NT__) && (UINT_MAX == LZO_0xffffL)
384#    define LZO_OS_DOS16        1
385#    define LZO_INFO_OS         "dos16"
386#  elif defined(__NT__) && (__WATCOMC__ < 1100)
387#    define LZO_OS_WIN32        1
388#    define LZO_INFO_OS         "win32"
389#  elif defined(__linux__) || defined(__LINUX__)
390#    define LZO_OS_POSIX        1
391#    define LZO_INFO_OS         "posix"
392#  else
393#    error "please specify a target using the -bt compiler option"
394#  endif
395#elif defined(__palmos__)
396#  define LZO_OS_PALMOS         1
397#  define LZO_INFO_OS           "palmos"
398#elif defined(__TOS__) || defined(__atarist__)
399#  define LZO_OS_TOS            1
400#  define LZO_INFO_OS           "tos"
401#elif defined(macintosh) && !defined(__ppc__)
402#  define LZO_OS_MACCLASSIC     1
403#  define LZO_INFO_OS           "macclassic"
404#elif defined(__VMS)
405#  define LZO_OS_VMS            1
406#  define LZO_INFO_OS           "vms"
407#elif (defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__)
408#  define LZO_OS_CONSOLE        1
409#  define LZO_OS_CONSOLE_PS2    1
410#  define LZO_INFO_OS           "console"
411#  define LZO_INFO_OS_CONSOLE   "ps2"
412#elif defined(__mips__) && defined(__psp__)
413#  define LZO_OS_CONSOLE        1
414#  define LZO_OS_CONSOLE_PSP    1
415#  define LZO_INFO_OS           "console"
416#  define LZO_INFO_OS_CONSOLE   "psp"
417#else
418#  define LZO_OS_POSIX          1
419#  define LZO_INFO_OS           "posix"
420#endif
421#if (LZO_OS_POSIX)
422#  if defined(_AIX) || defined(__AIX__) || defined(__aix__)
423#    define LZO_OS_POSIX_AIX        1
424#    define LZO_INFO_OS_POSIX       "aix"
425#  elif defined(__FreeBSD__)
426#    define LZO_OS_POSIX_FREEBSD    1
427#    define LZO_INFO_OS_POSIX       "freebsd"
428#  elif defined(__hpux__) || defined(__hpux)
429#    define LZO_OS_POSIX_HPUX       1
430#    define LZO_INFO_OS_POSIX       "hpux"
431#  elif defined(__INTERIX)
432#    define LZO_OS_POSIX_INTERIX    1
433#    define LZO_INFO_OS_POSIX       "interix"
434#  elif defined(__IRIX__) || defined(__irix__)
435#    define LZO_OS_POSIX_IRIX       1
436#    define LZO_INFO_OS_POSIX       "irix"
437#  elif defined(__linux__) || defined(__linux) || defined(__LINUX__)
438#    define LZO_OS_POSIX_LINUX      1
439#    define LZO_INFO_OS_POSIX       "linux"
440#  elif defined(__APPLE__) && defined(__MACH__)
441#    if ((__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__-0) >= 20000)
442#      define LZO_OS_POSIX_DARWIN     1040
443#      define LZO_INFO_OS_POSIX       "darwin_iphone"
444#    elif ((__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0) >= 1040)
445#      define LZO_OS_POSIX_DARWIN     __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
446#      define LZO_INFO_OS_POSIX       "darwin"
447#    else
448#      define LZO_OS_POSIX_DARWIN     1
449#      define LZO_INFO_OS_POSIX       "darwin"
450#    endif
451#    define LZO_OS_POSIX_MACOSX     LZO_OS_POSIX_DARWIN
452#  elif defined(__minix__) || defined(__minix)
453#    define LZO_OS_POSIX_MINIX      1
454#    define LZO_INFO_OS_POSIX       "minix"
455#  elif defined(__NetBSD__)
456#    define LZO_OS_POSIX_NETBSD     1
457#    define LZO_INFO_OS_POSIX       "netbsd"
458#  elif defined(__OpenBSD__)
459#    define LZO_OS_POSIX_OPENBSD    1
460#    define LZO_INFO_OS_POSIX       "openbsd"
461#  elif defined(__osf__)
462#    define LZO_OS_POSIX_OSF        1
463#    define LZO_INFO_OS_POSIX       "osf"
464#  elif defined(__solaris__) || defined(__sun)
465#    if defined(__SVR4) || defined(__svr4__)
466#      define LZO_OS_POSIX_SOLARIS  1
467#      define LZO_INFO_OS_POSIX     "solaris"
468#    else
469#      define LZO_OS_POSIX_SUNOS    1
470#      define LZO_INFO_OS_POSIX     "sunos"
471#    endif
472#  elif defined(__ultrix__) || defined(__ultrix)
473#    define LZO_OS_POSIX_ULTRIX     1
474#    define LZO_INFO_OS_POSIX       "ultrix"
475#  elif defined(_UNICOS)
476#    define LZO_OS_POSIX_UNICOS     1
477#    define LZO_INFO_OS_POSIX       "unicos"
478#  else
479#    define LZO_OS_POSIX_UNKNOWN    1
480#    define LZO_INFO_OS_POSIX       "unknown"
481#  endif
482#endif
483#endif
484#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
485#  if (UINT_MAX != LZO_0xffffL)
486#    error "unexpected configuration - check your compiler defines"
487#  endif
488#  if (ULONG_MAX != LZO_0xffffffffL)
489#    error "unexpected configuration - check your compiler defines"
490#  endif
491#endif
492#if (LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_WIN32 || LZO_OS_WIN64)
493#  if (UINT_MAX != LZO_0xffffffffL)
494#    error "unexpected configuration - check your compiler defines"
495#  endif
496#  if (ULONG_MAX != LZO_0xffffffffL)
497#    error "unexpected configuration - check your compiler defines"
498#  endif
499#endif
500#if defined(CIL) && defined(_GNUCC) && defined(__GNUC__)
501#  define LZO_CC_CILLY          1
502#  define LZO_INFO_CC           "Cilly"
503#  if defined(__CILLY__)
504#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__CILLY__)
505#  else
506#    define LZO_INFO_CCVER      "unknown"
507#  endif
508#elif 0 && defined(SDCC) && defined(__VERSION__) && !defined(__GNUC__)
509#  define LZO_CC_SDCC           1
510#  define LZO_INFO_CC           "sdcc"
511#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(SDCC)
512#elif defined(__PATHSCALE__) && defined(__PATHCC_PATCHLEVEL__)
513#  define LZO_CC_PATHSCALE      (__PATHCC__ * 0x10000L + (__PATHCC_MINOR__-0) * 0x100 + (__PATHCC_PATCHLEVEL__-0))
514#  define LZO_INFO_CC           "Pathscale C"
515#  define LZO_INFO_CCVER        __PATHSCALE__
516#  if defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
517#    define LZO_CC_PATHSCALE_GNUC (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
518#  endif
519#elif defined(__INTEL_COMPILER) && ((__INTEL_COMPILER-0) > 0)
520#  define LZO_CC_INTELC         __INTEL_COMPILER
521#  define LZO_INFO_CC           "Intel C"
522#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__INTEL_COMPILER)
523#  if defined(_MSC_VER) && ((_MSC_VER-0) > 0)
524#    define LZO_CC_INTELC_MSC   _MSC_VER
525#  elif defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
526#    define LZO_CC_INTELC_GNUC   (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
527#  endif
528#elif defined(__POCC__) && defined(_WIN32)
529#  define LZO_CC_PELLESC        1
530#  define LZO_INFO_CC           "Pelles C"
531#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__POCC__)
532#elif defined(__ARMCC_VERSION) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
533#  if defined(__GNUC_PATCHLEVEL__)
534#    define LZO_CC_ARMCC_GNUC   (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
535#  else
536#    define LZO_CC_ARMCC_GNUC   (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100)
537#  endif
538#  define LZO_CC_ARMCC          __ARMCC_VERSION
539#  define LZO_INFO_CC           "ARM C Compiler"
540#  define LZO_INFO_CCVER        __VERSION__
541#elif defined(__clang__) && defined(__llvm__) && defined(__VERSION__)
542#  if defined(__clang_major__) && defined(__clang_minor__) && defined(__clang_patchlevel__)
543#    define LZO_CC_CLANG        (__clang_major__ * 0x10000L + (__clang_minor__-0) * 0x100 + (__clang_patchlevel__-0))
544#  else
545#    define LZO_CC_CLANG        0x010000L
546#  endif
547#  if defined(_MSC_VER) && ((_MSC_VER-0) > 0)
548#    define LZO_CC_CLANG_MSC    _MSC_VER
549#  elif defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
550#    define LZO_CC_CLANG_GNUC   (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
551#  endif
552#  define LZO_INFO_CC           "clang"
553#  define LZO_INFO_CCVER        __VERSION__
554#elif defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
555#  if defined(__GNUC_PATCHLEVEL__)
556#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
557#  else
558#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100)
559#  endif
560#  define LZO_CC_LLVM           LZO_CC_LLVM_GNUC
561#  define LZO_INFO_CC           "llvm-gcc"
562#  define LZO_INFO_CCVER        __VERSION__
563#elif defined(__ACK__) && defined(_ACK)
564#  define LZO_CC_ACK            1
565#  define LZO_INFO_CC           "Amsterdam Compiler Kit C"
566#  define LZO_INFO_CCVER        "unknown"
567#elif defined(__ARMCC_VERSION) && !defined(__GNUC__)
568#  define LZO_CC_ARMCC          __ARMCC_VERSION
569#  define LZO_CC_ARMCC_ARMCC    __ARMCC_VERSION
570#  define LZO_INFO_CC           "ARM C Compiler"
571#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__ARMCC_VERSION)
572#elif defined(__AZTEC_C__)
573#  define LZO_CC_AZTECC         1
574#  define LZO_INFO_CC           "Aztec C"
575#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__AZTEC_C__)
576#elif defined(__CODEGEARC__)
577#  define LZO_CC_CODEGEARC      1
578#  define LZO_INFO_CC           "CodeGear C"
579#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__CODEGEARC__)
580#elif defined(__BORLANDC__)
581#  define LZO_CC_BORLANDC       1
582#  define LZO_INFO_CC           "Borland C"
583#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__BORLANDC__)
584#elif defined(_CRAYC) && defined(_RELEASE)
585#  define LZO_CC_CRAYC          1
586#  define LZO_INFO_CC           "Cray C"
587#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(_RELEASE)
588#elif defined(__DMC__) && defined(__SC__)
589#  define LZO_CC_DMC            1
590#  define LZO_INFO_CC           "Digital Mars C"
591#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__DMC__)
592#elif defined(__DECC)
593#  define LZO_CC_DECC           1
594#  define LZO_INFO_CC           "DEC C"
595#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__DECC)
596#elif (defined(__ghs) || defined(__ghs__)) && defined(__GHS_VERSION_NUMBER) && ((__GHS_VERSION_NUMBER-0) > 0)
597#  define LZO_CC_GHS            1
598#  define LZO_INFO_CC           "Green Hills C"
599#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__GHS_VERSION_NUMBER)
600#  if defined(_MSC_VER) && ((_MSC_VER-0) > 0)
601#    define LZO_CC_GHS_MSC      _MSC_VER
602#  elif defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
603#    define LZO_CC_GHS_GNUC     (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
604#  endif
605#elif defined(__HIGHC__)
606#  define LZO_CC_HIGHC          1
607#  define LZO_INFO_CC           "MetaWare High C"
608#  define LZO_INFO_CCVER        "unknown"
609#elif defined(__HP_aCC) && ((__HP_aCC-0) > 0)
610#  define LZO_CC_HPACC          __HP_aCC
611#  define LZO_INFO_CC           "HP aCC"
612#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__HP_aCC)
613#elif defined(__IAR_SYSTEMS_ICC__)
614#  define LZO_CC_IARC           1
615#  define LZO_INFO_CC           "IAR C"
616#  if defined(__VER__)
617#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__VER__)
618#  else
619#    define LZO_INFO_CCVER      "unknown"
620#  endif
621#elif defined(__IBMC__) && ((__IBMC__-0) > 0)
622#  define LZO_CC_IBMC           __IBMC__
623#  define LZO_INFO_CC           "IBM C"
624#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__IBMC__)
625#elif defined(__IBMCPP__) && ((__IBMCPP__-0) > 0)
626#  define LZO_CC_IBMC           __IBMCPP__
627#  define LZO_INFO_CC           "IBM C"
628#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__IBMCPP__)
629#elif defined(__KEIL__) && defined(__C166__)
630#  define LZO_CC_KEILC          1
631#  define LZO_INFO_CC           "Keil C"
632#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__C166__)
633#elif defined(__LCC__) && defined(_WIN32) && defined(__LCCOPTIMLEVEL)
634#  define LZO_CC_LCCWIN32       1
635#  define LZO_INFO_CC           "lcc-win32"
636#  define LZO_INFO_CCVER        "unknown"
637#elif defined(__LCC__)
638#  define LZO_CC_LCC            1
639#  define LZO_INFO_CC           "lcc"
640#  if defined(__LCC_VERSION__)
641#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__LCC_VERSION__)
642#  else
643#    define LZO_INFO_CCVER      "unknown"
644#  endif
645#elif defined(__MWERKS__) && ((__MWERKS__-0) > 0)
646#  define LZO_CC_MWERKS         __MWERKS__
647#  define LZO_INFO_CC           "Metrowerks C"
648#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__MWERKS__)
649#elif (defined(__NDPC__) || defined(__NDPX__)) && defined(__i386)
650#  define LZO_CC_NDPC           1
651#  define LZO_INFO_CC           "Microway NDP C"
652#  define LZO_INFO_CCVER        "unknown"
653#elif defined(__PACIFIC__)
654#  define LZO_CC_PACIFICC       1
655#  define LZO_INFO_CC           "Pacific C"
656#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__PACIFIC__)
657#elif defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__)
658#  if defined(__PGIC_PATCHLEVEL__)
659#    define LZO_CC_PGI          (__PGIC__ * 0x10000L + (__PGIC_MINOR__-0) * 0x100 + (__PGIC_PATCHLEVEL__-0))
660#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__PGIC__) "." LZO_PP_MACRO_EXPAND(__PGIC_MINOR__) "." LZO_PP_MACRO_EXPAND(__PGIC_PATCHLEVEL__)
661#  else
662#    define LZO_CC_PGI          (__PGIC__ * 0x10000L + (__PGIC_MINOR__-0) * 0x100)
663#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__PGIC__) "." LZO_PP_MACRO_EXPAND(__PGIC_MINOR__) ".0"
664#  endif
665#  define LZO_INFO_CC           "Portland Group PGI C"
666#elif defined(__PGI) && (defined(__linux__) || defined(__WIN32__))
667#  define LZO_CC_PGI            1
668#  define LZO_INFO_CC           "Portland Group PGI C"
669#  define LZO_INFO_CCVER        "unknown"
670#elif defined(__PUREC__) && defined(__TOS__)
671#  define LZO_CC_PUREC          1
672#  define LZO_INFO_CC           "Pure C"
673#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__PUREC__)
674#elif defined(__SC__) && defined(__ZTC__)
675#  define LZO_CC_SYMANTECC      1
676#  define LZO_INFO_CC           "Symantec C"
677#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__SC__)
678#elif defined(__SUNPRO_C)
679#  define LZO_INFO_CC           "SunPro C"
680#  if ((__SUNPRO_C-0) > 0)
681#    define LZO_CC_SUNPROC      __SUNPRO_C
682#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__SUNPRO_C)
683#  else
684#    define LZO_CC_SUNPROC      1
685#    define LZO_INFO_CCVER      "unknown"
686#  endif
687#elif defined(__SUNPRO_CC)
688#  define LZO_INFO_CC           "SunPro C"
689#  if ((__SUNPRO_CC-0) > 0)
690#    define LZO_CC_SUNPROC      __SUNPRO_CC
691#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__SUNPRO_CC)
692#  else
693#    define LZO_CC_SUNPROC      1
694#    define LZO_INFO_CCVER      "unknown"
695#  endif
696#elif defined(__TINYC__)
697#  define LZO_CC_TINYC          1
698#  define LZO_INFO_CC           "Tiny C"
699#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__TINYC__)
700#elif defined(__TSC__)
701#  define LZO_CC_TOPSPEEDC      1
702#  define LZO_INFO_CC           "TopSpeed C"
703#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__TSC__)
704#elif defined(__WATCOMC__)
705#  define LZO_CC_WATCOMC        1
706#  define LZO_INFO_CC           "Watcom C"
707#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__WATCOMC__)
708#elif defined(__TURBOC__)
709#  define LZO_CC_TURBOC         1
710#  define LZO_INFO_CC           "Turbo C"
711#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__TURBOC__)
712#elif defined(__ZTC__)
713#  define LZO_CC_ZORTECHC       1
714#  define LZO_INFO_CC           "Zortech C"
715#  if ((__ZTC__-0) == 0x310)
716#    define LZO_INFO_CCVER      "0x310"
717#  else
718#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__ZTC__)
719#  endif
720#elif defined(__GNUC__) && defined(__VERSION__)
721#  if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
722#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
723#  elif defined(__GNUC_MINOR__)
724#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100)
725#  else
726#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L)
727#  endif
728#  define LZO_INFO_CC           "gcc"
729#  define LZO_INFO_CCVER        __VERSION__
730#elif defined(_MSC_VER) && ((_MSC_VER-0) > 0)
731#  define LZO_CC_MSC            _MSC_VER
732#  define LZO_INFO_CC           "Microsoft C"
733#  if defined(_MSC_FULL_VER)
734#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER) "." LZO_PP_MACRO_EXPAND(_MSC_FULL_VER)
735#  else
736#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER)
737#  endif
738#else
739#  define LZO_CC_UNKNOWN        1
740#  define LZO_INFO_CC           "unknown"
741#  define LZO_INFO_CCVER        "unknown"
742#endif
743#if (LZO_CC_GNUC) && defined(__OPEN64__)
744#  if defined(__OPENCC__) && defined(__OPENCC_MINOR__) && defined(__OPENCC_PATCHLEVEL__)
745#    define LZO_CC_OPEN64       (__OPENCC__ * 0x10000L + (__OPENCC_MINOR__-0) * 0x100 + (__OPENCC_PATCHLEVEL__-0))
746#    define LZO_CC_OPEN64_GNUC  LZO_CC_GNUC
747#  endif
748#endif
749#if (LZO_CC_GNUC) && defined(__PCC__)
750#  if defined(__PCC__) && defined(__PCC_MINOR__) && defined(__PCC_MINORMINOR__)
751#    define LZO_CC_PCC          (__PCC__ * 0x10000L + (__PCC_MINOR__-0) * 0x100 + (__PCC_MINORMINOR__-0))
752#    define LZO_CC_PCC_GNUC     LZO_CC_GNUC
753#  endif
754#endif
755#if 0 && (LZO_CC_MSC && (_MSC_VER >= 1200)) && !defined(_MSC_FULL_VER)
756#  error "LZO_CC_MSC: _MSC_FULL_VER is not defined"
757#endif
758#if !defined(__LZO_ARCH_OVERRIDE) && !(LZO_ARCH_GENERIC) && defined(_CRAY)
759#  if (UINT_MAX > LZO_0xffffffffL) && defined(_CRAY)
760#    if defined(_CRAYMPP) || defined(_CRAYT3D) || defined(_CRAYT3E)
761#      define LZO_ARCH_CRAY_MPP     1
762#    elif defined(_CRAY1)
763#      define LZO_ARCH_CRAY_PVP     1
764#    endif
765#  endif
766#endif
767#if !defined(__LZO_ARCH_OVERRIDE)
768#if (LZO_ARCH_GENERIC)
769#  define LZO_INFO_ARCH             "generic"
770#elif (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
771#  define LZO_ARCH_I086             1
772#  define LZO_INFO_ARCH             "i086"
773#elif defined(__aarch64__)
774#  define LZO_ARCH_ARM64            1
775#  define LZO_INFO_ARCH             "arm64"
776#elif defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA)
777#  define LZO_ARCH_ALPHA            1
778#  define LZO_INFO_ARCH             "alpha"
779#elif (LZO_ARCH_CRAY_MPP) && (defined(_CRAYT3D) || defined(_CRAYT3E))
780#  define LZO_ARCH_ALPHA            1
781#  define LZO_INFO_ARCH             "alpha"
782#elif defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64)
783#  define LZO_ARCH_AMD64            1
784#  define LZO_INFO_ARCH             "amd64"
785#elif defined(__thumb__) || (defined(_M_ARM) && defined(_M_THUMB))
786#  define LZO_ARCH_ARM              1
787#  define LZO_ARCH_ARM_THUMB        1
788#  define LZO_INFO_ARCH             "arm_thumb"
789#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCARM__)
790#  define LZO_ARCH_ARM              1
791#  if defined(__CPU_MODE__) && ((__CPU_MODE__-0) == 1)
792#    define LZO_ARCH_ARM_THUMB      1
793#    define LZO_INFO_ARCH           "arm_thumb"
794#  elif defined(__CPU_MODE__) && ((__CPU_MODE__-0) == 2)
795#    define LZO_INFO_ARCH           "arm"
796#  else
797#    define LZO_INFO_ARCH           "arm"
798#  endif
799#elif defined(__arm__) || defined(_M_ARM)
800#  define LZO_ARCH_ARM              1
801#  define LZO_INFO_ARCH             "arm"
802#elif (UINT_MAX <= LZO_0xffffL) && defined(__AVR__)
803#  define LZO_ARCH_AVR              1
804#  define LZO_INFO_ARCH             "avr"
805#elif defined(__avr32__) || defined(__AVR32__)
806#  define LZO_ARCH_AVR32            1
807#  define LZO_INFO_ARCH             "avr32"
808#elif defined(__bfin__)
809#  define LZO_ARCH_BLACKFIN         1
810#  define LZO_INFO_ARCH             "blackfin"
811#elif (UINT_MAX == LZO_0xffffL) && defined(__C166__)
812#  define LZO_ARCH_C166             1
813#  define LZO_INFO_ARCH             "c166"
814#elif defined(__cris__)
815#  define LZO_ARCH_CRIS             1
816#  define LZO_INFO_ARCH             "cris"
817#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCEZ80__)
818#  define LZO_ARCH_EZ80             1
819#  define LZO_INFO_ARCH             "ez80"
820#elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
821#  define LZO_ARCH_H8300            1
822#  define LZO_INFO_ARCH             "h8300"
823#elif defined(__hppa__) || defined(__hppa)
824#  define LZO_ARCH_HPPA             1
825#  define LZO_INFO_ARCH             "hppa"
826#elif defined(__386__) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_M_I386)
827#  define LZO_ARCH_I386             1
828#  define LZO_ARCH_IA32             1
829#  define LZO_INFO_ARCH             "i386"
830#elif (LZO_CC_ZORTECHC && defined(__I86__))
831#  define LZO_ARCH_I386             1
832#  define LZO_ARCH_IA32             1
833#  define LZO_INFO_ARCH             "i386"
834#elif (LZO_OS_DOS32 && LZO_CC_HIGHC) && defined(_I386)
835#  define LZO_ARCH_I386             1
836#  define LZO_ARCH_IA32             1
837#  define LZO_INFO_ARCH             "i386"
838#elif defined(__ia64__) || defined(__ia64) || defined(_M_IA64)
839#  define LZO_ARCH_IA64             1
840#  define LZO_INFO_ARCH             "ia64"
841#elif (UINT_MAX == LZO_0xffffL) && defined(__m32c__)
842#  define LZO_ARCH_M16C             1
843#  define LZO_INFO_ARCH             "m16c"
844#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCM16C__)
845#  define LZO_ARCH_M16C             1
846#  define LZO_INFO_ARCH             "m16c"
847#elif defined(__m32r__)
848#  define LZO_ARCH_M32R             1
849#  define LZO_INFO_ARCH             "m32r"
850#elif (LZO_OS_TOS) || defined(__m68k__) || defined(__m68000__) || defined(__mc68000__) || defined(__mc68020__) || defined(_M_M68K)
851#  define LZO_ARCH_M68K             1
852#  define LZO_INFO_ARCH             "m68k"
853#elif (UINT_MAX == LZO_0xffffL) && defined(__C251__)
854#  define LZO_ARCH_MCS251           1
855#  define LZO_INFO_ARCH             "mcs251"
856#elif (UINT_MAX == LZO_0xffffL) && defined(__C51__)
857#  define LZO_ARCH_MCS51            1
858#  define LZO_INFO_ARCH             "mcs51"
859#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__)
860#  define LZO_ARCH_MCS51            1
861#  define LZO_INFO_ARCH             "mcs51"
862#elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000)
863#  define LZO_ARCH_MIPS             1
864#  define LZO_INFO_ARCH             "mips"
865#elif (UINT_MAX == LZO_0xffffL) && defined(__MSP430__)
866#  define LZO_ARCH_MSP430           1
867#  define LZO_INFO_ARCH             "msp430"
868#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC430__)
869#  define LZO_ARCH_MSP430           1
870#  define LZO_INFO_ARCH             "msp430"
871#elif defined(__powerpc__) || defined(__powerpc) || defined(__ppc__) || defined(__PPC__) || defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PWR)
872#  define LZO_ARCH_POWERPC          1
873#  define LZO_INFO_ARCH             "powerpc"
874#elif defined(__s390__) || defined(__s390) || defined(__s390x__) || defined(__s390x)
875#  define LZO_ARCH_S390             1
876#  define LZO_INFO_ARCH             "s390"
877#elif defined(__sh__) || defined(_M_SH)
878#  define LZO_ARCH_SH               1
879#  define LZO_INFO_ARCH             "sh"
880#elif defined(__sparc__) || defined(__sparc) || defined(__sparcv8)
881#  define LZO_ARCH_SPARC            1
882#  define LZO_INFO_ARCH             "sparc"
883#elif defined(__SPU__)
884#  define LZO_ARCH_SPU              1
885#  define LZO_INFO_ARCH             "spu"
886#elif (UINT_MAX == LZO_0xffffL) && defined(__z80)
887#  define LZO_ARCH_Z80              1
888#  define LZO_INFO_ARCH             "z80"
889#elif (LZO_ARCH_CRAY_PVP)
890#  if defined(_CRAYSV1)
891#    define LZO_ARCH_CRAY_SV1       1
892#    define LZO_INFO_ARCH           "cray_sv1"
893#  elif (_ADDR64)
894#    define LZO_ARCH_CRAY_T90       1
895#    define LZO_INFO_ARCH           "cray_t90"
896#  elif (_ADDR32)
897#    define LZO_ARCH_CRAY_YMP       1
898#    define LZO_INFO_ARCH           "cray_ymp"
899#  else
900#    define LZO_ARCH_CRAY_XMP       1
901#    define LZO_INFO_ARCH           "cray_xmp"
902#  endif
903#else
904#  define LZO_ARCH_UNKNOWN          1
905#  define LZO_INFO_ARCH             "unknown"
906#endif
907#endif
908#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_DOS32 || LZO_OS_OS2)
909#  error "FIXME - missing define for CPU architecture"
910#endif
911#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN32)
912#  error "FIXME - missing LZO_OS_WIN32 define for CPU architecture"
913#endif
914#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN64)
915#  error "FIXME - missing LZO_OS_WIN64 define for CPU architecture"
916#endif
917#if (LZO_OS_OS216 || LZO_OS_WIN16)
918#  define LZO_ARCH_I086PM           1
919#elif 1 && (LZO_OS_DOS16 && defined(BLX286))
920#  define LZO_ARCH_I086PM           1
921#elif 1 && (LZO_OS_DOS16 && defined(DOSX286))
922#  define LZO_ARCH_I086PM           1
923#elif 1 && (LZO_OS_DOS16 && LZO_CC_BORLANDC && defined(__DPMI16__))
924#  define LZO_ARCH_I086PM           1
925#endif
926#if (LZO_ARCH_AMD64 && !LZO_ARCH_X64)
927#  define LZO_ARCH_X64              1
928#elif (!LZO_ARCH_AMD64 && LZO_ARCH_X64) && defined(__LZO_ARCH_OVERRIDE)
929#  define LZO_ARCH_AMD64            1
930#endif
931#if (LZO_ARCH_ARM64 && !LZO_ARCH_AARCH64)
932#  define LZO_ARCH_AARCH64          1
933#elif (!LZO_ARCH_ARM64 && LZO_ARCH_AARCH64) && defined(__LZO_ARCH_OVERRIDE)
934#  define LZO_ARCH_ARM64            1
935#endif
936#if (LZO_ARCH_I386 && !LZO_ARCH_X86)
937#  define LZO_ARCH_X86              1
938#elif (!LZO_ARCH_I386 && LZO_ARCH_X86) && defined(__LZO_ARCH_OVERRIDE)
939#  define LZO_ARCH_I386            1
940#endif
941#if (LZO_ARCH_AMD64 && !LZO_ARCH_X64) || (!LZO_ARCH_AMD64 && LZO_ARCH_X64)
942#  error "unexpected configuration - check your compiler defines"
943#endif
944#if (LZO_ARCH_ARM64 && !LZO_ARCH_AARCH64) || (!LZO_ARCH_ARM64 && LZO_ARCH_AARCH64)
945#  error "unexpected configuration - check your compiler defines"
946#endif
947#if (LZO_ARCH_I386 && !LZO_ARCH_X86) || (!LZO_ARCH_I386 && LZO_ARCH_X86)
948#  error "unexpected configuration - check your compiler defines"
949#endif
950#if (LZO_ARCH_ARM_THUMB && !LZO_ARCH_ARM)
951#  error "unexpected configuration - check your compiler defines"
952#endif
953#if (LZO_ARCH_ARM_THUMB1 && !LZO_ARCH_ARM_THUMB)
954#  error "unexpected configuration - check your compiler defines"
955#endif
956#if (LZO_ARCH_ARM_THUMB2 && !LZO_ARCH_ARM_THUMB)
957#  error "unexpected configuration - check your compiler defines"
958#endif
959#if (LZO_ARCH_ARM_THUMB1 && LZO_ARCH_ARM_THUMB2)
960#  error "unexpected configuration - check your compiler defines"
961#endif
962#if (LZO_ARCH_I086PM && !LZO_ARCH_I086)
963#  error "unexpected configuration - check your compiler defines"
964#endif
965#if (LZO_ARCH_I086)
966#  if (UINT_MAX != LZO_0xffffL)
967#    error "unexpected configuration - check your compiler defines"
968#  endif
969#  if (ULONG_MAX != LZO_0xffffffffL)
970#    error "unexpected configuration - check your compiler defines"
971#  endif
972#endif
973#if (LZO_ARCH_I386)
974#  if (UINT_MAX != LZO_0xffffL) && defined(__i386_int16__)
975#    error "unexpected configuration - check your compiler defines"
976#  endif
977#  if (UINT_MAX != LZO_0xffffffffL) && !defined(__i386_int16__)
978#    error "unexpected configuration - check your compiler defines"
979#  endif
980#  if (ULONG_MAX != LZO_0xffffffffL)
981#    error "unexpected configuration - check your compiler defines"
982#  endif
983#endif
984#if (LZO_ARCH_AMD64 || LZO_ARCH_I386)
985#  if !defined(LZO_TARGET_FEATURE_SSE2)
986#    if defined(__SSE2__)
987#      define LZO_TARGET_FEATURE_SSE2       1
988#    elif defined(_MSC_VER) && ((defined(_M_IX86_FP) && ((_M_IX86_FP)+0 >= 2)) || defined(_M_AMD64))
989#      define LZO_TARGET_FEATURE_SSE2       1
990#    endif
991#  endif
992#  if !defined(LZO_TARGET_FEATURE_SSSE3)
993#  if (LZO_TARGET_FEATURE_SSE2)
994#    if defined(__SSSE3__)
995#      define LZO_TARGET_FEATURE_SSSE3      1
996#    elif defined(_MSC_VER) && defined(__AVX__)
997#      define LZO_TARGET_FEATURE_SSSE3      1
998#    endif
999#  endif
1000#  endif
1001#  if !defined(LZO_TARGET_FEATURE_SSE4_2)
1002#  if (LZO_TARGET_FEATURE_SSSE3)
1003#    if defined(__SSE4_2__)
1004#      define LZO_TARGET_FEATURE_SSE4_2     1
1005#    endif
1006#  endif
1007#  endif
1008#  if !defined(LZO_TARGET_FEATURE_AVX)
1009#  if (LZO_TARGET_FEATURE_SSSE3)
1010#    if defined(__AVX__)
1011#      define LZO_TARGET_FEATURE_AVX        1
1012#    endif
1013#  endif
1014#  endif
1015#  if !defined(LZO_TARGET_FEATURE_AVX2)
1016#  if (LZO_TARGET_FEATURE_AVX)
1017#    if defined(__AVX2__)
1018#      define LZO_TARGET_FEATURE_AVX2       1
1019#    endif
1020#  endif
1021#  endif
1022#endif
1023#if (LZO_TARGET_FEATURE_SSSE3 && !(LZO_TARGET_FEATURE_SSE2))
1024#  error "unexpected configuration - check your compiler defines"
1025#endif
1026#if (LZO_TARGET_FEATURE_SSE4_2 && !(LZO_TARGET_FEATURE_SSSE3))
1027#  error "unexpected configuration - check your compiler defines"
1028#endif
1029#if (LZO_TARGET_FEATURE_AVX && !(LZO_TARGET_FEATURE_SSSE3))
1030#  error "unexpected configuration - check your compiler defines"
1031#endif
1032#if (LZO_TARGET_FEATURE_AVX2 && !(LZO_TARGET_FEATURE_AVX))
1033#  error "unexpected configuration - check your compiler defines"
1034#endif
1035#if (LZO_ARCH_ARM)
1036#  if !defined(LZO_TARGET_FEATURE_NEON)
1037#    if defined(__ARM_NEON__)
1038#      define LZO_TARGET_FEATURE_NEON       1
1039#    endif
1040#  endif
1041#elif (LZO_ARCH_ARM64)
1042#  if !defined(LZO_TARGET_FEATURE_NEON)
1043#    if 1
1044#      define LZO_TARGET_FEATURE_NEON       1
1045#    endif
1046#  endif
1047#endif
1048#if 0
1049#elif !defined(__LZO_MM_OVERRIDE)
1050#if (LZO_ARCH_I086)
1051#if (UINT_MAX != LZO_0xffffL)
1052#  error "unexpected configuration - check your compiler defines"
1053#endif
1054#if defined(__TINY__) || defined(M_I86TM) || defined(_M_I86TM)
1055#  define LZO_MM_TINY           1
1056#elif defined(__HUGE__) || defined(_HUGE_) || defined(M_I86HM) || defined(_M_I86HM)
1057#  define LZO_MM_HUGE           1
1058#elif defined(__SMALL__) || defined(M_I86SM) || defined(_M_I86SM) || defined(SMALL_MODEL)
1059#  define LZO_MM_SMALL          1
1060#elif defined(__MEDIUM__) || defined(M_I86MM) || defined(_M_I86MM)
1061#  define LZO_MM_MEDIUM         1
1062#elif defined(__COMPACT__) || defined(M_I86CM) || defined(_M_I86CM)
1063#  define LZO_MM_COMPACT        1
1064#elif defined(__LARGE__) || defined(M_I86LM) || defined(_M_I86LM) || defined(LARGE_MODEL)
1065#  define LZO_MM_LARGE          1
1066#elif (LZO_CC_AZTECC)
1067#  if defined(_LARGE_CODE) && defined(_LARGE_DATA)
1068#    define LZO_MM_LARGE        1
1069#  elif defined(_LARGE_CODE)
1070#    define LZO_MM_MEDIUM       1
1071#  elif defined(_LARGE_DATA)
1072#    define LZO_MM_COMPACT      1
1073#  else
1074#    define LZO_MM_SMALL        1
1075#  endif
1076#elif (LZO_CC_ZORTECHC && defined(__VCM__))
1077#  define LZO_MM_LARGE          1
1078#else
1079#  error "unknown LZO_ARCH_I086 memory model"
1080#endif
1081#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
1082#define LZO_HAVE_MM_HUGE_PTR        1
1083#define LZO_HAVE_MM_HUGE_ARRAY      1
1084#if (LZO_MM_TINY)
1085#  undef LZO_HAVE_MM_HUGE_ARRAY
1086#endif
1087#if (LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_ZORTECHC)
1088#  undef LZO_HAVE_MM_HUGE_PTR
1089#  undef LZO_HAVE_MM_HUGE_ARRAY
1090#elif (LZO_CC_DMC || LZO_CC_SYMANTECC)
1091#  undef LZO_HAVE_MM_HUGE_ARRAY
1092#elif (LZO_CC_MSC && defined(_QC))
1093#  undef LZO_HAVE_MM_HUGE_ARRAY
1094#  if (_MSC_VER < 600)
1095#    undef LZO_HAVE_MM_HUGE_PTR
1096#  endif
1097#elif (LZO_CC_TURBOC && (__TURBOC__ < 0x0295))
1098#  undef LZO_HAVE_MM_HUGE_ARRAY
1099#endif
1100#if (LZO_ARCH_I086PM) && !(LZO_HAVE_MM_HUGE_PTR)
1101#  if (LZO_OS_DOS16)
1102#    error "unexpected configuration - check your compiler defines"
1103#  elif (LZO_CC_ZORTECHC)
1104#  else
1105#    error "unexpected configuration - check your compiler defines"
1106#  endif
1107#endif
1108#ifdef __cplusplus
1109extern "C" {
1110#endif
1111#if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0200))
1112   extern void __near __cdecl _AHSHIFT(void);
1113#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
1114#elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
1115   extern void __near __cdecl _AHSHIFT(void);
1116#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
1117#elif (LZO_CC_MSC || LZO_CC_TOPSPEEDC)
1118   extern void __near __cdecl _AHSHIFT(void);
1119#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
1120#elif (LZO_CC_TURBOC && (__TURBOC__ >= 0x0295))
1121   extern void __near __cdecl _AHSHIFT(void);
1122#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
1123#elif ((LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_TURBOC) && LZO_OS_DOS16)
1124#  define LZO_MM_AHSHIFT      12
1125#elif (LZO_CC_WATCOMC)
1126   extern unsigned char _HShift;
1127#  define LZO_MM_AHSHIFT      ((unsigned) _HShift)
1128#else
1129#  error "FIXME - implement LZO_MM_AHSHIFT"
1130#endif
1131#ifdef __cplusplus
1132}
1133#endif
1134#endif
1135#elif (LZO_ARCH_C166)
1136#if !defined(__MODEL__)
1137#  error "FIXME - LZO_ARCH_C166 __MODEL__"
1138#elif ((__MODEL__) == 0)
1139#  define LZO_MM_SMALL          1
1140#elif ((__MODEL__) == 1)
1141#  define LZO_MM_SMALL          1
1142#elif ((__MODEL__) == 2)
1143#  define LZO_MM_LARGE          1
1144#elif ((__MODEL__) == 3)
1145#  define LZO_MM_TINY           1
1146#elif ((__MODEL__) == 4)
1147#  define LZO_MM_XTINY          1
1148#elif ((__MODEL__) == 5)
1149#  define LZO_MM_XSMALL         1
1150#else
1151#  error "FIXME - LZO_ARCH_C166 __MODEL__"
1152#endif
1153#elif (LZO_ARCH_MCS251)
1154#if !defined(__MODEL__)
1155#  error "FIXME - LZO_ARCH_MCS251 __MODEL__"
1156#elif ((__MODEL__) == 0)
1157#  define LZO_MM_SMALL          1
1158#elif ((__MODEL__) == 2)
1159#  define LZO_MM_LARGE          1
1160#elif ((__MODEL__) == 3)
1161#  define LZO_MM_TINY           1
1162#elif ((__MODEL__) == 4)
1163#  define LZO_MM_XTINY          1
1164#elif ((__MODEL__) == 5)
1165#  define LZO_MM_XSMALL         1
1166#else
1167#  error "FIXME - LZO_ARCH_MCS251 __MODEL__"
1168#endif
1169#elif (LZO_ARCH_MCS51)
1170#if !defined(__MODEL__)
1171#  error "FIXME - LZO_ARCH_MCS51 __MODEL__"
1172#elif ((__MODEL__) == 1)
1173#  define LZO_MM_SMALL          1
1174#elif ((__MODEL__) == 2)
1175#  define LZO_MM_LARGE          1
1176#elif ((__MODEL__) == 3)
1177#  define LZO_MM_TINY           1
1178#elif ((__MODEL__) == 4)
1179#  define LZO_MM_XTINY          1
1180#elif ((__MODEL__) == 5)
1181#  define LZO_MM_XSMALL         1
1182#else
1183#  error "FIXME - LZO_ARCH_MCS51 __MODEL__"
1184#endif
1185#elif (LZO_ARCH_CRAY_PVP)
1186#  define LZO_MM_PVP            1
1187#else
1188#  define LZO_MM_FLAT           1
1189#endif
1190#if (LZO_MM_COMPACT)
1191#  define LZO_INFO_MM           "compact"
1192#elif (LZO_MM_FLAT)
1193#  define LZO_INFO_MM           "flat"
1194#elif (LZO_MM_HUGE)
1195#  define LZO_INFO_MM           "huge"
1196#elif (LZO_MM_LARGE)
1197#  define LZO_INFO_MM           "large"
1198#elif (LZO_MM_MEDIUM)
1199#  define LZO_INFO_MM           "medium"
1200#elif (LZO_MM_PVP)
1201#  define LZO_INFO_MM           "pvp"
1202#elif (LZO_MM_SMALL)
1203#  define LZO_INFO_MM           "small"
1204#elif (LZO_MM_TINY)
1205#  define LZO_INFO_MM           "tiny"
1206#else
1207#  error "unknown memory model"
1208#endif
1209#endif
1210#if !defined(__lzo_gnuc_extension__)
1211#if (LZO_CC_GNUC >= 0x020800ul)
1212#  define __lzo_gnuc_extension__    __extension__
1213#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1214#  define __lzo_gnuc_extension__    __extension__
1215#elif (LZO_CC_IBMC >= 600)
1216#  define __lzo_gnuc_extension__    __extension__
1217#else
1218#endif
1219#endif
1220#if !defined(__lzo_gnuc_extension__)
1221#  define __lzo_gnuc_extension__    /*empty*/
1222#endif
1223#if !defined(LZO_CFG_USE_NEW_STYLE_CASTS) && defined(__cplusplus) && 0
1224#  if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020800ul))
1225#    define LZO_CFG_USE_NEW_STYLE_CASTS 0
1226#  elif (LZO_CC_INTELC && (__INTEL_COMPILER < 1200))
1227#    define LZO_CFG_USE_NEW_STYLE_CASTS 0
1228#  else
1229#    define LZO_CFG_USE_NEW_STYLE_CASTS 1
1230#  endif
1231#endif
1232#if !defined(LZO_CFG_USE_NEW_STYLE_CASTS)
1233#  define LZO_CFG_USE_NEW_STYLE_CASTS 0
1234#endif
1235#if !defined(__cplusplus)
1236#  if defined(LZO_CFG_USE_NEW_STYLE_CASTS)
1237#    undef LZO_CFG_USE_NEW_STYLE_CASTS
1238#  endif
1239#  define LZO_CFG_USE_NEW_STYLE_CASTS 0
1240#endif
1241#if !defined(LZO_REINTERPRET_CAST)
1242#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
1243#    define LZO_REINTERPRET_CAST(t,e)       (reinterpret_cast<t> (e))
1244#  endif
1245#endif
1246#if !defined(LZO_REINTERPRET_CAST)
1247#  define LZO_REINTERPRET_CAST(t,e)         ((t) (e))
1248#endif
1249#if !defined(LZO_STATIC_CAST)
1250#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
1251#    define LZO_STATIC_CAST(t,e)            (static_cast<t> (e))
1252#  endif
1253#endif
1254#if !defined(LZO_STATIC_CAST)
1255#  define LZO_STATIC_CAST(t,e)              ((t) (e))
1256#endif
1257#if !defined(LZO_STATIC_CAST2)
1258#  define LZO_STATIC_CAST2(t1,t2,e)         LZO_STATIC_CAST(t1, LZO_STATIC_CAST(t2, e))
1259#endif
1260#if !defined(LZO_UNCONST_CAST)
1261#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
1262#    define LZO_UNCONST_CAST(t,e)           (const_cast<t> (e))
1263#  elif (LZO_HAVE_MM_HUGE_PTR)
1264#    define LZO_UNCONST_CAST(t,e)           ((t) (e))
1265#  elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1266#    define LZO_UNCONST_CAST(t,e)           ((t) ((void *) ((lzo_uintptr_t) ((const void *) (e)))))
1267#  endif
1268#endif
1269#if !defined(LZO_UNCONST_CAST)
1270#  define LZO_UNCONST_CAST(t,e)             ((t) ((void *) ((const void *) (e))))
1271#endif
1272#if !defined(LZO_UNCONST_VOLATILE_CAST)
1273#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
1274#    define LZO_UNCONST_VOLATILE_CAST(t,e)  (const_cast<t> (e))
1275#  elif (LZO_HAVE_MM_HUGE_PTR)
1276#    define LZO_UNCONST_VOLATILE_CAST(t,e)  ((t) (e))
1277#  elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1278#    define LZO_UNCONST_VOLATILE_CAST(t,e)  ((t) ((volatile void *) ((lzo_uintptr_t) ((volatile const void *) (e)))))
1279#  endif
1280#endif
1281#if !defined(LZO_UNCONST_VOLATILE_CAST)
1282#  define LZO_UNCONST_VOLATILE_CAST(t,e)    ((t) ((volatile void *) ((volatile const void *) (e))))
1283#endif
1284#if !defined(LZO_UNVOLATILE_CAST)
1285#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
1286#    define LZO_UNVOLATILE_CAST(t,e)        (const_cast<t> (e))
1287#  elif (LZO_HAVE_MM_HUGE_PTR)
1288#    define LZO_UNVOLATILE_CAST(t,e)        ((t) (e))
1289#  elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1290#    define LZO_UNVOLATILE_CAST(t,e)        ((t) ((void *) ((lzo_uintptr_t) ((volatile void *) (e)))))
1291#  endif
1292#endif
1293#if !defined(LZO_UNVOLATILE_CAST)
1294#  define LZO_UNVOLATILE_CAST(t,e)          ((t) ((void *) ((volatile void *) (e))))
1295#endif
1296#if !defined(LZO_UNVOLATILE_CONST_CAST)
1297#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
1298#    define LZO_UNVOLATILE_CONST_CAST(t,e)  (const_cast<t> (e))
1299#  elif (LZO_HAVE_MM_HUGE_PTR)
1300#    define LZO_UNVOLATILE_CONST_CAST(t,e)  ((t) (e))
1301#  elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1302#    define LZO_UNVOLATILE_CONST_CAST(t,e)  ((t) ((const void *) ((lzo_uintptr_t) ((volatile const void *) (e)))))
1303#  endif
1304#endif
1305#if !defined(LZO_UNVOLATILE_CONST_CAST)
1306#  define LZO_UNVOLATILE_CONST_CAST(t,e)    ((t) ((const void *) ((volatile const void *) (e))))
1307#endif
1308#if !defined(LZO_PCAST)
1309#  if (LZO_HAVE_MM_HUGE_PTR)
1310#    define LZO_PCAST(t,e)                  ((t) (e))
1311#  endif
1312#endif
1313#if !defined(LZO_PCAST)
1314#  define LZO_PCAST(t,e)                    LZO_STATIC_CAST(t, LZO_STATIC_CAST(void *, e))
1315#endif
1316#if !defined(LZO_CCAST)
1317#  if (LZO_HAVE_MM_HUGE_PTR)
1318#    define LZO_CCAST(t,e)                  ((t) (e))
1319#  endif
1320#endif
1321#if !defined(LZO_CCAST)
1322#  define LZO_CCAST(t,e)                    LZO_STATIC_CAST(t, LZO_STATIC_CAST(const void *, e))
1323#endif
1324#if !defined(LZO_ICONV)
1325#  define LZO_ICONV(t,e)                    LZO_STATIC_CAST(t, e)
1326#endif
1327#if !defined(LZO_ICAST)
1328#  define LZO_ICAST(t,e)                    LZO_STATIC_CAST(t, e)
1329#endif
1330#if !defined(LZO_ITRUNC)
1331#  define LZO_ITRUNC(t,e)                   LZO_STATIC_CAST(t, e)
1332#endif
1333#if !defined(__lzo_cte)
1334#  if (LZO_CC_MSC || LZO_CC_WATCOMC)
1335#    define __lzo_cte(e)            ((void)0,(e))
1336#  elif 1
1337#    define __lzo_cte(e)            ((void)0,(e))
1338#  endif
1339#endif
1340#if !defined(__lzo_cte)
1341#  define __lzo_cte(e)              (e)
1342#endif
1343#if !defined(LZO_BLOCK_BEGIN)
1344#  define LZO_BLOCK_BEGIN           do {
1345#  define LZO_BLOCK_END             } while __lzo_cte(0)
1346#endif
1347#if !defined(LZO_UNUSED)
1348#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
1349#    define LZO_UNUSED(var)         ((void) &var)
1350#  elif (LZO_CC_BORLANDC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PELLESC || LZO_CC_TURBOC)
1351#    define LZO_UNUSED(var)         if (&var) ; else
1352#  elif (LZO_CC_CLANG && (LZO_CC_CLANG >= 0x030200ul))
1353#    define LZO_UNUSED(var)         ((void) &var)
1354#  elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1355#    define LZO_UNUSED(var)         ((void) var)
1356#  elif (LZO_CC_MSC && (_MSC_VER < 900))
1357#    define LZO_UNUSED(var)         if (&var) ; else
1358#  elif (LZO_CC_KEILC)
1359#    define LZO_UNUSED(var)         {LZO_EXTERN_C int lzo_unused__[1-2*!(sizeof(var)>0)];}
1360#  elif (LZO_CC_PACIFICC)
1361#    define LZO_UNUSED(var)         ((void) sizeof(var))
1362#  elif (LZO_CC_WATCOMC) && defined(__cplusplus)
1363#    define LZO_UNUSED(var)         ((void) var)
1364#  else
1365#    define LZO_UNUSED(var)         ((void) &var)
1366#  endif
1367#endif
1368#if !defined(LZO_UNUSED_FUNC)
1369#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
1370#    define LZO_UNUSED_FUNC(func)   ((void) func)
1371#  elif (LZO_CC_BORLANDC || LZO_CC_NDPC || LZO_CC_TURBOC)
1372#    define LZO_UNUSED_FUNC(func)   if (func) ; else
1373#  elif (LZO_CC_CLANG || LZO_CC_LLVM)
1374#    define LZO_UNUSED_FUNC(func)   ((void) &func)
1375#  elif (LZO_CC_MSC && (_MSC_VER < 900))
1376#    define LZO_UNUSED_FUNC(func)   if (func) ; else
1377#  elif (LZO_CC_MSC)
1378#    define LZO_UNUSED_FUNC(func)   ((void) &func)
1379#  elif (LZO_CC_KEILC || LZO_CC_PELLESC)
1380#    define LZO_UNUSED_FUNC(func)   {LZO_EXTERN_C int lzo_unused_func__[1-2*!(sizeof((int)func)>0)];}
1381#  else
1382#    define LZO_UNUSED_FUNC(func)   ((void) func)
1383#  endif
1384#endif
1385#if !defined(LZO_UNUSED_LABEL)
1386#  if (LZO_CC_CLANG >= 0x020800ul)
1387#    define LZO_UNUSED_LABEL(l)     (__lzo_gnuc_extension__ ((void) ((const void *) &&l)))
1388#  elif (LZO_CC_ARMCC || LZO_CC_CLANG || LZO_CC_INTELC || LZO_CC_WATCOMC)
1389#    define LZO_UNUSED_LABEL(l)     if __lzo_cte(0) goto l
1390#  else
1391#    define LZO_UNUSED_LABEL(l)     switch (0) case 1:goto l
1392#  endif
1393#endif
1394#if !defined(LZO_DEFINE_UNINITIALIZED_VAR)
1395#  if 0
1396#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var
1397#  elif 0 && (LZO_CC_GNUC)
1398#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = var
1399#  else
1400#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = init
1401#  endif
1402#endif
1403#if !defined(__lzo_inline)
1404#if (LZO_CC_TURBOC && (__TURBOC__ <= 0x0295))
1405#elif defined(__cplusplus)
1406#  define __lzo_inline          inline
1407#elif defined(__STDC_VERSION__) && (__STDC_VERSION__-0 >= 199901L)
1408#  define __lzo_inline          inline
1409#elif (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0550))
1410#  define __lzo_inline          __inline
1411#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
1412#  define __lzo_inline          __inline__
1413#elif (LZO_CC_DMC)
1414#  define __lzo_inline          __inline
1415#elif (LZO_CC_GHS)
1416#  define __lzo_inline          __inline__
1417#elif (LZO_CC_IBMC >= 600)
1418#  define __lzo_inline          __inline__
1419#elif (LZO_CC_INTELC)
1420#  define __lzo_inline          __inline
1421#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x2405))
1422#  define __lzo_inline          __inline
1423#elif (LZO_CC_MSC && (_MSC_VER >= 900))
1424#  define __lzo_inline          __inline
1425#elif (LZO_CC_SUNPROC >= 0x5100)
1426#  define __lzo_inline          __inline__
1427#endif
1428#endif
1429#if defined(__lzo_inline)
1430#  ifndef __lzo_HAVE_inline
1431#  define __lzo_HAVE_inline 1
1432#  endif
1433#else
1434#  define __lzo_inline          /*empty*/
1435#endif
1436#if !defined(__lzo_forceinline)
1437#if (LZO_CC_GNUC >= 0x030200ul)
1438#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
1439#elif (LZO_CC_IBMC >= 700)
1440#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
1441#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 450))
1442#  define __lzo_forceinline     __forceinline
1443#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 800))
1444#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
1445#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1446#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
1447#elif (LZO_CC_MSC && (_MSC_VER >= 1200))
1448#  define __lzo_forceinline     __forceinline
1449#elif (LZO_CC_PGI >= 0x0d0a00ul)
1450#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
1451#elif (LZO_CC_SUNPROC >= 0x5100)
1452#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
1453#endif
1454#endif
1455#if defined(__lzo_forceinline)
1456#  ifndef __lzo_HAVE_forceinline
1457#  define __lzo_HAVE_forceinline 1
1458#  endif
1459#else
1460#  define __lzo_forceinline     __lzo_inline
1461#endif
1462#if !defined(__lzo_noinline)
1463#if 1 && (LZO_ARCH_I386) && (LZO_CC_GNUC >= 0x040000ul) && (LZO_CC_GNUC < 0x040003ul)
1464#  define __lzo_noinline        __attribute__((__noinline__,__used__))
1465#elif (LZO_CC_GNUC >= 0x030200ul)
1466#  define __lzo_noinline        __attribute__((__noinline__))
1467#elif (LZO_CC_IBMC >= 700)
1468#  define __lzo_noinline        __attribute__((__noinline__))
1469#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 600))
1470#  define __lzo_noinline        __declspec(noinline)
1471#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 800))
1472#  define __lzo_noinline        __attribute__((__noinline__))
1473#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1474#  define __lzo_noinline        __attribute__((__noinline__))
1475#elif (LZO_CC_MSC && (_MSC_VER >= 1300))
1476#  define __lzo_noinline        __declspec(noinline)
1477#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x3200) && (LZO_OS_WIN32 || LZO_OS_WIN64))
1478#  if defined(__cplusplus)
1479#  else
1480#    define __lzo_noinline      __declspec(noinline)
1481#  endif
1482#elif (LZO_CC_PGI >= 0x0d0a00ul)
1483#  define __lzo_noinline        __attribute__((__noinline__))
1484#elif (LZO_CC_SUNPROC >= 0x5100)
1485#  define __lzo_noinline        __attribute__((__noinline__))
1486#endif
1487#endif
1488#if defined(__lzo_noinline)
1489#  ifndef __lzo_HAVE_noinline
1490#  define __lzo_HAVE_noinline 1
1491#  endif
1492#else
1493#  define __lzo_noinline        /*empty*/
1494#endif
1495#if (__lzo_HAVE_forceinline || __lzo_HAVE_noinline) && !(__lzo_HAVE_inline)
1496#  error "unexpected configuration - check your compiler defines"
1497#endif
1498#if !defined(__lzo_static_inline)
1499#if (LZO_CC_IBMC)
1500#  define __lzo_static_inline       __lzo_gnuc_extension__ static __lzo_inline
1501#endif
1502#endif
1503#if !defined(__lzo_static_inline)
1504#  define __lzo_static_inline       static __lzo_inline
1505#endif
1506#if !defined(__lzo_static_forceinline)
1507#if (LZO_CC_IBMC)
1508#  define __lzo_static_forceinline  __lzo_gnuc_extension__ static __lzo_forceinline
1509#endif
1510#endif
1511#if !defined(__lzo_static_forceinline)
1512#  define __lzo_static_forceinline  static __lzo_forceinline
1513#endif
1514#if !defined(__lzo_static_noinline)
1515#if (LZO_CC_IBMC)
1516#  define __lzo_static_noinline     __lzo_gnuc_extension__ static __lzo_noinline
1517#endif
1518#endif
1519#if !defined(__lzo_static_noinline)
1520#  define __lzo_static_noinline     static __lzo_noinline
1521#endif
1522#if !defined(__lzo_c99_extern_inline)
1523#if defined(__GNUC_GNU_INLINE__)
1524#  define __lzo_c99_extern_inline   __lzo_inline
1525#elif defined(__GNUC_STDC_INLINE__)
1526#  define __lzo_c99_extern_inline   extern __lzo_inline
1527#elif defined(__STDC_VERSION__) && (__STDC_VERSION__-0 >= 199901L)
1528#  define __lzo_c99_extern_inline   extern __lzo_inline
1529#endif
1530#if !defined(__lzo_c99_extern_inline) && (__lzo_HAVE_inline)
1531#  define __lzo_c99_extern_inline   __lzo_inline
1532#endif
1533#endif
1534#if defined(__lzo_c99_extern_inline)
1535#  ifndef __lzo_HAVE_c99_extern_inline
1536#  define __lzo_HAVE_c99_extern_inline 1
1537#  endif
1538#else
1539#  define __lzo_c99_extern_inline   /*empty*/
1540#endif
1541#if !defined(__lzo_may_alias)
1542#if (LZO_CC_GNUC >= 0x030400ul)
1543#  define __lzo_may_alias       __attribute__((__may_alias__))
1544#elif (LZO_CC_CLANG >= 0x020900ul)
1545#  define __lzo_may_alias       __attribute__((__may_alias__))
1546#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 1210)) && 0
1547#  define __lzo_may_alias       __attribute__((__may_alias__))
1548#elif (LZO_CC_PGI >= 0x0d0a00ul) && 0
1549#  define __lzo_may_alias       __attribute__((__may_alias__))
1550#endif
1551#endif
1552#if defined(__lzo_may_alias)
1553#  ifndef __lzo_HAVE_may_alias
1554#  define __lzo_HAVE_may_alias 1
1555#  endif
1556#else
1557#  define __lzo_may_alias       /*empty*/
1558#endif
1559#if !defined(__lzo_noreturn)
1560#if (LZO_CC_GNUC >= 0x020700ul)
1561#  define __lzo_noreturn        __attribute__((__noreturn__))
1562#elif (LZO_CC_IBMC >= 700)
1563#  define __lzo_noreturn        __attribute__((__noreturn__))
1564#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 450))
1565#  define __lzo_noreturn        __declspec(noreturn)
1566#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 600))
1567#  define __lzo_noreturn        __attribute__((__noreturn__))
1568#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1569#  define __lzo_noreturn        __attribute__((__noreturn__))
1570#elif (LZO_CC_MSC && (_MSC_VER >= 1200))
1571#  define __lzo_noreturn        __declspec(noreturn)
1572#elif (LZO_CC_PGI >= 0x0d0a00ul)
1573#  define __lzo_noreturn        __attribute__((__noreturn__))
1574#endif
1575#endif
1576#if defined(__lzo_noreturn)
1577#  ifndef __lzo_HAVE_noreturn
1578#  define __lzo_HAVE_noreturn 1
1579#  endif
1580#else
1581#  define __lzo_noreturn        /*empty*/
1582#endif
1583#if !defined(__lzo_nothrow)
1584#if (LZO_CC_GNUC >= 0x030300ul)
1585#  define __lzo_nothrow         __attribute__((__nothrow__))
1586#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 450)) && defined(__cplusplus)
1587#  define __lzo_nothrow         __declspec(nothrow)
1588#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 900))
1589#  define __lzo_nothrow         __attribute__((__nothrow__))
1590#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1591#  define __lzo_nothrow         __attribute__((__nothrow__))
1592#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) && defined(__cplusplus)
1593#  define __lzo_nothrow         __declspec(nothrow)
1594#endif
1595#endif
1596#if defined(__lzo_nothrow)
1597#  ifndef __lzo_HAVE_nothrow
1598#  define __lzo_HAVE_nothrow 1
1599#  endif
1600#else
1601#  define __lzo_nothrow         /*empty*/
1602#endif
1603#if !defined(__lzo_restrict)
1604#if (LZO_CC_GNUC >= 0x030400ul)
1605#  define __lzo_restrict        __restrict__
1606#elif (LZO_CC_IBMC >= 800) && !defined(__cplusplus)
1607#  define __lzo_restrict        __restrict__
1608#elif (LZO_CC_IBMC >= 1210)
1609#  define __lzo_restrict        __restrict__
1610#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 600))
1611#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 600))
1612#  define __lzo_restrict        __restrict__
1613#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM)
1614#  define __lzo_restrict        __restrict__
1615#elif (LZO_CC_MSC && (_MSC_VER >= 1400))
1616#  define __lzo_restrict        __restrict
1617#elif (LZO_CC_PGI >= 0x0d0a00ul)
1618#  define __lzo_restrict        __restrict__
1619#endif
1620#endif
1621#if defined(__lzo_restrict)
1622#  ifndef __lzo_HAVE_restrict
1623#  define __lzo_HAVE_restrict 1
1624#  endif
1625#else
1626#  define __lzo_restrict        /*empty*/
1627#endif
1628#if !defined(__lzo_alignof)
1629#if (LZO_CC_ARMCC || LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
1630#  define __lzo_alignof(e)      __alignof__(e)
1631#elif (LZO_CC_GHS) && !defined(__cplusplus)
1632#  define __lzo_alignof(e)      __alignof__(e)
1633#elif (LZO_CC_IBMC >= 600)
1634#  define __lzo_alignof(e)      (__lzo_gnuc_extension__ __alignof__(e))
1635#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 700))
1636#  define __lzo_alignof(e)      __alignof__(e)
1637#elif (LZO_CC_MSC && (_MSC_VER >= 1300))
1638#  define __lzo_alignof(e)      __alignof(e)
1639#elif (LZO_CC_SUNPROC >= 0x5100)
1640#  define __lzo_alignof(e)      __alignof__(e)
1641#endif
1642#endif
1643#if defined(__lzo_alignof)
1644#  ifndef __lzo_HAVE_alignof
1645#  define __lzo_HAVE_alignof 1
1646#  endif
1647#endif
1648#if !defined(__lzo_struct_packed)
1649#if   (LZO_CC_CLANG && (LZO_CC_CLANG < 0x020800ul)) && defined(__cplusplus)
1650#elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020700ul))
1651#elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020800ul)) && defined(__cplusplus)
1652#elif (LZO_CC_PCC && (LZO_CC_PCC < 0x010100ul))
1653#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC < 0x5110)) && !defined(__cplusplus)
1654#elif (LZO_CC_GNUC >= 0x030400ul) && !(LZO_CC_PCC_GNUC) && (LZO_ARCH_AMD64 || LZO_ARCH_I386)
1655#  define __lzo_struct_packed(s)        struct s {
1656#  define __lzo_struct_packed_end()     } __attribute__((__gcc_struct__,__packed__));
1657#  define __lzo_struct_packed_ma_end()  } __lzo_may_alias __attribute__((__gcc_struct__,__packed__));
1658#elif (LZO_CC_ARMCC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || (LZO_CC_PGI >= 0x0d0a00ul) || (LZO_CC_SUNPROC >= 0x5100))
1659#  define __lzo_struct_packed(s)        struct s {
1660#  define __lzo_struct_packed_end()     } __attribute__((__packed__));
1661#  define __lzo_struct_packed_ma_end()  } __lzo_may_alias __attribute__((__packed__));
1662#elif (LZO_CC_IBMC >= 700)
1663#  define __lzo_struct_packed(s)        __lzo_gnuc_extension__ struct s {
1664#  define __lzo_struct_packed_end()     } __attribute__((__packed__));
1665#  define __lzo_struct_packed_ma_end()  } __lzo_may_alias __attribute__((__packed__));
1666#elif (LZO_CC_INTELC_MSC) || (LZO_CC_MSC && (_MSC_VER >= 1300))
1667#  define __lzo_struct_packed(s)        __pragma(pack(push,1)) struct s {
1668#  define __lzo_struct_packed_end()     } __pragma(pack(pop));
1669#elif (LZO_CC_WATCOMC && (__WATCOMC__ >= 900))
1670#  define __lzo_struct_packed(s)        _Packed struct s {
1671#  define __lzo_struct_packed_end()     };
1672#endif
1673#endif
1674#if defined(__lzo_struct_packed) && !defined(__lzo_struct_packed_ma)
1675#  define __lzo_struct_packed_ma(s)     __lzo_struct_packed(s)
1676#endif
1677#if defined(__lzo_struct_packed_end) && !defined(__lzo_struct_packed_ma_end)
1678#  define __lzo_struct_packed_ma_end()  __lzo_struct_packed_end()
1679#endif
1680#if !defined(__lzo_byte_struct)
1681#if defined(__lzo_struct_packed)
1682#  define __lzo_byte_struct(s,n)        __lzo_struct_packed(s) unsigned char a[n]; __lzo_struct_packed_end()
1683#  define __lzo_byte_struct_ma(s,n)     __lzo_struct_packed_ma(s) unsigned char a[n]; __lzo_struct_packed_ma_end()
1684#elif (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_PGI || (LZO_CC_SUNPROC >= 0x5100))
1685#  define __lzo_byte_struct(s,n)        struct s { unsigned char a[n]; } __attribute__((__packed__));
1686#  define __lzo_byte_struct_ma(s,n)     struct s { unsigned char a[n]; } __lzo_may_alias __attribute__((__packed__));
1687#endif
1688#endif
1689#if defined(__lzo_byte_struct) &&  !defined(__lzo_byte_struct_ma)
1690#  define __lzo_byte_struct_ma(s,n)     __lzo_byte_struct(s,n)
1691#endif
1692#if !defined(__lzo_struct_align16) && (__lzo_HAVE_alignof)
1693#if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x030000ul))
1694#elif (LZO_CC_CLANG && (LZO_CC_CLANG < 0x020800ul)) && defined(__cplusplus)
1695#elif (LZO_CC_CILLY || LZO_CC_PCC)
1696#elif (LZO_CC_INTELC_MSC) || (LZO_CC_MSC && (_MSC_VER >= 1300))
1697#  define __lzo_struct_align16(s)       struct __declspec(align(16)) s {
1698#  define __lzo_struct_align16_end()    };
1699#  define __lzo_struct_align32(s)       struct __declspec(align(32)) s {
1700#  define __lzo_struct_align32_end()    };
1701#  define __lzo_struct_align64(s)       struct __declspec(align(64)) s {
1702#  define __lzo_struct_align64_end()    };
1703#elif (LZO_CC_ARMCC || LZO_CC_CLANG || LZO_CC_GNUC || (LZO_CC_IBMC >= 700) || LZO_CC_INTELC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1704#  define __lzo_struct_align16(s)       struct s {
1705#  define __lzo_struct_align16_end()    } __attribute__((__aligned__(16)));
1706#  define __lzo_struct_align32(s)       struct s {
1707#  define __lzo_struct_align32_end()    } __attribute__((__aligned__(32)));
1708#  define __lzo_struct_align64(s)       struct s {
1709#  define __lzo_struct_align64_end()    } __attribute__((__aligned__(64)));
1710#endif
1711#endif
1712#if !defined(__lzo_union_um)
1713#if   (LZO_CC_CLANG && (LZO_CC_CLANG < 0x020800ul)) && defined(__cplusplus)
1714#elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020700ul))
1715#elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020800ul)) && defined(__cplusplus)
1716#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER < 810))
1717#elif (LZO_CC_PCC && (LZO_CC_PCC < 0x010100ul))
1718#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC < 0x5110)) && !defined(__cplusplus)
1719#elif (LZO_CC_ARMCC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || (LZO_CC_PGI >= 0x0d0a00ul) || (LZO_CC_SUNPROC >= 0x5100))
1720#  define __lzo_union_am(s)             union s {
1721#  define __lzo_union_am_end()          } __lzo_may_alias;
1722#  define __lzo_union_um(s)             union s {
1723#  define __lzo_union_um_end()          } __lzo_may_alias __attribute__((__packed__));
1724#elif (LZO_CC_IBMC >= 700)
1725#  define __lzo_union_am(s)             __lzo_gnuc_extension__ union s {
1726#  define __lzo_union_am_end()          } __lzo_may_alias;
1727#  define __lzo_union_um(s)             __lzo_gnuc_extension__ union s {
1728#  define __lzo_union_um_end()          } __lzo_may_alias __attribute__((__packed__));
1729#elif (LZO_CC_INTELC_MSC) || (LZO_CC_MSC && (_MSC_VER >= 1300))
1730#  define __lzo_union_um(s)             __pragma(pack(push,1)) union s {
1731#  define __lzo_union_um_end()          } __pragma(pack(pop));
1732#elif (LZO_CC_WATCOMC && (__WATCOMC__ >= 900))
1733#  define __lzo_union_um(s)             _Packed union s {
1734#  define __lzo_union_um_end()          };
1735#endif
1736#endif
1737#if !defined(__lzo_union_am)
1738#  define __lzo_union_am(s)             union s {
1739#  define __lzo_union_am_end()          };
1740#endif
1741#if !defined(__lzo_constructor)
1742#if (LZO_CC_GNUC >= 0x030400ul)
1743#  define __lzo_constructor     __attribute__((__constructor__,__used__))
1744#elif (LZO_CC_GNUC >= 0x020700ul)
1745#  define __lzo_constructor     __attribute__((__constructor__))
1746#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 800))
1747#  define __lzo_constructor     __attribute__((__constructor__,__used__))
1748#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1749#  define __lzo_constructor     __attribute__((__constructor__))
1750#endif
1751#endif
1752#if defined(__lzo_constructor)
1753#  ifndef __lzo_HAVE_constructor
1754#  define __lzo_HAVE_constructor 1
1755#  endif
1756#endif
1757#if !defined(__lzo_destructor)
1758#if (LZO_CC_GNUC >= 0x030400ul)
1759#  define __lzo_destructor      __attribute__((__destructor__,__used__))
1760#elif (LZO_CC_GNUC >= 0x020700ul)
1761#  define __lzo_destructor      __attribute__((__destructor__))
1762#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 800))
1763#  define __lzo_destructor      __attribute__((__destructor__,__used__))
1764#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1765#  define __lzo_destructor      __attribute__((__destructor__))
1766#endif
1767#endif
1768#if defined(__lzo_destructor)
1769#  ifndef __lzo_HAVE_destructor
1770#  define __lzo_HAVE_destructor 1
1771#  endif
1772#endif
1773#if (__lzo_HAVE_destructor) && !(__lzo_HAVE_constructor)
1774#  error "unexpected configuration - check your compiler defines"
1775#endif
1776#if !defined(__lzo_likely) && !defined(__lzo_unlikely)
1777#if (LZO_CC_GNUC >= 0x030200ul)
1778#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
1779#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
1780#elif (LZO_CC_IBMC >= 1010)
1781#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
1782#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
1783#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800))
1784#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
1785#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
1786#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1787#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
1788#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
1789#endif
1790#endif
1791#if defined(__lzo_likely)
1792#  ifndef __lzo_HAVE_likely
1793#  define __lzo_HAVE_likely 1
1794#  endif
1795#else
1796#  define __lzo_likely(e)       (e)
1797#endif
1798#if defined(__lzo_unlikely)
1799#  ifndef __lzo_HAVE_unlikely
1800#  define __lzo_HAVE_unlikely 1
1801#  endif
1802#else
1803#  define __lzo_unlikely(e)     (e)
1804#endif
1805#if !defined(__lzo_static_unused_void_func)
1806#  if 1 && (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || (LZO_CC_GNUC >= 0x020700ul) || LZO_CC_INTELC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
1807#    define __lzo_static_unused_void_func(f)    static void __attribute__((__unused__)) f(void)
1808#  else
1809#    define __lzo_static_unused_void_func(f)    static __lzo_inline void f(void)
1810#  endif
1811#endif
1812#if !defined(__lzo_loop_forever)
1813#  if (LZO_CC_IBMC)
1814#    define __lzo_loop_forever()    LZO_BLOCK_BEGIN for (;;) { ; } LZO_BLOCK_END
1815#  else
1816#    define __lzo_loop_forever()    do { ; } while __lzo_cte(1)
1817#  endif
1818#endif
1819#if !defined(__lzo_unreachable)
1820#if (LZO_CC_CLANG && (LZO_CC_CLANG >= 0x020800ul))
1821#  define __lzo_unreachable()       __builtin_unreachable();
1822#elif (LZO_CC_GNUC >= 0x040500ul)
1823#  define __lzo_unreachable()       __builtin_unreachable();
1824#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 1300)) && 1
1825#  define __lzo_unreachable()       __builtin_unreachable();
1826#endif
1827#endif
1828#if defined(__lzo_unreachable)
1829#  ifndef __lzo_HAVE_unreachable
1830#  define __lzo_HAVE_unreachable 1
1831#  endif
1832#else
1833#  if 0
1834#  define __lzo_unreachable()       ((void)0);
1835#  else
1836#  define __lzo_unreachable()       __lzo_loop_forever();
1837#  endif
1838#endif
1839#ifndef __LZO_CTA_NAME
1840#if (LZO_CFG_USE_COUNTER)
1841#  define __LZO_CTA_NAME(a)         LZO_PP_ECONCAT2(a,__COUNTER__)
1842#else
1843#  define __LZO_CTA_NAME(a)         LZO_PP_ECONCAT2(a,__LINE__)
1844#endif
1845#endif
1846#if !defined(LZO_COMPILE_TIME_ASSERT_HEADER)
1847#  if (LZO_CC_AZTECC || LZO_CC_ZORTECHC)
1848#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN extern int __LZO_CTA_NAME(lzo_cta__)[1-!(e)]; LZO_EXTERN_C_END
1849#  elif (LZO_CC_DMC || LZO_CC_SYMANTECC)
1850#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN extern int __LZO_CTA_NAME(lzo_cta__)[1u-2*!(e)]; LZO_EXTERN_C_END
1851#  elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295))
1852#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN extern int __LZO_CTA_NAME(lzo_cta__)[1-!(e)]; LZO_EXTERN_C_END
1853#  elif (LZO_CC_CLANG && (LZO_CC_CLANG < 0x020900ul)) && defined(__cplusplus)
1854#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN int __LZO_CTA_NAME(lzo_cta_f__)(int [1-2*!(e)]); LZO_EXTERN_C_END
1855#  elif (LZO_CC_GNUC) && defined(__CHECKER__) && defined(__SPARSE_CHECKER__)
1856#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN enum {__LZO_CTA_NAME(lzo_cta_e__)=1/!!(e)} __attribute__((__unused__)); LZO_EXTERN_C_END
1857#  else
1858#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN extern int __LZO_CTA_NAME(lzo_cta__)[1-2*!(e)]; LZO_EXTERN_C_END
1859#  endif
1860#endif
1861#if !defined(LZO_COMPILE_TIME_ASSERT)
1862#  if (LZO_CC_AZTECC)
1863#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __LZO_CTA_NAME(lzo_cta_t__)[1-!(e)];}
1864#  elif (LZO_CC_DMC || LZO_CC_PACIFICC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
1865#    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
1866#  elif (LZO_CC_GNUC) && defined(__CHECKER__) && defined(__SPARSE_CHECKER__)
1867#    define LZO_COMPILE_TIME_ASSERT(e)  {(void) (0/!!(e));}
1868#  elif (LZO_CC_GNUC >= 0x040700ul) && (LZO_CFG_USE_COUNTER) && defined(__cplusplus)
1869#    define LZO_COMPILE_TIME_ASSERT(e)  {enum {__LZO_CTA_NAME(lzo_cta_e__)=1/!!(e)} __attribute__((__unused__));}
1870#  elif (LZO_CC_GNUC >= 0x040700ul)
1871#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __LZO_CTA_NAME(lzo_cta_t__)[1-2*!(e)] __attribute__((__unused__));}
1872#  elif (LZO_CC_MSC && (_MSC_VER < 900))
1873#    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
1874#  elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295))
1875#    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
1876#  else
1877#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __LZO_CTA_NAME(lzo_cta_t__)[1-2*!(e)];}
1878#  endif
1879#endif
1880LZO_COMPILE_TIME_ASSERT_HEADER(1 == 1)
1881#if defined(__cplusplus)
1882extern "C" { LZO_COMPILE_TIME_ASSERT_HEADER(2 == 2) }
1883#endif
1884LZO_COMPILE_TIME_ASSERT_HEADER(3 == 3)
1885#if (LZO_ARCH_I086 || LZO_ARCH_I386) && (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64)
1886#  if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC)
1887#  elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
1888#    define __lzo_cdecl                 __cdecl
1889#    define __lzo_cdecl_atexit          /*empty*/
1890#    define __lzo_cdecl_main            __cdecl
1891#    if (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC))
1892#      define __lzo_cdecl_qsort         __pascal
1893#    elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC))
1894#      define __lzo_cdecl_qsort         _stdcall
1895#    else
1896#      define __lzo_cdecl_qsort         __cdecl
1897#    endif
1898#  elif (LZO_CC_WATCOMC)
1899#    define __lzo_cdecl                 __cdecl
1900#  else
1901#    define __lzo_cdecl                 __cdecl
1902#    define __lzo_cdecl_atexit          __cdecl
1903#    define __lzo_cdecl_main            __cdecl
1904#    define __lzo_cdecl_qsort           __cdecl
1905#  endif
1906#  if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC || LZO_CC_WATCOMC)
1907#  elif (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC))
1908#    define __lzo_cdecl_sighandler      __pascal
1909#  elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC))
1910#    define __lzo_cdecl_sighandler      _stdcall
1911#  elif (LZO_CC_MSC && (_MSC_VER >= 1400)) && defined(_M_CEE_PURE)
1912#    define __lzo_cdecl_sighandler      __clrcall
1913#  elif (LZO_CC_MSC && (_MSC_VER >= 600 && _MSC_VER < 700))
1914#    if defined(_DLL)
1915#      define __lzo_cdecl_sighandler    _far _cdecl _loadds
1916#    elif defined(_MT)
1917#      define __lzo_cdecl_sighandler    _far _cdecl
1918#    else
1919#      define __lzo_cdecl_sighandler    _cdecl
1920#    endif
1921#  else
1922#    define __lzo_cdecl_sighandler      __cdecl
1923#  endif
1924#elif (LZO_ARCH_I386) && (LZO_CC_WATCOMC)
1925#  define __lzo_cdecl                   __cdecl
1926#elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC))
1927#  define __lzo_cdecl                   cdecl
1928#endif
1929#if !defined(__lzo_cdecl)
1930#  define __lzo_cdecl                   /*empty*/
1931#endif
1932#if !defined(__lzo_cdecl_atexit)
1933#  define __lzo_cdecl_atexit            /*empty*/
1934#endif
1935#if !defined(__lzo_cdecl_main)
1936#  define __lzo_cdecl_main              /*empty*/
1937#endif
1938#if !defined(__lzo_cdecl_qsort)
1939#  define __lzo_cdecl_qsort             /*empty*/
1940#endif
1941#if !defined(__lzo_cdecl_sighandler)
1942#  define __lzo_cdecl_sighandler        /*empty*/
1943#endif
1944#if !defined(__lzo_cdecl_va)
1945#  define __lzo_cdecl_va                __lzo_cdecl
1946#endif
1947#if !(LZO_CFG_NO_WINDOWS_H)
1948#if !defined(LZO_HAVE_WINDOWS_H)
1949#if (LZO_OS_CYGWIN || (LZO_OS_EMX && defined(__RSXNT__)) || LZO_OS_WIN32 || LZO_OS_WIN64)
1950#  if (LZO_CC_WATCOMC && (__WATCOMC__ < 1000))
1951#  elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__)
1952#  elif ((LZO_OS_CYGWIN || defined(__MINGW32__)) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x025f00ul)))
1953#  else
1954#    define LZO_HAVE_WINDOWS_H 1
1955#  endif
1956#endif
1957#endif
1958#endif
1959#ifndef LZO_SIZEOF_SHORT
1960#if defined(SIZEOF_SHORT)
1961#  define LZO_SIZEOF_SHORT          (SIZEOF_SHORT)
1962#elif defined(__SIZEOF_SHORT__)
1963#  define LZO_SIZEOF_SHORT          (__SIZEOF_SHORT__)
1964#endif
1965#endif
1966#ifndef LZO_SIZEOF_INT
1967#if defined(SIZEOF_INT)
1968#  define LZO_SIZEOF_INT            (SIZEOF_INT)
1969#elif defined(__SIZEOF_INT__)
1970#  define LZO_SIZEOF_INT            (__SIZEOF_INT__)
1971#endif
1972#endif
1973#ifndef LZO_SIZEOF_LONG
1974#if defined(SIZEOF_LONG)
1975#  define LZO_SIZEOF_LONG           (SIZEOF_LONG)
1976#elif defined(__SIZEOF_LONG__)
1977#  define LZO_SIZEOF_LONG           (__SIZEOF_LONG__)
1978#endif
1979#endif
1980#ifndef LZO_SIZEOF_LONG_LONG
1981#if defined(SIZEOF_LONG_LONG)
1982#  define LZO_SIZEOF_LONG_LONG      (SIZEOF_LONG_LONG)
1983#elif defined(__SIZEOF_LONG_LONG__)
1984#  define LZO_SIZEOF_LONG_LONG      (__SIZEOF_LONG_LONG__)
1985#endif
1986#endif
1987#ifndef LZO_SIZEOF___INT16
1988#if defined(SIZEOF___INT16)
1989#  define LZO_SIZEOF___INT16        (SIZEOF___INT16)
1990#endif
1991#endif
1992#ifndef LZO_SIZEOF___INT32
1993#if defined(SIZEOF___INT32)
1994#  define LZO_SIZEOF___INT32        (SIZEOF___INT32)
1995#endif
1996#endif
1997#ifndef LZO_SIZEOF___INT64
1998#if defined(SIZEOF___INT64)
1999#  define LZO_SIZEOF___INT64        (SIZEOF___INT64)
2000#endif
2001#endif
2002#ifndef LZO_SIZEOF_VOID_P
2003#if defined(SIZEOF_VOID_P)
2004#  define LZO_SIZEOF_VOID_P         (SIZEOF_VOID_P)
2005#elif defined(__SIZEOF_POINTER__)
2006#  define LZO_SIZEOF_VOID_P         (__SIZEOF_POINTER__)
2007#endif
2008#endif
2009#ifndef LZO_SIZEOF_SIZE_T
2010#if defined(SIZEOF_SIZE_T)
2011#  define LZO_SIZEOF_SIZE_T         (SIZEOF_SIZE_T)
2012#elif defined(__SIZEOF_SIZE_T__)
2013#  define LZO_SIZEOF_SIZE_T         (__SIZEOF_SIZE_T__)
2014#endif
2015#endif
2016#ifndef LZO_SIZEOF_PTRDIFF_T
2017#if defined(SIZEOF_PTRDIFF_T)
2018#  define LZO_SIZEOF_PTRDIFF_T      (SIZEOF_PTRDIFF_T)
2019#elif defined(__SIZEOF_PTRDIFF_T__)
2020#  define LZO_SIZEOF_PTRDIFF_T      (__SIZEOF_PTRDIFF_T__)
2021#endif
2022#endif
2023#define __LZO_LSR(x,b)    (((x)+0ul) >> (b))
2024#if !defined(LZO_SIZEOF_SHORT)
2025#  if (LZO_ARCH_CRAY_PVP)
2026#    define LZO_SIZEOF_SHORT        8
2027#  elif (USHRT_MAX == LZO_0xffffL)
2028#    define LZO_SIZEOF_SHORT        2
2029#  elif (__LZO_LSR(USHRT_MAX,7) == 1)
2030#    define LZO_SIZEOF_SHORT        1
2031#  elif (__LZO_LSR(USHRT_MAX,15) == 1)
2032#    define LZO_SIZEOF_SHORT        2
2033#  elif (__LZO_LSR(USHRT_MAX,31) == 1)
2034#    define LZO_SIZEOF_SHORT        4
2035#  elif (__LZO_LSR(USHRT_MAX,63) == 1)
2036#    define LZO_SIZEOF_SHORT        8
2037#  elif (__LZO_LSR(USHRT_MAX,127) == 1)
2038#    define LZO_SIZEOF_SHORT        16
2039#  else
2040#    error "LZO_SIZEOF_SHORT"
2041#  endif
2042#endif
2043LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_SHORT == sizeof(short))
2044#if !defined(LZO_SIZEOF_INT)
2045#  if (LZO_ARCH_CRAY_PVP)
2046#    define LZO_SIZEOF_INT          8
2047#  elif (UINT_MAX == LZO_0xffffL)
2048#    define LZO_SIZEOF_INT          2
2049#  elif (UINT_MAX == LZO_0xffffffffL)
2050#    define LZO_SIZEOF_INT          4
2051#  elif (__LZO_LSR(UINT_MAX,7) == 1)
2052#    define LZO_SIZEOF_INT          1
2053#  elif (__LZO_LSR(UINT_MAX,15) == 1)
2054#    define LZO_SIZEOF_INT          2
2055#  elif (__LZO_LSR(UINT_MAX,31) == 1)
2056#    define LZO_SIZEOF_INT          4
2057#  elif (__LZO_LSR(UINT_MAX,63) == 1)
2058#    define LZO_SIZEOF_INT          8
2059#  elif (__LZO_LSR(UINT_MAX,127) == 1)
2060#    define LZO_SIZEOF_INT          16
2061#  else
2062#    error "LZO_SIZEOF_INT"
2063#  endif
2064#endif
2065LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_INT == sizeof(int))
2066#if !defined(LZO_SIZEOF_LONG)
2067#  if (ULONG_MAX == LZO_0xffffffffL)
2068#    define LZO_SIZEOF_LONG         4
2069#  elif (__LZO_LSR(ULONG_MAX,7) == 1)
2070#    define LZO_SIZEOF_LONG         1
2071#  elif (__LZO_LSR(ULONG_MAX,15) == 1)
2072#    define LZO_SIZEOF_LONG         2
2073#  elif (__LZO_LSR(ULONG_MAX,31) == 1)
2074#    define LZO_SIZEOF_LONG         4
2075#  elif (__LZO_LSR(ULONG_MAX,39) == 1)
2076#    define LZO_SIZEOF_LONG         5
2077#  elif (__LZO_LSR(ULONG_MAX,63) == 1)
2078#    define LZO_SIZEOF_LONG         8
2079#  elif (__LZO_LSR(ULONG_MAX,127) == 1)
2080#    define LZO_SIZEOF_LONG         16
2081#  else
2082#    error "LZO_SIZEOF_LONG"
2083#  endif
2084#endif
2085LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_LONG == sizeof(long))
2086#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
2087#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
2088#  if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__)
2089#    if (LZO_CC_GNUC >= 0x030300ul)
2090#      if ((__LONG_MAX__-0) == (__LONG_LONG_MAX__-0))
2091#        define LZO_SIZEOF_LONG_LONG      LZO_SIZEOF_LONG
2092#      elif (__LZO_LSR(__LONG_LONG_MAX__,30) == 1)
2093#        define LZO_SIZEOF_LONG_LONG      4
2094#      endif
2095#    endif
2096#  endif
2097#endif
2098#endif
2099#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
2100#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
2101#if (LZO_ARCH_I086 && LZO_CC_DMC)
2102#elif (LZO_CC_CILLY) && defined(__GNUC__)
2103#  define LZO_SIZEOF_LONG_LONG      8
2104#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
2105#  define LZO_SIZEOF_LONG_LONG      8
2106#elif ((LZO_OS_WIN32 || LZO_OS_WIN64 || defined(_WIN32)) && LZO_CC_MSC && (_MSC_VER >= 1400))
2107#  define LZO_SIZEOF_LONG_LONG      8
2108#elif (LZO_OS_WIN64 || defined(_WIN64))
2109#  define LZO_SIZEOF___INT64        8
2110#elif (LZO_ARCH_I386 && (LZO_CC_DMC))
2111#  define LZO_SIZEOF_LONG_LONG      8
2112#elif (LZO_ARCH_I386 && (LZO_CC_SYMANTECC && (__SC__ >= 0x700)))
2113#  define LZO_SIZEOF_LONG_LONG      8
2114#elif (LZO_ARCH_I386 && (LZO_CC_INTELC && defined(__linux__)))
2115#  define LZO_SIZEOF_LONG_LONG      8
2116#elif (LZO_ARCH_I386 && (LZO_CC_MWERKS || LZO_CC_PELLESC || LZO_CC_PGI || LZO_CC_SUNPROC))
2117#  define LZO_SIZEOF_LONG_LONG      8
2118#elif (LZO_ARCH_I386 && (LZO_CC_INTELC || LZO_CC_MSC))
2119#  define LZO_SIZEOF___INT64        8
2120#elif ((LZO_OS_WIN32 || defined(_WIN32)) && (LZO_CC_MSC))
2121#  define LZO_SIZEOF___INT64        8
2122#elif (LZO_ARCH_I386 && (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0520)))
2123#  define LZO_SIZEOF___INT64        8
2124#elif (LZO_ARCH_I386 && (LZO_CC_WATCOMC && (__WATCOMC__ >= 1100)))
2125#  define LZO_SIZEOF___INT64        8
2126#elif (LZO_CC_GHS && defined(__LLONG_BIT) && ((__LLONG_BIT-0) == 64))
2127#  define LZO_SIZEOF_LONG_LONG      8
2128#elif (LZO_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && ((_INTEGRAL_MAX_BITS-0) == 64))
2129#  define LZO_SIZEOF___INT64        8
2130#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
2131#  define LZO_SIZEOF_LONG_LONG      8
2132#elif (defined(__vms) || defined(__VMS)) && ((__INITIAL_POINTER_SIZE-0) == 64)
2133#  define LZO_SIZEOF_LONG_LONG      8
2134#elif (LZO_CC_SDCC) && (LZO_SIZEOF_INT == 2)
2135#elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
2136#  define LZO_SIZEOF_LONG_LONG      8
2137#endif
2138#endif
2139#endif
2140#if defined(__cplusplus) && (LZO_CC_GNUC)
2141#  if (LZO_CC_GNUC < 0x020800ul)
2142#    undef LZO_SIZEOF_LONG_LONG
2143#  endif
2144#endif
2145#if (LZO_CFG_NO_LONG_LONG)
2146#  undef LZO_SIZEOF_LONG_LONG
2147#elif defined(__NO_LONG_LONG)
2148#  undef LZO_SIZEOF_LONG_LONG
2149#elif defined(_NO_LONGLONG)
2150#  undef LZO_SIZEOF_LONG_LONG
2151#endif
2152#if !defined(LZO_WORDSIZE)
2153#if (LZO_ARCH_ALPHA)
2154#  define LZO_WORDSIZE              8
2155#elif (LZO_ARCH_AMD64)
2156#  define LZO_WORDSIZE              8
2157#elif (LZO_ARCH_AVR)
2158#  define LZO_WORDSIZE              1
2159#elif (LZO_ARCH_H8300)
2160#  if defined(__NORMAL_MODE__)
2161#    define LZO_WORDSIZE            4
2162#  elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
2163#    define LZO_WORDSIZE            4
2164#  else
2165#    define LZO_WORDSIZE            2
2166#  endif
2167#elif (LZO_ARCH_I086)
2168#  define LZO_WORDSIZE              2
2169#elif (LZO_ARCH_IA64)
2170#  define LZO_WORDSIZE              8
2171#elif (LZO_ARCH_M16C)
2172#  define LZO_WORDSIZE              2
2173#elif (LZO_ARCH_SPU)
2174#  define LZO_WORDSIZE              4
2175#elif (LZO_ARCH_Z80)
2176#  define LZO_WORDSIZE              1
2177#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
2178#  define LZO_WORDSIZE              8
2179#elif (LZO_OS_OS400 || defined(__OS400__))
2180#  define LZO_WORDSIZE              8
2181#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
2182#  define LZO_WORDSIZE              8
2183#endif
2184#endif
2185#if !defined(LZO_SIZEOF_VOID_P)
2186#if defined(__ILP32__) || defined(__ILP32) || defined(_ILP32)
2187LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(int)  == 4)
2188LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(long) == 4)
2189#  define LZO_SIZEOF_VOID_P         4
2190#elif defined(__ILP64__) || defined(__ILP64) || defined(_ILP64)
2191LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(int)  == 8)
2192LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(long) == 8)
2193#  define LZO_SIZEOF_VOID_P         8
2194#elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64)
2195LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(long) == 4)
2196#  define LZO_SIZEOF_VOID_P         8
2197#elif defined(__LP64__) || defined(__LP64) || defined(_LP64)
2198LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(long) == 8)
2199#  define LZO_SIZEOF_VOID_P         8
2200#elif (LZO_ARCH_AVR)
2201#  define LZO_SIZEOF_VOID_P         2
2202#elif (LZO_ARCH_C166 || LZO_ARCH_MCS51 || LZO_ARCH_MCS251 || LZO_ARCH_MSP430)
2203#  define LZO_SIZEOF_VOID_P         2
2204#elif (LZO_ARCH_H8300)
2205#  if defined(__NORMAL_MODE__)
2206#    define LZO_SIZEOF_VOID_P       2
2207#  elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
2208#    define LZO_SIZEOF_VOID_P       4
2209#  else
2210#    define LZO_SIZEOF_VOID_P       2
2211#  endif
2212#  if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x040000ul)) && (LZO_SIZEOF_INT == 4)
2213#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_INT
2214#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_INT
2215#  endif
2216#elif (LZO_ARCH_I086)
2217#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM)
2218#    define LZO_SIZEOF_VOID_P       2
2219#  elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE)
2220#    define LZO_SIZEOF_VOID_P       4
2221#  else
2222#    error "invalid LZO_ARCH_I086 memory model"
2223#  endif
2224#elif (LZO_ARCH_M16C)
2225#  if defined(__m32c_cpu__) || defined(__m32cm_cpu__)
2226#    define LZO_SIZEOF_VOID_P       4
2227#  else
2228#    define LZO_SIZEOF_VOID_P       2
2229#  endif
2230#elif (LZO_ARCH_SPU)
2231#  define LZO_SIZEOF_VOID_P         4
2232#elif (LZO_ARCH_Z80)
2233#  define LZO_SIZEOF_VOID_P         2
2234#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
2235#  define LZO_SIZEOF_VOID_P         4
2236#elif (LZO_OS_OS400 || defined(__OS400__))
2237#  if defined(__LLP64_IFC__)
2238#    define LZO_SIZEOF_VOID_P       8
2239#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_LONG
2240#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_LONG
2241#  else
2242#    define LZO_SIZEOF_VOID_P       16
2243#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_LONG
2244#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_LONG
2245#  endif
2246#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
2247#  define LZO_SIZEOF_VOID_P         8
2248#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
2249#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
2250#endif
2251#endif
2252#if !defined(LZO_SIZEOF_VOID_P)
2253#  define LZO_SIZEOF_VOID_P         LZO_SIZEOF_LONG
2254#endif
2255LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_VOID_P == sizeof(void *))
2256#if !defined(LZO_SIZEOF_SIZE_T)
2257#if (LZO_ARCH_I086 || LZO_ARCH_M16C)
2258#  define LZO_SIZEOF_SIZE_T         2
2259#endif
2260#endif
2261#if !defined(LZO_SIZEOF_SIZE_T)
2262#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_VOID_P
2263#endif
2264#if defined(offsetof)
2265LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_SIZE_T == sizeof(size_t))
2266#endif
2267#if !defined(LZO_SIZEOF_PTRDIFF_T)
2268#if (LZO_ARCH_I086)
2269#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM || LZO_MM_HUGE)
2270#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_VOID_P
2271#  elif (LZO_MM_COMPACT || LZO_MM_LARGE)
2272#    if (LZO_CC_BORLANDC || LZO_CC_TURBOC)
2273#      define LZO_SIZEOF_PTRDIFF_T  4
2274#    else
2275#      define LZO_SIZEOF_PTRDIFF_T  2
2276#    endif
2277#  else
2278#    error "invalid LZO_ARCH_I086 memory model"
2279#  endif
2280#endif
2281#endif
2282#if !defined(LZO_SIZEOF_PTRDIFF_T)
2283#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_SIZE_T
2284#endif
2285#if defined(offsetof)
2286LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
2287#endif
2288#if !defined(LZO_WORDSIZE)
2289#  define LZO_WORDSIZE              LZO_SIZEOF_VOID_P
2290#endif
2291#if (LZO_ABI_NEUTRAL_ENDIAN)
2292#  undef LZO_ABI_BIG_ENDIAN
2293#  undef LZO_ABI_LITTLE_ENDIAN
2294#elif !(LZO_ABI_BIG_ENDIAN) && !(LZO_ABI_LITTLE_ENDIAN)
2295#if (LZO_ARCH_ALPHA) && (LZO_ARCH_CRAY_MPP)
2296#  define LZO_ABI_BIG_ENDIAN        1
2297#elif (LZO_ARCH_IA64) && (LZO_OS_POSIX_LINUX || LZO_OS_WIN64)
2298#  define LZO_ABI_LITTLE_ENDIAN     1
2299#elif (LZO_ARCH_ALPHA || LZO_ARCH_AMD64 || LZO_ARCH_BLACKFIN || LZO_ARCH_CRIS || LZO_ARCH_I086 || LZO_ARCH_I386 || LZO_ARCH_MSP430)
2300#  define LZO_ABI_LITTLE_ENDIAN     1
2301#elif (LZO_ARCH_AVR32 || LZO_ARCH_M68K || LZO_ARCH_S390 || LZO_ARCH_SPU)
2302#  define LZO_ABI_BIG_ENDIAN        1
2303#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__)
2304#  if (__LITTLE_ENDIAN__ == 1)
2305#    define LZO_ABI_LITTLE_ENDIAN   1
2306#  else
2307#    define LZO_ABI_BIG_ENDIAN      1
2308#  endif
2309#elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
2310#  define LZO_ABI_BIG_ENDIAN        1
2311#elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
2312#  define LZO_ABI_LITTLE_ENDIAN     1
2313#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEB__) && !defined(__ARMEL__)
2314#  define LZO_ABI_BIG_ENDIAN        1
2315#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__)
2316#  define LZO_ABI_LITTLE_ENDIAN     1
2317#elif 1 && (LZO_ARCH_ARM && LZO_CC_ARMCC_ARMCC)
2318#  if defined(__BIG_ENDIAN) && defined(__LITTLE_ENDIAN)
2319#    error "unexpected configuration - check your compiler defines"
2320#  elif defined(__BIG_ENDIAN)
2321#    define LZO_ABI_BIG_ENDIAN      1
2322#  else
2323#    define LZO_ABI_LITTLE_ENDIAN   1
2324#  endif
2325#  define LZO_ABI_LITTLE_ENDIAN     1
2326#elif 1 && (LZO_ARCH_ARM64) && defined(__AARCH64EB__) && !defined(__AARCH64EL__)
2327#  define LZO_ABI_BIG_ENDIAN        1
2328#elif 1 && (LZO_ARCH_ARM64) && defined(__AARCH64EL__) && !defined(__AARCH64EB__)
2329#  define LZO_ABI_LITTLE_ENDIAN     1
2330#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__)
2331#  define LZO_ABI_BIG_ENDIAN        1
2332#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__)
2333#  define LZO_ABI_LITTLE_ENDIAN     1
2334#endif
2335#endif
2336#if (LZO_ABI_BIG_ENDIAN) && (LZO_ABI_LITTLE_ENDIAN)
2337#  error "unexpected configuration - check your compiler defines"
2338#endif
2339#if (LZO_ABI_BIG_ENDIAN)
2340#  define LZO_INFO_ABI_ENDIAN       "be"
2341#elif (LZO_ABI_LITTLE_ENDIAN)
2342#  define LZO_INFO_ABI_ENDIAN       "le"
2343#elif (LZO_ABI_NEUTRAL_ENDIAN)
2344#  define LZO_INFO_ABI_ENDIAN       "neutral"
2345#endif
2346#if (LZO_SIZEOF_INT == 1 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
2347#  define LZO_ABI_I8LP16         1
2348#  define LZO_INFO_ABI_PM       "i8lp16"
2349#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
2350#  define LZO_ABI_ILP16         1
2351#  define LZO_INFO_ABI_PM       "ilp16"
2352#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4)
2353#  define LZO_ABI_LP32          1
2354#  define LZO_INFO_ABI_PM       "lp32"
2355#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4)
2356#  define LZO_ABI_ILP32         1
2357#  define LZO_INFO_ABI_PM       "ilp32"
2358#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 8 && LZO_SIZEOF_SIZE_T == 8)
2359#  define LZO_ABI_LLP64         1
2360#  define LZO_INFO_ABI_PM       "llp64"
2361#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
2362#  define LZO_ABI_LP64          1
2363#  define LZO_INFO_ABI_PM       "lp64"
2364#elif (LZO_SIZEOF_INT == 8 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
2365#  define LZO_ABI_ILP64         1
2366#  define LZO_INFO_ABI_PM       "ilp64"
2367#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 4)
2368#  define LZO_ABI_IP32L64       1
2369#  define LZO_INFO_ABI_PM       "ip32l64"
2370#endif
2371#if 0
2372#elif !defined(__LZO_LIBC_OVERRIDE)
2373#if (LZO_LIBC_NAKED)
2374#  define LZO_INFO_LIBC         "naked"
2375#elif (LZO_LIBC_FREESTANDING)
2376#  define LZO_INFO_LIBC         "freestanding"
2377#elif (LZO_LIBC_MOSTLY_FREESTANDING)
2378#  define LZO_INFO_LIBC         "mfreestanding"
2379#elif (LZO_LIBC_ISOC90)
2380#  define LZO_INFO_LIBC         "isoc90"
2381#elif (LZO_LIBC_ISOC99)
2382#  define LZO_INFO_LIBC         "isoc99"
2383#elif (LZO_CC_ARMCC_ARMCC) && defined(__ARMCLIB_VERSION)
2384#  define LZO_LIBC_ISOC90       1
2385#  define LZO_INFO_LIBC         "isoc90"
2386#elif defined(__dietlibc__)
2387#  define LZO_LIBC_DIETLIBC     1
2388#  define LZO_INFO_LIBC         "dietlibc"
2389#elif defined(_NEWLIB_VERSION)
2390#  define LZO_LIBC_NEWLIB       1
2391#  define LZO_INFO_LIBC         "newlib"
2392#elif defined(__UCLIBC__) && defined(__UCLIBC_MAJOR__) && defined(__UCLIBC_MINOR__)
2393#  if defined(__UCLIBC_SUBLEVEL__)
2394#    define LZO_LIBC_UCLIBC     (__UCLIBC_MAJOR__ * 0x10000L + (__UCLIBC_MINOR__-0) * 0x100 + (__UCLIBC_SUBLEVEL__-0))
2395#  else
2396#    define LZO_LIBC_UCLIBC     0x00090bL
2397#  endif
2398#  define LZO_INFO_LIBC         "uc" "libc"
2399#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__)
2400#  define LZO_LIBC_GLIBC        (__GLIBC__ * 0x10000L + (__GLIBC_MINOR__-0) * 0x100)
2401#  define LZO_INFO_LIBC         "glibc"
2402#elif (LZO_CC_MWERKS) && defined(__MSL__)
2403#  define LZO_LIBC_MSL          __MSL__
2404#  define LZO_INFO_LIBC         "msl"
2405#elif 1 && defined(__IAR_SYSTEMS_ICC__)
2406#  define LZO_LIBC_ISOC90       1
2407#  define LZO_INFO_LIBC         "isoc90"
2408#else
2409#  define LZO_LIBC_DEFAULT      1
2410#  define LZO_INFO_LIBC         "default"
2411#endif
2412#endif
2413#if (LZO_ARCH_I386 && (LZO_OS_DOS32 || LZO_OS_WIN32) && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
2414#  define LZO_ASM_SYNTAX_MSC 1
2415#elif (LZO_OS_WIN64 && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
2416#elif (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC == 0x011f00ul))
2417#elif (LZO_ARCH_I386 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
2418#  define LZO_ASM_SYNTAX_GNUC 1
2419#elif (LZO_ARCH_AMD64 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
2420#  define LZO_ASM_SYNTAX_GNUC 1
2421#elif (LZO_CC_GNUC)
2422#  define LZO_ASM_SYNTAX_GNUC 1
2423#endif
2424#if (LZO_ASM_SYNTAX_GNUC)
2425#if (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul))
2426#  define __LZO_ASM_CLOBBER                     "ax"
2427#  define __LZO_ASM_CLOBBER_LIST_CC             /*empty*/
2428#  define __LZO_ASM_CLOBBER_LIST_CC_MEMORY      /*empty*/
2429#  define __LZO_ASM_CLOBBER_LIST_EMPTY          /*empty*/
2430#elif (LZO_CC_INTELC && (__INTEL_COMPILER < 1000))
2431#  define __LZO_ASM_CLOBBER                     "memory"
2432#  define __LZO_ASM_CLOBBER_LIST_CC             /*empty*/
2433#  define __LZO_ASM_CLOBBER_LIST_CC_MEMORY      : "memory"
2434#  define __LZO_ASM_CLOBBER_LIST_EMPTY          /*empty*/
2435#else
2436#  define __LZO_ASM_CLOBBER                     "cc", "memory"
2437#  define __LZO_ASM_CLOBBER_LIST_CC             : "cc"
2438#  define __LZO_ASM_CLOBBER_LIST_CC_MEMORY      : "cc", "memory"
2439#  define __LZO_ASM_CLOBBER_LIST_EMPTY          /*empty*/
2440#endif
2441#endif
2442#if (LZO_ARCH_ALPHA)
2443#  define LZO_OPT_AVOID_UINT_INDEX          1
2444#elif (LZO_ARCH_AMD64)
2445#  define LZO_OPT_AVOID_INT_INDEX           1
2446#  define LZO_OPT_AVOID_UINT_INDEX          1
2447#  ifndef LZO_OPT_UNALIGNED16
2448#  define LZO_OPT_UNALIGNED16               1
2449#  endif
2450#  ifndef LZO_OPT_UNALIGNED32
2451#  define LZO_OPT_UNALIGNED32               1
2452#  endif
2453#  ifndef LZO_OPT_UNALIGNED64
2454#  define LZO_OPT_UNALIGNED64               1
2455#  endif
2456#elif (LZO_ARCH_ARM)
2457#  if defined(__ARM_FEATURE_UNALIGNED)
2458#    ifndef LZO_OPT_UNALIGNED16
2459#    define LZO_OPT_UNALIGNED16             1
2460#    endif
2461#    ifndef LZO_OPT_UNALIGNED32
2462#    define LZO_OPT_UNALIGNED32             1
2463#    endif
2464#  elif defined(__TARGET_ARCH_ARM) && ((__TARGET_ARCH_ARM+0) >= 7)
2465#    ifndef LZO_OPT_UNALIGNED16
2466#    define LZO_OPT_UNALIGNED16             1
2467#    endif
2468#    ifndef LZO_OPT_UNALIGNED32
2469#    define LZO_OPT_UNALIGNED32             1
2470#    endif
2471#  elif defined(__TARGET_ARCH_ARM) && ((__TARGET_ARCH_ARM+0) >= 6) && !defined(__TARGET_PROFILE_M)
2472#    ifndef LZO_OPT_UNALIGNED16
2473#    define LZO_OPT_UNALIGNED16             1
2474#    endif
2475#    ifndef LZO_OPT_UNALIGNED32
2476#    define LZO_OPT_UNALIGNED32             1
2477#    endif
2478#  endif
2479#elif (LZO_ARCH_ARM64)
2480#  ifndef LZO_OPT_UNALIGNED16
2481#  define LZO_OPT_UNALIGNED16               1
2482#  endif
2483#  ifndef LZO_OPT_UNALIGNED32
2484#  define LZO_OPT_UNALIGNED32               1
2485#  endif
2486#  ifndef LZO_OPT_UNALIGNED64
2487#  define LZO_OPT_UNALIGNED64               1
2488#  endif
2489#elif (LZO_ARCH_CRIS)
2490#  ifndef LZO_OPT_UNALIGNED16
2491#  define LZO_OPT_UNALIGNED16               1
2492#  endif
2493#  ifndef LZO_OPT_UNALIGNED32
2494#  define LZO_OPT_UNALIGNED32               1
2495#  endif
2496#elif (LZO_ARCH_I386)
2497#  ifndef LZO_OPT_UNALIGNED16
2498#  define LZO_OPT_UNALIGNED16               1
2499#  endif
2500#  ifndef LZO_OPT_UNALIGNED32
2501#  define LZO_OPT_UNALIGNED32               1
2502#  endif
2503#elif (LZO_ARCH_IA64)
2504#  define LZO_OPT_AVOID_INT_INDEX           1
2505#  define LZO_OPT_AVOID_UINT_INDEX          1
2506#  define LZO_OPT_PREFER_POSTINC            1
2507#elif (LZO_ARCH_M68K)
2508#  define LZO_OPT_PREFER_POSTINC            1
2509#  define LZO_OPT_PREFER_PREDEC             1
2510#  if defined(__mc68020__) && !defined(__mcoldfire__)
2511#    ifndef LZO_OPT_UNALIGNED16
2512#    define LZO_OPT_UNALIGNED16             1
2513#    endif
2514#    ifndef LZO_OPT_UNALIGNED32
2515#    define LZO_OPT_UNALIGNED32             1
2516#    endif
2517#  endif
2518#elif (LZO_ARCH_MIPS)
2519#  define LZO_OPT_AVOID_UINT_INDEX          1
2520#elif (LZO_ARCH_POWERPC)
2521#  define LZO_OPT_PREFER_PREINC             1
2522#  define LZO_OPT_PREFER_PREDEC             1
2523#  if (LZO_ABI_BIG_ENDIAN)
2524#    ifndef LZO_OPT_UNALIGNED16
2525#    define LZO_OPT_UNALIGNED16             1
2526#    endif
2527#    ifndef LZO_OPT_UNALIGNED32
2528#    define LZO_OPT_UNALIGNED32             1
2529#    endif
2530#    if (LZO_WORDSIZE == 8)
2531#      ifndef LZO_OPT_UNALIGNED64
2532#      define LZO_OPT_UNALIGNED64           1
2533#      endif
2534#    endif
2535#  endif
2536#elif (LZO_ARCH_S390)
2537#  ifndef LZO_OPT_UNALIGNED16
2538#  define LZO_OPT_UNALIGNED16               1
2539#  endif
2540#  ifndef LZO_OPT_UNALIGNED32
2541#  define LZO_OPT_UNALIGNED32               1
2542#  endif
2543#  if (LZO_WORDSIZE == 8)
2544#    ifndef LZO_OPT_UNALIGNED64
2545#    define LZO_OPT_UNALIGNED64             1
2546#    endif
2547#  endif
2548#elif (LZO_ARCH_SH)
2549#  define LZO_OPT_PREFER_POSTINC            1
2550#  define LZO_OPT_PREFER_PREDEC             1
2551#endif
2552#ifndef LZO_CFG_NO_INLINE_ASM
2553#if (LZO_ABI_NEUTRAL_ENDIAN) || (LZO_ARCH_GENERIC)
2554#  define LZO_CFG_NO_INLINE_ASM 1
2555#elif (LZO_CC_LLVM)
2556#  define LZO_CFG_NO_INLINE_ASM 1
2557#endif
2558#endif
2559#if (LZO_CFG_NO_INLINE_ASM)
2560#  undef LZO_ASM_SYNTAX_MSC
2561#  undef LZO_ASM_SYNTAX_GNUC
2562#  undef __LZO_ASM_CLOBBER
2563#  undef __LZO_ASM_CLOBBER_LIST_CC
2564#  undef __LZO_ASM_CLOBBER_LIST_CC_MEMORY
2565#  undef __LZO_ASM_CLOBBER_LIST_EMPTY
2566#endif
2567#ifndef LZO_CFG_NO_UNALIGNED
2568#if (LZO_ABI_NEUTRAL_ENDIAN) || (LZO_ARCH_GENERIC)
2569#  define LZO_CFG_NO_UNALIGNED 1
2570#endif
2571#endif
2572#if (LZO_CFG_NO_UNALIGNED)
2573#  undef LZO_OPT_UNALIGNED16
2574#  undef LZO_OPT_UNALIGNED32
2575#  undef LZO_OPT_UNALIGNED64
2576#endif
2577#if defined(__LZO_INFOSTR_MM)
2578#elif (LZO_MM_FLAT) && (defined(__LZO_INFOSTR_PM) || defined(LZO_INFO_ABI_PM))
2579#  define __LZO_INFOSTR_MM          ""
2580#elif defined(LZO_INFO_MM)
2581#  define __LZO_INFOSTR_MM          "." LZO_INFO_MM
2582#else
2583#  define __LZO_INFOSTR_MM          ""
2584#endif
2585#if defined(__LZO_INFOSTR_PM)
2586#elif defined(LZO_INFO_ABI_PM)
2587#  define __LZO_INFOSTR_PM          "." LZO_INFO_ABI_PM
2588#else
2589#  define __LZO_INFOSTR_PM          ""
2590#endif
2591#if defined(__LZO_INFOSTR_ENDIAN)
2592#elif defined(LZO_INFO_ABI_ENDIAN)
2593#  define __LZO_INFOSTR_ENDIAN      "." LZO_INFO_ABI_ENDIAN
2594#else
2595#  define __LZO_INFOSTR_ENDIAN      ""
2596#endif
2597#if defined(__LZO_INFOSTR_OSNAME)
2598#elif defined(LZO_INFO_OS_CONSOLE)
2599#  define __LZO_INFOSTR_OSNAME      LZO_INFO_OS "." LZO_INFO_OS_CONSOLE
2600#elif defined(LZO_INFO_OS_POSIX)
2601#  define __LZO_INFOSTR_OSNAME      LZO_INFO_OS "." LZO_INFO_OS_POSIX
2602#else
2603#  define __LZO_INFOSTR_OSNAME      LZO_INFO_OS
2604#endif
2605#if defined(__LZO_INFOSTR_LIBC)
2606#elif defined(LZO_INFO_LIBC)
2607#  define __LZO_INFOSTR_LIBC        "." LZO_INFO_LIBC
2608#else
2609#  define __LZO_INFOSTR_LIBC        ""
2610#endif
2611#if defined(__LZO_INFOSTR_CCVER)
2612#elif defined(LZO_INFO_CCVER)
2613#  define __LZO_INFOSTR_CCVER       " " LZO_INFO_CCVER
2614#else
2615#  define __LZO_INFOSTR_CCVER       ""
2616#endif
2617#define LZO_INFO_STRING \
2618    LZO_INFO_ARCH __LZO_INFOSTR_MM __LZO_INFOSTR_PM __LZO_INFOSTR_ENDIAN \
2619    " " __LZO_INFOSTR_OSNAME __LZO_INFOSTR_LIBC " " LZO_INFO_CC __LZO_INFOSTR_CCVER
2620#if !(LZO_CFG_SKIP_LZO_TYPES)
2621#if (!(LZO_SIZEOF_SHORT+0 > 0 && LZO_SIZEOF_INT+0 > 0 && LZO_SIZEOF_LONG+0 > 0))
2622#  error "missing defines for sizes"
2623#endif
2624#if (!(LZO_SIZEOF_PTRDIFF_T+0 > 0 && LZO_SIZEOF_SIZE_T+0 > 0 && LZO_SIZEOF_VOID_P+0 > 0))
2625#  error "missing defines for sizes"
2626#endif
2627#if !defined(lzo_llong_t)
2628#if (LZO_SIZEOF_LONG_LONG+0 > 0)
2629__lzo_gnuc_extension__ typedef long long lzo_llong_t__;
2630__lzo_gnuc_extension__ typedef unsigned long long lzo_ullong_t__;
2631#  define lzo_llong_t               lzo_llong_t__
2632#  define lzo_ullong_t              lzo_ullong_t__
2633#endif
2634#endif
2635#if !defined(lzo_int16e_t)
2636#if (LZO_SIZEOF_LONG == 2)
2637#  define lzo_int16e_t              long
2638#  define lzo_uint16e_t             unsigned long
2639#elif (LZO_SIZEOF_INT == 2)
2640#  define lzo_int16e_t              int
2641#  define lzo_uint16e_t             unsigned int
2642#elif (LZO_SIZEOF_SHORT == 2)
2643#  define lzo_int16e_t              short int
2644#  define lzo_uint16e_t             unsigned short int
2645#elif 1 && !(LZO_CFG_TYPE_NO_MODE_HI) && (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x025f00ul) || LZO_CC_LLVM)
2646   typedef int lzo_int16e_hi_t__ __attribute__((__mode__(__HI__)));
2647   typedef unsigned int lzo_uint16e_hi_t__ __attribute__((__mode__(__HI__)));
2648#  define lzo_int16e_t              lzo_int16e_hi_t__
2649#  define lzo_uint16e_t             lzo_uint16e_hi_t__
2650#elif (LZO_SIZEOF___INT16 == 2)
2651#  define lzo_int16e_t              __int16
2652#  define lzo_uint16e_t             unsigned __int16
2653#else
2654#endif
2655#endif
2656#if defined(lzo_int16e_t)
2657#  define LZO_SIZEOF_LZO_INT16E_T   2
2658   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int16e_t) == 2)
2659   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int16e_t) == LZO_SIZEOF_LZO_INT16E_T)
2660#endif
2661#if !defined(lzo_int32e_t)
2662#if (LZO_SIZEOF_LONG == 4)
2663#  define lzo_int32e_t              long int
2664#  define lzo_uint32e_t             unsigned long int
2665#elif (LZO_SIZEOF_INT == 4)
2666#  define lzo_int32e_t              int
2667#  define lzo_uint32e_t             unsigned int
2668#elif (LZO_SIZEOF_SHORT == 4)
2669#  define lzo_int32e_t              short int
2670#  define lzo_uint32e_t             unsigned short int
2671#elif (LZO_SIZEOF_LONG_LONG == 4)
2672#  define lzo_int32e_t              lzo_llong_t
2673#  define lzo_uint32e_t             lzo_ullong_t
2674#elif 1 && !(LZO_CFG_TYPE_NO_MODE_SI) && (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x025f00ul) || LZO_CC_LLVM) && (__INT_MAX__+0 > 2147483647L)
2675   typedef int lzo_int32e_si_t__ __attribute__((__mode__(__SI__)));
2676   typedef unsigned int lzo_uint32e_si_t__ __attribute__((__mode__(__SI__)));
2677#  define lzo_int32e_t              lzo_int32e_si_t__
2678#  define lzo_uint32e_t             lzo_uint32e_si_t__
2679#elif 1 && !(LZO_CFG_TYPE_NO_MODE_SI) && (LZO_CC_GNUC >= 0x025f00ul) && defined(__AVR__) && (__LONG_MAX__+0 == 32767L)
2680   typedef int lzo_int32e_si_t__ __attribute__((__mode__(__SI__)));
2681   typedef unsigned int lzo_uint32e_si_t__ __attribute__((__mode__(__SI__)));
2682#  define lzo_int32e_t              lzo_int32e_si_t__
2683#  define lzo_uint32e_t             lzo_uint32e_si_t__
2684#  define LZO_INT32_C(c)            (c##LL)
2685#  define LZO_UINT32_C(c)           (c##ULL)
2686#elif (LZO_SIZEOF___INT32 == 4)
2687#  define lzo_int32e_t              __int32
2688#  define lzo_uint32e_t             unsigned __int32
2689#else
2690#endif
2691#endif
2692#if defined(lzo_int32e_t)
2693#  define LZO_SIZEOF_LZO_INT32E_T   4
2694   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32e_t) == 4)
2695   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32e_t) == LZO_SIZEOF_LZO_INT32E_T)
2696#endif
2697#if !defined(lzo_int64e_t)
2698#if (LZO_SIZEOF___INT64 == 8)
2699#  if (LZO_CC_BORLANDC) && !(LZO_CFG_TYPE_PREFER___INT64)
2700#    define LZO_CFG_TYPE_PREFER___INT64 1
2701#  endif
2702#endif
2703#if (LZO_SIZEOF_INT == 8) && (LZO_SIZEOF_INT < LZO_SIZEOF_LONG)
2704#  define lzo_int64e_t              int
2705#  define lzo_uint64e_t             unsigned int
2706#  define LZO_SIZEOF_LZO_INT64E_T   LZO_SIZEOF_INT
2707#elif (LZO_SIZEOF_LONG == 8)
2708#  define lzo_int64e_t              long int
2709#  define lzo_uint64e_t             unsigned long int
2710#  define LZO_SIZEOF_LZO_INT64E_T   LZO_SIZEOF_LONG
2711#elif (LZO_SIZEOF_LONG_LONG == 8) && !(LZO_CFG_TYPE_PREFER___INT64)
2712#  define lzo_int64e_t              lzo_llong_t
2713#  define lzo_uint64e_t             lzo_ullong_t
2714#  if (LZO_CC_BORLANDC)
2715#    define LZO_INT64_C(c)          ((c) + 0ll)
2716#    define LZO_UINT64_C(c)         ((c) + 0ull)
2717#  elif 0
2718#    define LZO_INT64_C(c)          (__lzo_gnuc_extension__ (c##LL))
2719#    define LZO_UINT64_C(c)         (__lzo_gnuc_extension__ (c##ULL))
2720#  else
2721#    define LZO_INT64_C(c)          (c##LL)
2722#    define LZO_UINT64_C(c)         (c##ULL)
2723#  endif
2724#  define LZO_SIZEOF_LZO_INT64E_T   LZO_SIZEOF_LONG_LONG
2725#elif (LZO_SIZEOF___INT64 == 8)
2726#  define lzo_int64e_t              __int64
2727#  define lzo_uint64e_t             unsigned __int64
2728#  if (LZO_CC_BORLANDC)
2729#    define LZO_INT64_C(c)          ((c) + 0i64)
2730#    define LZO_UINT64_C(c)         ((c) + 0ui64)
2731#  else
2732#    define LZO_INT64_C(c)          (c##i64)
2733#    define LZO_UINT64_C(c)         (c##ui64)
2734#  endif
2735#  define LZO_SIZEOF_LZO_INT64E_T   LZO_SIZEOF___INT64
2736#else
2737#endif
2738#endif
2739#if defined(lzo_int64e_t)
2740   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64e_t) == 8)
2741   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64e_t) == LZO_SIZEOF_LZO_INT64E_T)
2742#endif
2743#if !defined(lzo_int32l_t)
2744#if defined(lzo_int32e_t)
2745#  define lzo_int32l_t              lzo_int32e_t
2746#  define lzo_uint32l_t             lzo_uint32e_t
2747#  define LZO_SIZEOF_LZO_INT32L_T   LZO_SIZEOF_LZO_INT32E_T
2748#elif (LZO_SIZEOF_INT >= 4) && (LZO_SIZEOF_INT < LZO_SIZEOF_LONG)
2749#  define lzo_int32l_t              int
2750#  define lzo_uint32l_t             unsigned int
2751#  define LZO_SIZEOF_LZO_INT32L_T   LZO_SIZEOF_INT
2752#elif (LZO_SIZEOF_LONG >= 4)
2753#  define lzo_int32l_t              long int
2754#  define lzo_uint32l_t             unsigned long int
2755#  define LZO_SIZEOF_LZO_INT32L_T   LZO_SIZEOF_LONG
2756#else
2757#  error "lzo_int32l_t"
2758#endif
2759#endif
2760#if 1
2761   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32l_t) >= 4)
2762   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32l_t) == LZO_SIZEOF_LZO_INT32L_T)
2763#endif
2764#if !defined(lzo_int64l_t)
2765#if defined(lzo_int64e_t)
2766#  define lzo_int64l_t              lzo_int64e_t
2767#  define lzo_uint64l_t             lzo_uint64e_t
2768#  define LZO_SIZEOF_LZO_INT64L_T   LZO_SIZEOF_LZO_INT64E_T
2769#else
2770#endif
2771#endif
2772#if defined(lzo_int64l_t)
2773   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64l_t) >= 8)
2774   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64l_t) == LZO_SIZEOF_LZO_INT64L_T)
2775#endif
2776#if !defined(lzo_int32f_t)
2777#if (LZO_SIZEOF_SIZE_T >= 8)
2778#  define lzo_int32f_t              lzo_int64l_t
2779#  define lzo_uint32f_t             lzo_uint64l_t
2780#  define LZO_SIZEOF_LZO_INT32F_T   LZO_SIZEOF_LZO_INT64L_T
2781#else
2782#  define lzo_int32f_t              lzo_int32l_t
2783#  define lzo_uint32f_t             lzo_uint32l_t
2784#  define LZO_SIZEOF_LZO_INT32F_T   LZO_SIZEOF_LZO_INT32L_T
2785#endif
2786#endif
2787#if 1
2788   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32f_t) >= 4)
2789   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32f_t) == LZO_SIZEOF_LZO_INT32F_T)
2790#endif
2791#if !defined(lzo_int64f_t)
2792#if defined(lzo_int64l_t)
2793#  define lzo_int64f_t              lzo_int64l_t
2794#  define lzo_uint64f_t             lzo_uint64l_t
2795#  define LZO_SIZEOF_LZO_INT64F_T   LZO_SIZEOF_LZO_INT64L_T
2796#else
2797#endif
2798#endif
2799#if defined(lzo_int64f_t)
2800   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64f_t) >= 8)
2801   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64f_t) == LZO_SIZEOF_LZO_INT64F_T)
2802#endif
2803#if !defined(lzo_intptr_t)
2804#if 1 && (LZO_OS_OS400 && (LZO_SIZEOF_VOID_P == 16))
2805#  define __LZO_INTPTR_T_IS_POINTER 1
2806   typedef char*                    lzo_intptr_t;
2807   typedef char*                    lzo_uintptr_t;
2808#  define lzo_intptr_t              lzo_intptr_t
2809#  define lzo_uintptr_t             lzo_uintptr_t
2810#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_VOID_P
2811#elif (LZO_CC_MSC && (_MSC_VER >= 1300) && (LZO_SIZEOF_VOID_P == 4) && (LZO_SIZEOF_INT == 4))
2812   typedef __w64 int                lzo_intptr_t;
2813   typedef __w64 unsigned int       lzo_uintptr_t;
2814#  define lzo_intptr_t              lzo_intptr_t
2815#  define lzo_uintptr_t             lzo_uintptr_t
2816#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_INT
2817#elif (LZO_SIZEOF_SHORT == LZO_SIZEOF_VOID_P) && (LZO_SIZEOF_INT > LZO_SIZEOF_VOID_P)
2818#  define lzo_intptr_t              short
2819#  define lzo_uintptr_t             unsigned short
2820#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_SHORT
2821#elif (LZO_SIZEOF_INT >= LZO_SIZEOF_VOID_P) && (LZO_SIZEOF_INT < LZO_SIZEOF_LONG)
2822#  define lzo_intptr_t              int
2823#  define lzo_uintptr_t             unsigned int
2824#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_INT
2825#elif (LZO_SIZEOF_LONG >= LZO_SIZEOF_VOID_P)
2826#  define lzo_intptr_t              long
2827#  define lzo_uintptr_t             unsigned long
2828#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_LONG
2829#elif (LZO_SIZEOF_LZO_INT64L_T >= LZO_SIZEOF_VOID_P)
2830#  define lzo_intptr_t              lzo_int64l_t
2831#  define lzo_uintptr_t             lzo_uint64l_t
2832#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_LZO_INT64L_T
2833#else
2834#  error "lzo_intptr_t"
2835#endif
2836#endif
2837#if 1
2838    LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_intptr_t) >= sizeof(void *))
2839    LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_intptr_t) == sizeof(lzo_uintptr_t))
2840#endif
2841#if !defined(lzo_word_t)
2842#if defined(LZO_WORDSIZE) && (LZO_WORDSIZE+0 > 0)
2843#if (LZO_WORDSIZE == LZO_SIZEOF_LZO_INTPTR_T) && !(__LZO_INTPTR_T_IS_POINTER)
2844#  define lzo_word_t                lzo_uintptr_t
2845#  define lzo_sword_t               lzo_intptr_t
2846#  define LZO_SIZEOF_LZO_WORD_T LZO_SIZEOF_LZO_INTPTR_T
2847#elif (LZO_WORDSIZE == LZO_SIZEOF_LONG)
2848#  define lzo_word_t                unsigned long
2849#  define lzo_sword_t               long
2850#  define LZO_SIZEOF_LZO_WORD_T LZO_SIZEOF_LONG
2851#elif (LZO_WORDSIZE == LZO_SIZEOF_INT)
2852#  define lzo_word_t                unsigned int
2853#  define lzo_sword_t               int
2854#  define LZO_SIZEOF_LZO_WORD_T LZO_SIZEOF_INT
2855#elif (LZO_WORDSIZE == LZO_SIZEOF_SHORT)
2856#  define lzo_word_t                unsigned short
2857#  define lzo_sword_t               short
2858#  define LZO_SIZEOF_LZO_WORD_T LZO_SIZEOF_SHORT
2859#elif (LZO_WORDSIZE == 1)
2860#  define lzo_word_t                unsigned char
2861#  define lzo_sword_t               signed char
2862#  define LZO_SIZEOF_LZO_WORD_T 1
2863#elif (LZO_WORDSIZE == LZO_SIZEOF_LZO_INT64L_T)
2864#  define lzo_word_t                lzo_uint64l_t
2865#  define lzo_sword_t               lzo_int64l_t
2866#  define LZO_SIZEOF_LZO_WORD_T LZO_SIZEOF_LZO_INT64L_T
2867#elif (LZO_ARCH_SPU) && (LZO_CC_GNUC)
2868#if 0
2869   typedef unsigned lzo_word_t  __attribute__((__mode__(__V16QI__)));
2870   typedef int      lzo_sword_t __attribute__((__mode__(__V16QI__)));
2871#  define lzo_word_t                lzo_word_t
2872#  define lzo_sword_t               lzo_sword_t
2873#  define LZO_SIZEOF_LZO_WORD_T     16
2874#endif
2875#else
2876#  error "lzo_word_t"
2877#endif
2878#endif
2879#endif
2880#if 1 && defined(lzo_word_t)
2881    LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_word_t)  == LZO_WORDSIZE)
2882    LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_sword_t) == LZO_WORDSIZE)
2883#endif
2884#if 1
2885#define lzo_int8_t                  signed char
2886#define lzo_uint8_t                 unsigned char
2887#define LZO_SIZEOF_LZO_INT8_T       1
2888LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int8_t) == 1)
2889LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int8_t) == sizeof(lzo_uint8_t))
2890#endif
2891#if defined(lzo_int16e_t)
2892#define lzo_int16_t                 lzo_int16e_t
2893#define lzo_uint16_t                lzo_uint16e_t
2894#define LZO_SIZEOF_LZO_INT16_T      LZO_SIZEOF_LZO_INT16E_T
2895LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int16_t) == 2)
2896LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int16_t) == sizeof(lzo_uint16_t))
2897#endif
2898#if defined(lzo_int32e_t)
2899#define lzo_int32_t                 lzo_int32e_t
2900#define lzo_uint32_t                lzo_uint32e_t
2901#define LZO_SIZEOF_LZO_INT32_T      LZO_SIZEOF_LZO_INT32E_T
2902LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32_t) == 4)
2903LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32_t) == sizeof(lzo_uint32_t))
2904#endif
2905#if defined(lzo_int64e_t)
2906#define lzo_int64_t                 lzo_int64e_t
2907#define lzo_uint64_t                lzo_uint64e_t
2908#define LZO_SIZEOF_LZO_INT64_T      LZO_SIZEOF_LZO_INT64E_T
2909LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64_t) == 8)
2910LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64_t) == sizeof(lzo_uint64_t))
2911#endif
2912#if 1
2913#define lzo_int_least32_t           lzo_int32l_t
2914#define lzo_uint_least32_t          lzo_uint32l_t
2915#define LZO_SIZEOF_LZO_INT_LEAST32_T LZO_SIZEOF_LZO_INT32L_T
2916LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_least32_t) >= 4)
2917LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_least32_t) == sizeof(lzo_uint_least32_t))
2918#endif
2919#if defined(lzo_int64l_t)
2920#define lzo_int_least64_t           lzo_int64l_t
2921#define lzo_uint_least64_t          lzo_uint64l_t
2922#define LZO_SIZEOF_LZO_INT_LEAST64_T LZO_SIZEOF_LZO_INT64L_T
2923LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_least64_t) >= 8)
2924LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_least64_t) == sizeof(lzo_uint_least64_t))
2925#endif
2926#if 1
2927#define lzo_int_fast32_t           lzo_int32f_t
2928#define lzo_uint_fast32_t          lzo_uint32f_t
2929#define LZO_SIZEOF_LZO_INT_FAST32_T LZO_SIZEOF_LZO_INT32F_T
2930LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_fast32_t) >= 4)
2931LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_fast32_t) == sizeof(lzo_uint_fast32_t))
2932#endif
2933#if defined(lzo_int64f_t)
2934#define lzo_int_fast64_t           lzo_int64f_t
2935#define lzo_uint_fast64_t          lzo_uint64f_t
2936#define LZO_SIZEOF_LZO_INT_FAST64_T LZO_SIZEOF_LZO_INT64F_T
2937LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_fast64_t) >= 8)
2938LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_fast64_t) == sizeof(lzo_uint_fast64_t))
2939#endif
2940#if !defined(LZO_INT16_C)
2941#  if (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_INT >= 2)
2942#    define LZO_INT16_C(c)          ((c) + 0)
2943#    define LZO_UINT16_C(c)         ((c) + 0U)
2944#  elif (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_LONG >= 2)
2945#    define LZO_INT16_C(c)          ((c) + 0L)
2946#    define LZO_UINT16_C(c)         ((c) + 0UL)
2947#  elif (LZO_SIZEOF_INT >= 2)
2948#    define LZO_INT16_C(c)          (c)
2949#    define LZO_UINT16_C(c)         (c##U)
2950#  elif (LZO_SIZEOF_LONG >= 2)
2951#    define LZO_INT16_C(c)          (c##L)
2952#    define LZO_UINT16_C(c)         (c##UL)
2953#  else
2954#    error "LZO_INT16_C"
2955#  endif
2956#endif
2957#if !defined(LZO_INT32_C)
2958#  if (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_INT >= 4)
2959#    define LZO_INT32_C(c)          ((c) + 0)
2960#    define LZO_UINT32_C(c)         ((c) + 0U)
2961#  elif (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_LONG >= 4)
2962#    define LZO_INT32_C(c)          ((c) + 0L)
2963#    define LZO_UINT32_C(c)         ((c) + 0UL)
2964#  elif (LZO_SIZEOF_INT >= 4)
2965#    define LZO_INT32_C(c)          (c)
2966#    define LZO_UINT32_C(c)         (c##U)
2967#  elif (LZO_SIZEOF_LONG >= 4)
2968#    define LZO_INT32_C(c)          (c##L)
2969#    define LZO_UINT32_C(c)         (c##UL)
2970#  elif (LZO_SIZEOF_LONG_LONG >= 4)
2971#    define LZO_INT32_C(c)          (c##LL)
2972#    define LZO_UINT32_C(c)         (c##ULL)
2973#  else
2974#    error "LZO_INT32_C"
2975#  endif
2976#endif
2977#if !defined(LZO_INT64_C) && defined(lzo_int64l_t)
2978#  if (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_INT >= 8)
2979#    define LZO_INT64_C(c)          ((c) + 0)
2980#    define LZO_UINT64_C(c)         ((c) + 0U)
2981#  elif (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_LONG >= 8)
2982#    define LZO_INT64_C(c)          ((c) + 0L)
2983#    define LZO_UINT64_C(c)         ((c) + 0UL)
2984#  elif (LZO_SIZEOF_INT >= 8)
2985#    define LZO_INT64_C(c)          (c)
2986#    define LZO_UINT64_C(c)         (c##U)
2987#  elif (LZO_SIZEOF_LONG >= 8)
2988#    define LZO_INT64_C(c)          (c##L)
2989#    define LZO_UINT64_C(c)         (c##UL)
2990#  else
2991#    error "LZO_INT64_C"
2992#  endif
2993#endif
2994#endif
2995
2996#endif /* already included */
2997
2998/* vim:set ts=4 sw=4 et: */
2999