home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 March / PCO3_97.ISO / filesbbs / os2 / lzo026.arj / LZO026.ZIP / lzo-0.26 / include / lzoconf.h < prev   
Encoding:
C/C++ Source or Header  |  1997-01-18  |  7.4 KB  |  240 lines

  1. /* lzoconf.h -- configuration for the LZO real-time data compression library
  2.  
  3.    This file is part of the LZO real-time data compression library.
  4.  
  5.    Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
  6.    Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
  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.    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  22.  
  23.    Markus F.X.J. Oberhumer
  24.    markus.oberhumer@jk.uni-linz.ac.at
  25.  */
  26.  
  27.  
  28. #ifndef __LZOCONF_H
  29. #define __LZOCONF_H
  30.  
  31. #define LZO_VERSION             0x0260
  32. #define LZO_VERSION_STRING      "0.26"
  33. #define LZO_VERSION_DATE        "18 Jan 1997"
  34.  
  35.  
  36. /* internal autoconf configuration file - only used when building LZO */
  37. #if defined(LZO_HAVE_CONFIG_AC)
  38. #  include <config.ac>
  39. #endif
  40.  
  41. #include <limits.h>             /* CHAR_BIT, UINT_MAX, ULONG_MAX, USHRT_MAX */
  42. #if !defined(CHAR_BIT) || (CHAR_BIT != 8)
  43. #  error invalid CHAR_BIT
  44. #endif
  45.  
  46. #ifdef __cplusplus
  47. extern "C" {
  48. #endif
  49.  
  50.  
  51. /***********************************************************************
  52. // architecture defines
  53. ************************************************************************/
  54.  
  55. #if defined(__MSDOS__) || defined(MSDOS)
  56. #  define __LZO_MSDOS
  57. #  if (UINT_MAX < 0xffffffffL)
  58. #    define __LZO_MSDOS16
  59. #  endif
  60. #elif defined(__TOS__)
  61. #  if (UINT_MAX < 0xffffffffL)
  62. #    define __LZO_ATARI16
  63. #  endif
  64. #endif
  65.  
  66.  
  67. /***********************************************************************
  68. // integral and pointer types
  69. ************************************************************************/
  70.  
  71. /* Improve code readability */
  72. typedef int lzo_bool;
  73.  
  74. /* Integral types with 32 bits or more */
  75. #if (UINT_MAX >= 0xffffffffL)
  76.    typedef unsigned int         lzo_uint32;
  77.    typedef int                  lzo_int32;
  78. #  define LZO_UINT32_MAX        UINT_MAX
  79. #elif (ULONG_MAX >= 0xffffffffL)
  80.    typedef unsigned long        lzo_uint32;
  81.    typedef long                 lzo_int32;
  82. #  define LZO_UINT32_MAX        ULONG_MAX
  83. #else
  84. #  error lzo_uint32
  85. #endif
  86.  
  87. /* lzo_uint is used like size_t */
  88. #if (UINT_MAX >= 0xffffffffL)
  89.    typedef unsigned int         lzo_uint;
  90.    typedef int                  lzo_int;
  91. #  define LZO_UINT_MAX          UINT_MAX
  92. #elif (ULONG_MAX >= 0xffffffffL)
  93.    typedef unsigned long        lzo_uint;
  94.    typedef long                 lzo_int;
  95. #  define LZO_UINT_MAX          ULONG_MAX
  96. #else
  97. #  error lzo_uint
  98. #endif
  99.  
  100.  
  101. /* Memory model that allows to access memory at offsets of lzo_uint.
  102.  * Huge pointers (16 bit MSDOS) are somewhat slow, but they work
  103.  * fine and I really don't care about 16 bit compiler
  104.  * optimizations nowadays.
  105.  */
  106. #if (LZO_UINT_MAX <= UINT_MAX)
  107. #  define __LZO_MMODEL
  108. #elif defined(__LZO_MSDOS16)
  109. #  define __LZO_MMODEL          __huge
  110. #  define __LZO_EXPORT          __far __cdecl
  111. #  define LZO_999_UNSUPPORTED
  112. #elif defined(__LZO_ATARI16)
  113. #  define __LZO_MMODEL
  114. #else
  115. #  error __LZO_MMODEL
  116. #endif
  117.  
  118. /* no typedef here because of const-pointer issues */
  119. #define lzo_byte                unsigned char __LZO_MMODEL
  120. #define lzo_bytep               unsigned char __LZO_MMODEL *
  121. #define lzo_voidp               void __LZO_MMODEL *
  122. #define lzo_shortp              short __LZO_MMODEL *
  123. #define lzo_ushortp             unsigned short __LZO_MMODEL *
  124. #define lzo_uint32p             lzo_uint32 __LZO_MMODEL *
  125. #define lzo_int32p              lzo_int32 __LZO_MMODEL *
  126. #define lzo_uintp               lzo_uint __LZO_MMODEL *
  127. #define lzo_intp                lzo_int __LZO_MMODEL *
  128. #define lzo_voidpp              lzo_voidp __LZO_MMODEL *
  129. #define lzo_bytepp              lzo_bytep __LZO_MMODEL *
  130.  
  131.  
  132. /* Unsigned and signed types that can store all bits of a lzo_voidp */
  133. typedef unsigned long           lzo_ptr_t;
  134. typedef long                    lzo_sptr_t;
  135.  
  136. /* Align a char pointer on a boundary that is a multiple of `size' */
  137. #define LZO_ALIGN(ptr,size) \
  138.     ((ptr) + (unsigned) ( \
  139.         (((lzo_ptr_t)(ptr) + (size)-1) & ~((lzo_ptr_t)((size)-1))) - \
  140.         (lzo_ptr_t)(ptr) ))
  141.  
  142.  
  143. /***********************************************************************
  144. // function types
  145. ************************************************************************/
  146.  
  147. #ifdef __cplusplus
  148. #  define LZO_EXTERN_C          extern "C"
  149. #else
  150. #  define LZO_EXTERN_C          extern
  151. #endif
  152.  
  153. #if !defined(__LZO_ENTRY)       /* calling convention */
  154. #  define __LZO_ENTRY
  155. #endif
  156. #if !defined(__LZO_EXPORT)      /* DLL export information */
  157. #  define __LZO_EXPORT
  158. #endif
  159.  
  160. #if !defined(LZO_EXTERN)
  161. #  define LZO_EXTERN(_rettype)  LZO_EXTERN_C _rettype __LZO_ENTRY __LZO_EXPORT
  162. #endif
  163. #if !defined(LZO_PUBLIC)
  164. #  define LZO_PUBLIC(_rettype)  _rettype __LZO_ENTRY __LZO_EXPORT
  165. #endif
  166. #if !defined(LZO_PRIVATE)
  167. #  define LZO_PRIVATE(_rettype) static _rettype __LZO_ENTRY __LZO_EXPORT
  168. #endif
  169.  
  170.  
  171. typedef int __LZO_ENTRY
  172. (__LZO_EXPORT *lzo_compress_t)  ( const lzo_byte *src, lzo_uint  src_len,
  173.                                         lzo_byte *dst, lzo_uint *dst_len,
  174.                                         lzo_voidp wrkmem );
  175.  
  176. typedef int __LZO_ENTRY
  177. (__LZO_EXPORT *lzo_decompress_t)( const lzo_byte *src, lzo_uint  src_len,
  178.                                         lzo_byte *dst, lzo_uint *dst_len,
  179.                                         lzo_voidp wrkmem );
  180.  
  181.  
  182. /* a progress indicator callback function */
  183. typedef void __LZO_ENTRY
  184. (__LZO_EXPORT *lzo_progress_callback_t)(lzo_uint,lzo_uint);
  185.  
  186.  
  187. /***********************************************************************
  188. // error codes and prototypes
  189. ************************************************************************/
  190.  
  191. /* Error codes for the compression/decompression functions. Negative
  192.  * values are errors, positive values will be used for special but
  193.  * normal events.
  194.  */
  195. #define LZO_E_OK                    0
  196. #define LZO_E_ERROR                 (-1)
  197. #define LZO_E_NOT_COMPRESSIBLE      (-2)    /* not used right now */
  198. #define LZO_E_EOF_NOT_FOUND         (-3)
  199. #define LZO_E_INPUT_OVERRUN         (-4)
  200. #define LZO_E_OUTPUT_OVERRUN        (-5)
  201. #define LZO_E_LOOKBEHIND_OVERRUN    (-6)
  202. #define LZO_E_OUT_OF_MEMORY         (-7)    /* not used right now */
  203.  
  204.  
  205. /* this should be the first function you call. Check the return code ! */
  206. LZO_EXTERN(int) lzo_init(void);
  207.  
  208. /* version functions (useful for shared libraries) */
  209. LZO_EXTERN(unsigned) lzo_version(void);
  210. LZO_EXTERN(const char *) lzo_version_string(void);
  211.  
  212. /* string functions */
  213. LZO_EXTERN(int)
  214. lzo_memcmp(const lzo_voidp _s1, const lzo_voidp _s2, lzo_uint _len);
  215. LZO_EXTERN(lzo_voidp)
  216. lzo_memcpy(lzo_voidp _dest, const lzo_voidp _src, lzo_uint _len);
  217. LZO_EXTERN(lzo_voidp)
  218. lzo_memmove(lzo_voidp _dest, const lzo_voidp _src, lzo_uint _len);
  219. LZO_EXTERN(lzo_voidp)
  220. lzo_memset(lzo_voidp _s, int _c, lzo_uint _len);
  221.  
  222. /* checksum functions */
  223. LZO_EXTERN(lzo_uint32)
  224. lzo_adler32(lzo_uint32 _adler, const lzo_byte *_buf, lzo_uint _len);
  225.  
  226. /* misc. */
  227. LZO_EXTERN(lzo_bool) lzo_assert(int _expr);
  228. LZO_EXTERN(int) _lzo_config_check(void);
  229.  
  230.  
  231. #ifdef __cplusplus
  232. } /* extern "C" */
  233. #endif
  234.  
  235. #endif /* already included */
  236.  
  237. /*
  238. vi:ts=4
  239. */
  240.