lzoconf.h

Go to the documentation of this file.
00001 /* $Id: lzoconf.h 9050 2007-03-07 11:47:46Z rubidium $ */
00002 
00036 #ifndef LZOCONF_H
00037 #define LZOCONF_H
00038 
00039 #define LZO_VERSION             0x1080
00040 #define LZO_VERSION_STRING      "1.08"
00041 #define LZO_VERSION_DATE        "Jul 12 2002"
00042 
00043 /* internal Autoconf configuration file - only used when building LZO */
00044 #if defined(LZO_HAVE_CONFIG_H)
00045 #  include <config.h>
00046 #endif
00047 #include <limits.h>
00048 
00049 #ifdef __cplusplus
00050 extern "C" {
00051 #endif
00052 
00053 
00054 /***********************************************************************
00055  * LZO requires a conforming <limits.h>
00056  ***********************************************************************/
00057 
00058 #if !defined(CHAR_BIT) || (CHAR_BIT != 8)
00059 #  error "invalid CHAR_BIT"
00060 #endif
00061 #if !defined(UCHAR_MAX) || !defined(UINT_MAX) || !defined(ULONG_MAX)
00062 #  error "check your compiler installation"
00063 #endif
00064 #if (USHRT_MAX < 1) || (UINT_MAX < 1) || (ULONG_MAX < 1)
00065 #  error "your limits.h macros are broken"
00066 #endif
00067 
00068 /* workaround a cpp bug under hpux 10.20 */
00069 #define LZO_0xffffffffL         4294967295ul
00070 
00071 #if !defined(LZO_UINT32_C)
00072 #  if (UINT_MAX < LZO_0xffffffffL)
00073 #    define LZO_UINT32_C(c)     c ## UL
00074 #  else
00075 #    define LZO_UINT32_C(c)     c ## U
00076 #  endif
00077 #endif
00078 
00079 
00080 /***********************************************************************
00081  * architecture defines
00082  ***********************************************************************/
00083 
00084 #if !defined(__LZO_WIN) && !defined(__LZO_DOS) && !defined(__LZO_OS2)
00085 #  if defined(__WINDOWS__) || defined(_WINDOWS) || defined(_Windows)
00086 #    define __LZO_WIN
00087 #  elif defined(__WIN32__) || defined(_WIN32) || defined(WIN32)
00088 #    define __LZO_WIN
00089 #  elif defined(__NT__) || defined(__NT_DLL__) || defined(__WINDOWS_386__)
00090 #    define __LZO_WIN
00091 #  elif defined(__DOS__) || defined(__MSDOS__) || defined(MSDOS)
00092 #    define __LZO_DOS
00093 #  elif defined(__OS2__) || defined(__OS2V2__) || defined(OS2)
00094 #    define __LZO_OS2
00095 #  elif defined(__palmos__)
00096 #    define __LZO_PALMOS
00097 #  elif defined(__TOS__) || defined(__atarist__)
00098 #    define __LZO_TOS
00099 #  endif
00100 #endif
00101 
00102 #if (UINT_MAX < LZO_0xffffffffL)
00103 #  if defined(__LZO_WIN)
00104 #    define __LZO_WIN16
00105 #  elif defined(__LZO_DOS)
00106 #    define __LZO_DOS16
00107 #  elif defined(__LZO_PALMOS)
00108 #    define __LZO_PALMOS16
00109 #  elif defined(__LZO_TOS)
00110 #    define __LZO_TOS16
00111 #  elif defined(__C166__)
00112 #  else
00113      /* porting hint: for pure 16-bit architectures try compiling
00114       * everything with -D__LZO_STRICT_16BIT */
00115 #    error "16-bit target not supported - contact me for porting hints"
00116 #  endif
00117 #endif
00118 
00119 #if !defined(__LZO_i386)
00120 #  if defined(__LZO_DOS) || defined(__LZO_WIN16)
00121 #    define __LZO_i386
00122 #  elif defined(__i386__) || defined(__386__) || defined(_M_IX86)
00123 #    define __LZO_i386
00124 #  endif
00125 #endif
00126 
00127 #if defined(__LZO_STRICT_16BIT)
00128 #  if (UINT_MAX < LZO_0xffffffffL)
00129 #    include <lzo16bit.h>
00130 #  endif
00131 #endif
00132 
00133 /* memory checkers */
00134 #if !defined(__LZO_CHECKER)
00135 #  if defined(__BOUNDS_CHECKING_ON)
00136 #    define __LZO_CHECKER
00137 #  elif defined(__CHECKER__)
00138 #    define __LZO_CHECKER
00139 #  elif defined(__INSURE__)
00140 #    define __LZO_CHECKER
00141 #  elif defined(__PURIFY__)
00142 #    define __LZO_CHECKER
00143 #  endif
00144 #endif
00145 
00146 
00147 /***********************************************************************
00148  * integral and pointer types
00149  ***********************************************************************/
00150 
00151 /* Integral types with 32 bits or more */
00152 #if !defined(LZO_UINT32_MAX)
00153 #  if (UINT_MAX >= LZO_0xffffffffL)
00154      typedef unsigned int       lzo_uint32;
00155      typedef int                lzo_int32;
00156 #    define LZO_UINT32_MAX      UINT_MAX
00157 #    define LZO_INT32_MAX       INT_MAX
00158 #    define LZO_INT32_MIN       INT_MIN
00159 #  elif (ULONG_MAX >= LZO_0xffffffffL)
00160      typedef unsigned long      lzo_uint32;
00161      typedef long               lzo_int32;
00162 #    define LZO_UINT32_MAX      ULONG_MAX
00163 #    define LZO_INT32_MAX       LONG_MAX
00164 #    define LZO_INT32_MIN       LONG_MIN
00165 #  else
00166 #    error "lzo_uint32"
00167 #  endif
00168 #endif
00169 
00170 /* lzo_uint is used like size_t */
00171 #if !defined(LZO_UINT_MAX)
00172 #  if (UINT_MAX >= LZO_0xffffffffL)
00173      typedef unsigned int       lzo_uint;
00174      typedef int                lzo_int;
00175 #    define LZO_UINT_MAX        UINT_MAX
00176 #    define LZO_INT_MAX         INT_MAX
00177 #    define LZO_INT_MIN         INT_MIN
00178 #  elif (ULONG_MAX >= LZO_0xffffffffL)
00179      typedef unsigned long      lzo_uint;
00180      typedef long               lzo_int;
00181 #    define LZO_UINT_MAX        ULONG_MAX
00182 #    define LZO_INT_MAX         LONG_MAX
00183 #    define LZO_INT_MIN         LONG_MIN
00184 #  else
00185 #    error "lzo_uint"
00186 #  endif
00187 #endif
00188 
00189 typedef int lzo_bool;
00190 
00191 
00192 /***********************************************************************
00193  * memory models
00194  ***********************************************************************/
00195 
00196 /* Memory model for the public code segment. */
00197 #if !defined(__LZO_CMODEL)
00198 #  if defined(__LZO_DOS16) || defined(__LZO_WIN16)
00199 #    define __LZO_CMODEL        __far
00200 #  elif defined(__LZO_i386) && defined(__WATCOMC__)
00201 #    define __LZO_CMODEL        __near
00202 #  else
00203 #    define __LZO_CMODEL
00204 #  endif
00205 #endif
00206 
00207 /* Memory model for the public data segment. */
00208 #if !defined(__LZO_DMODEL)
00209 #  if defined(__LZO_DOS16) || defined(__LZO_WIN16)
00210 #    define __LZO_DMODEL        __far
00211 #  elif defined(__LZO_i386) && defined(__WATCOMC__)
00212 #    define __LZO_DMODEL        __near
00213 #  else
00214 #    define __LZO_DMODEL
00215 #  endif
00216 #endif
00217 
00218 /* Memory model that allows to access memory at offsets of lzo_uint. */
00219 #if !defined(__LZO_MMODEL)
00220 #  if (LZO_UINT_MAX <= UINT_MAX)
00221 #    define __LZO_MMODEL
00222 #  elif defined(__LZO_DOS16) || defined(__LZO_WIN16)
00223 #    define __LZO_MMODEL        __huge
00224 #    define LZO_999_UNSUPPORTED
00225 #  elif defined(__LZO_PALMOS16) || defined(__LZO_TOS16)
00226 #    define __LZO_MMODEL
00227 #  else
00228 #    error "__LZO_MMODEL"
00229 #  endif
00230 #endif
00231 
00232 /* no typedef here because of const-pointer issues */
00233 #define lzo_byte                unsigned char __LZO_MMODEL
00234 #define lzo_bytep               unsigned char __LZO_MMODEL *
00235 #define lzo_charp               char __LZO_MMODEL *
00236 #define lzo_voidp               void __LZO_MMODEL *
00237 #define lzo_shortp              short __LZO_MMODEL *
00238 #define lzo_ushortp             unsigned short __LZO_MMODEL *
00239 #define lzo_uint32p             lzo_uint32 __LZO_MMODEL *
00240 #define lzo_int32p              lzo_int32 __LZO_MMODEL *
00241 #define lzo_uintp               lzo_uint __LZO_MMODEL *
00242 #define lzo_intp                lzo_int __LZO_MMODEL *
00243 #define lzo_voidpp              lzo_voidp __LZO_MMODEL *
00244 #define lzo_bytepp              lzo_bytep __LZO_MMODEL *
00245 
00246 #ifndef lzo_sizeof_dict_t
00247 #  define lzo_sizeof_dict_t     sizeof(lzo_bytep)
00248 #endif
00249 
00250 
00251 /***********************************************************************
00252  * calling conventions and function types
00253  ***********************************************************************/
00254 
00255 /* linkage */
00256 #if !defined(__LZO_EXTERN_C)
00257 #  ifdef __cplusplus
00258 #    define __LZO_EXTERN_C      extern "C"
00259 #  else
00260 #    define __LZO_EXTERN_C      extern
00261 #  endif
00262 #endif
00263 
00264 /* calling convention */
00265 #if !defined(__LZO_CDECL)
00266 #  if defined(__LZO_DOS16) || defined(__LZO_WIN16)
00267 #    define __LZO_CDECL         __LZO_CMODEL __cdecl
00268 #  elif defined(__LZO_i386) && defined(_MSC_VER)
00269 #    define __LZO_CDECL         __LZO_CMODEL __cdecl
00270 #  elif defined(__LZO_i386) && defined(__WATCOMC__)
00271 #    define __LZO_CDECL         __LZO_CMODEL __cdecl
00272 #  else
00273 #    define __LZO_CDECL         __LZO_CMODEL
00274 #  endif
00275 #endif
00276 #if !defined(__LZO_ENTRY)
00277 #  define __LZO_ENTRY           __LZO_CDECL
00278 #endif
00279 
00280 /* C++ exception specification for extern "C" function types */
00281 #if !defined(__cplusplus)
00282 #  undef LZO_NOTHROW
00283 #  define LZO_NOTHROW
00284 #elif !defined(LZO_NOTHROW)
00285 #  define LZO_NOTHROW
00286 #endif
00287 
00288 
00289 typedef int
00290 (__LZO_ENTRY *lzo_compress_t)   ( const lzo_byte *src, lzo_uint  src_len,
00291                                         lzo_byte *dst, lzo_uintp dst_len,
00292                                         lzo_voidp wrkmem );
00293 
00294 typedef int
00295 (__LZO_ENTRY *lzo_decompress_t) ( const lzo_byte *src, lzo_uint  src_len,
00296                                         lzo_byte *dst, lzo_uintp dst_len,
00297                                         lzo_voidp wrkmem );
00298 
00299 typedef int
00300 (__LZO_ENTRY *lzo_optimize_t)   (       lzo_byte *src, lzo_uint  src_len,
00301                                         lzo_byte *dst, lzo_uintp dst_len,
00302                                         lzo_voidp wrkmem );
00303 
00304 typedef int
00305 (__LZO_ENTRY *lzo_compress_dict_t)(const lzo_byte *src, lzo_uint  src_len,
00306                                         lzo_byte *dst, lzo_uintp dst_len,
00307                                         lzo_voidp wrkmem,
00308                                   const lzo_byte *dict, lzo_uint dict_len );
00309 
00310 typedef int
00311 (__LZO_ENTRY *lzo_decompress_dict_t)(const lzo_byte *src, lzo_uint  src_len,
00312                                         lzo_byte *dst, lzo_uintp dst_len,
00313                                         lzo_voidp wrkmem,
00314                                   const lzo_byte *dict, lzo_uint dict_len );
00315 
00316 
00317 /* assembler versions always use __cdecl */
00318 typedef int
00319 (__LZO_CDECL *lzo_compress_asm_t)( const lzo_byte *src, lzo_uint  src_len,
00320                                         lzo_byte *dst, lzo_uintp dst_len,
00321                                         lzo_voidp wrkmem );
00322 
00323 typedef int
00324 (__LZO_CDECL *lzo_decompress_asm_t)( const lzo_byte *src, lzo_uint  src_len,
00325                                         lzo_byte *dst, lzo_uintp dst_len,
00326                                         lzo_voidp wrkmem );
00327 
00328 
00329 /* a progress indicator callback function */
00330 typedef void (__LZO_ENTRY *lzo_progress_callback_t) (lzo_uint, lzo_uint);
00331 
00332 
00333 /***********************************************************************
00334  * export information
00335  ***********************************************************************/
00336 
00337 /* DLL export information */
00338 #if !defined(__LZO_EXPORT1)
00339 #  define __LZO_EXPORT1
00340 #endif
00341 #if !defined(__LZO_EXPORT2)
00342 #  define __LZO_EXPORT2
00343 #endif
00344 
00345 /* exported calling convention for C functions */
00346 #if !defined(LZO_PUBLIC)
00347 #  define LZO_PUBLIC(_rettype) \
00348                 __LZO_EXPORT1 _rettype __LZO_EXPORT2 __LZO_ENTRY
00349 #endif
00350 #if !defined(LZO_EXTERN)
00351 #  define LZO_EXTERN(_rettype)          __LZO_EXTERN_C LZO_PUBLIC(_rettype)
00352 #endif
00353 #if !defined(LZO_PRIVATE)
00354 #  define LZO_PRIVATE(_rettype)         static _rettype __LZO_ENTRY
00355 #endif
00356 
00357 /* exported __cdecl calling convention for assembler functions */
00358 #if !defined(LZO_PUBLIC_CDECL)
00359 #  define LZO_PUBLIC_CDECL(_rettype) \
00360                 __LZO_EXPORT1 _rettype __LZO_EXPORT2 __LZO_CDECL
00361 #endif
00362 #if !defined(LZO_EXTERN_CDECL)
00363 #  define LZO_EXTERN_CDECL(_rettype)    __LZO_EXTERN_C LZO_PUBLIC_CDECL(_rettype)
00364 #endif
00365 
00366 /* exported global variables (LZO currently uses no static variables and
00367  * is fully thread safe) */
00368 #if !defined(LZO_PUBLIC_VAR)
00369 #  define LZO_PUBLIC_VAR(_type) \
00370                 __LZO_EXPORT1 _type __LZO_EXPORT2 __LZO_DMODEL
00371 #endif
00372 #if !defined(LZO_EXTERN_VAR)
00373 #  define LZO_EXTERN_VAR(_type)         extern LZO_PUBLIC_VAR(_type)
00374 #endif
00375 
00376 
00377 /***********************************************************************
00378  * error codes and prototypes
00379  ***********************************************************************/
00380 
00381 /* Error codes for the compression/decompression functions. Negative
00382  * values are errors, positive values will be used for special but
00383  * normal events.
00384  */
00385 #define LZO_E_OK                    0
00386 #define LZO_E_ERROR                 (-1)
00387 #define LZO_E_OUT_OF_MEMORY         (-2)    /* not used right now */
00388 #define LZO_E_NOT_COMPRESSIBLE      (-3)    /* not used right now */
00389 #define LZO_E_INPUT_OVERRUN         (-4)
00390 #define LZO_E_OUTPUT_OVERRUN        (-5)
00391 #define LZO_E_LOOKBEHIND_OVERRUN    (-6)
00392 #define LZO_E_EOF_NOT_FOUND         (-7)
00393 #define LZO_E_INPUT_NOT_CONSUMED    (-8)
00394 
00395 
00396 /* lzo_init() should be the first function you call.
00397  * Check the return code !
00398  *
00399  * lzo_init() is a macro to allow checking that the library and the
00400  * compiler's view of various types are consistent.
00401  */
00402 #define lzo_init() __lzo_init2(LZO_VERSION,(int)sizeof(short),(int)sizeof(int),\
00403     (int)sizeof(long),(int)sizeof(lzo_uint32),(int)sizeof(lzo_uint),\
00404     (int)lzo_sizeof_dict_t,(int)sizeof(char *),(int)sizeof(lzo_voidp),\
00405     (int)sizeof(lzo_compress_t))
00406 LZO_EXTERN(int) __lzo_init2(unsigned,int,int,int,int,int,int,int,int,int);
00407 
00408 /* version functions (useful for shared libraries) */
00409 LZO_EXTERN(unsigned) lzo_version();
00410 LZO_EXTERN(const char *) lzo_version_string();
00411 LZO_EXTERN(const char *) lzo_version_date();
00412 LZO_EXTERN(const lzo_charp) _lzo_version_string();
00413 LZO_EXTERN(const lzo_charp) _lzo_version_date();
00414 
00415 /* string functions */
00416 LZO_EXTERN(int)
00417 lzo_memcmp(const lzo_voidp _s1, const lzo_voidp _s2, lzo_uint _len);
00418 LZO_EXTERN(lzo_voidp)
00419 lzo_memcpy(lzo_voidp _dest, const lzo_voidp _src, lzo_uint _len);
00420 LZO_EXTERN(lzo_voidp)
00421 lzo_memmove(lzo_voidp _dest, const lzo_voidp _src, lzo_uint _len);
00422 LZO_EXTERN(lzo_voidp)
00423 lzo_memset(lzo_voidp _s, int _c, lzo_uint _len);
00424 
00425 /* checksum functions */
00426 LZO_EXTERN(lzo_uint32)
00427 lzo_adler32(lzo_uint32 _adler, const lzo_byte *_buf, lzo_uint _len);
00428 LZO_EXTERN(lzo_uint32)
00429 lzo_crc32(lzo_uint32 _c, const lzo_byte *_buf, lzo_uint _len);
00430 
00431 /* misc. */
00432 LZO_EXTERN(lzo_bool) lzo_assert(int _expr);
00433 LZO_EXTERN(int) _lzo_config_check();
00434 typedef union { lzo_bytep p; lzo_uint u; } __lzo_pu_u;
00435 typedef union { lzo_bytep p; lzo_uint32 u32; } __lzo_pu32_u;
00436 typedef union { void *vp; lzo_bytep bp; lzo_uint32 u32; long l; } lzo_align_t;
00437 
00438 /* align a char pointer on a boundary that is a multiple of `size' */
00439 LZO_EXTERN(unsigned) __lzo_align_gap(const lzo_voidp _ptr, lzo_uint _size);
00440 #define LZO_PTR_ALIGN_UP(_ptr,_size) \
00441     ((_ptr) + (lzo_uint) __lzo_align_gap((const lzo_voidp)(_ptr),(lzo_uint)(_size)))
00442 
00443 /* deprecated - only for backward compatibility */
00444 #define LZO_ALIGN(_ptr,_size) LZO_PTR_ALIGN_UP(_ptr,_size)
00445 
00446 
00447 #ifdef __cplusplus
00448 } /* extern "C" */
00449 #endif
00450 
00451 #endif /* LZOCONF_H */

Generated on Sun Sep 13 08:19:16 2009 for OpenTTD by  doxygen 1.5.6