Subversion Repositories QNX 8.QNX8 IFS tool

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /* ucl_conf.h -- main internal configuration file for the the UCL library
  2.  
  3.    This file is part of the UCL data compression library.
  4.  
  5.    Copyright (C) 1996-2004 Markus Franz Xaver Johannes Oberhumer
  6.    All Rights Reserved.
  7.  
  8.    The UCL 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 UCL 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 UCL 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.com>
  25.    http://www.oberhumer.com/opensource/ucl/
  26.  */
  27.  
  28.  
  29. /* WARNING: this file should *not* be used by applications. It is
  30.    part of the implementation of the library and is subject
  31.    to change.
  32.  */
  33.  
  34.  
  35. #ifndef __UCL_CONF_H
  36. #define __UCL_CONF_H
  37.  
  38.  
  39. /***********************************************************************
  40. //
  41. ************************************************************************/
  42.  
  43. #if defined(__UCLCONF_H_INCLUDED)
  44. #  error "include this file first"
  45. #endif
  46. #include <ucl/uclconf.h>
  47.  
  48. #if defined(UCL_HAVE_CONFIG_H)
  49. #  define ACC_CONFIG_NO_HEADER 1
  50. #endif
  51. #define __ACCLIB_FUNCNAME(f)        error_do_not_use_acclib
  52. #include "acc/acc.h"
  53.  
  54. #if (ACC_CC_MSC && (_MSC_VER >= 1300))
  55.    /* avoid `-Wall' warnings in system header files */
  56. #  pragma warning(disable: 4820)
  57.    /* avoid warnings about inlining */
  58. #  pragma warning(disable: 4710 4711)
  59. #endif
  60.  
  61. #if defined(__UCL_MMODEL_HUGE) && (!ACC_HAVE_MM_HUGE_PTR)
  62. #  error "this should not happen - check defines for __huge"
  63. #endif
  64. #if !defined(__UCL_MMODEL_HUGE) && defined(HAVE_MEMCMP)
  65. #  define ucl_memcmp(a,b,c)     memcmp(a,b,c)
  66. #endif
  67. #if !defined(__UCL_MMODEL_HUGE) && defined(HAVE_MEMCPY)
  68. #  define ucl_memcpy(a,b,c)     memcpy(a,b,c)
  69. #endif
  70. #if !defined(__UCL_MMODEL_HUGE) && defined(HAVE_MEMMOVE)
  71. #  define ucl_memmove(a,b,c)    memmove(a,b,c)
  72. #endif
  73. #if !defined(__UCL_MMODEL_HUGE) && defined(HAVE_MEMSET)
  74. #  define ucl_memset(a,b,c)     memset(a,b,c)
  75. #endif
  76.  
  77. #if (ACC_OS_DOS16 + 0 != UCL_OS_DOS16 + 0)
  78. #  error "DOS16"
  79. #endif
  80. #if (ACC_OS_OS216 + 0 != UCL_OS_OS216 + 0)
  81. #  error "OS216"
  82. #endif
  83. #if (ACC_OS_WIN16 + 0 != UCL_OS_WIN16 + 0)
  84. #  error "WIN16"
  85. #endif
  86. #if (ACC_OS_DOS32 + 0 != UCL_OS_DOS32 + 0)
  87. #  error "DOS32"
  88. #endif
  89. #if (ACC_OS_OS2 + 0 != UCL_OS_OS2 + 0)
  90. #  error "DOS32"
  91. #endif
  92. #if (ACC_OS_WIN32 + 0 != UCL_OS_WIN32 + 0)
  93. #  error "WIN32"
  94. #endif
  95. #if (ACC_OS_WIN64 + 0 != UCL_OS_WIN64 + 0)
  96. #  error "WIN64"
  97. #endif
  98.  
  99.  
  100. #include "acc/acc_incd.h"
  101. #if (ACC_OS_DOS16 || ACC_OS_OS216 || ACC_OS_WIN16)
  102. #  include "acc/acc_ince.h"
  103. #  include "acc/acc_inci.h"
  104. #endif
  105.  
  106. #undef NDEBUG
  107. #if !defined(UCL_DEBUG)
  108. #  define NDEBUG 1
  109. #endif
  110. #include <assert.h>
  111.  
  112.  
  113. #if (ACC_OS_DOS16 || ACC_OS_OS216 || ACC_OS_WIN16) && (ACC_CC_BORLANDC)
  114. #  if (__BORLANDC__ >= 0x0450)  /* v4.00 */
  115. #    pragma option -h           /* enable fast huge pointers */
  116. #  else
  117. #    pragma option -h-          /* disable fast huge pointers - compiler bug */
  118. #  endif
  119. #endif
  120.  
  121.  
  122. /***********************************************************************
  123. //
  124. ************************************************************************/
  125.  
  126. #if 1
  127. #  define UCL_BYTE(x)       ((unsigned char) (x))
  128. #else
  129. #  define UCL_BYTE(x)       ((unsigned char) ((x) & 0xff))
  130. #endif
  131. #if 0
  132. #  define UCL_USHORT(x)     ((unsigned short) (x))
  133. #else
  134. #  define UCL_USHORT(x)     ((unsigned short) ((x) & 0xffff))
  135. #endif
  136.  
  137. #define UCL_MAX(a,b)        ((a) >= (b) ? (a) : (b))
  138. #define UCL_MIN(a,b)        ((a) <= (b) ? (a) : (b))
  139. #define UCL_MAX3(a,b,c)     ((a) >= (b) ? UCL_MAX(a,c) : UCL_MAX(b,c))
  140. #define UCL_MIN3(a,b,c)     ((a) <= (b) ? UCL_MIN(a,c) : UCL_MIN(b,c))
  141.  
  142. #define ucl_sizeof(type)    ((ucl_uint) (sizeof(type)))
  143.  
  144. #define UCL_HIGH(array)     ((ucl_uint) (sizeof(array)/sizeof(*(array))))
  145.  
  146. /* this always fits into 16 bits */
  147. #define UCL_SIZE(bits)      (1u << (bits))
  148. #define UCL_MASK(bits)      (UCL_SIZE(bits) - 1)
  149.  
  150. #define UCL_LSIZE(bits)     (1ul << (bits))
  151. #define UCL_LMASK(bits)     (UCL_LSIZE(bits) - 1)
  152.  
  153. #define UCL_USIZE(bits)     ((ucl_uint) 1 << (bits))
  154. #define UCL_UMASK(bits)     (UCL_USIZE(bits) - 1)
  155.  
  156. /* Maximum value of a signed/unsigned type.
  157.    Do not use casts, avoid overflows ! */
  158. #define UCL_STYPE_MAX(b)    (((1l  << (8*(b)-2)) - 1l)  + (1l  << (8*(b)-2)))
  159. #define UCL_UTYPE_MAX(b)    (((1ul << (8*(b)-1)) - 1ul) + (1ul << (8*(b)-1)))
  160.  
  161.  
  162. /***********************************************************************
  163. // compiler and architecture specific stuff
  164. ************************************************************************/
  165.  
  166. /* Some defines that indicate if memory can be accessed at unaligned
  167.  * memory addresses. You should also test that this is actually faster
  168.  * even if it is allowed by your system.
  169.  */
  170.  
  171. #undef UA_GET2
  172. #undef UA_SET2
  173. #undef UA_GET4
  174. #undef UA_SET4
  175. #if 1 && (ACC_ARCH_AMD64 || ACC_ARCH_IA32)
  176. #  define UA_GET2(p)    (* (const ucl_ushortp) (p))
  177. #  define UA_SET2(p)    (* (ucl_ushortp) (p))
  178. #  define UA_GET4(p)    (* (const acc_uint32e_t *) (p))
  179. #  define UA_SET4(p)    (* (acc_uint32e_t *) (p))
  180. #elif 0 && (ACC_ARCH_M68K) && (ACC_CC_GNUC >= 0x020900ul)
  181.    typedef struct { unsigned short v; } __ucl_ua2_t __attribute__((__aligned__(1)));
  182.    typedef struct { unsigned long v; }  __ucl_ua4_t __attribute__((__aligned__(1)));
  183. #  define UA_GET2(p)    (((const __ucl_ua2_t *)(p))->v)
  184. #  define UA_SET2(p)    (((__ucl_ua2_t *)(p))->v)
  185. #  define UA_GET4(p)    (((const __ucl_ua4_t *)(p))->v)
  186. #  define UA_SET4(p)    (((__ucl_ua4_t *)(p))->v)
  187. #endif
  188.  
  189.  
  190. /***********************************************************************
  191. // some globals
  192. ************************************************************************/
  193.  
  194. __UCL_EXTERN_C int __ucl_init_done;
  195. UCL_EXTERN(const ucl_bytep) ucl_copyright(void);
  196.  
  197.  
  198. /***********************************************************************
  199. // ANSI C preprocessor macros
  200. ************************************************************************/
  201.  
  202. #define _UCL_STRINGIZE(x)           #x
  203. #define _UCL_MEXPAND(x)             _UCL_STRINGIZE(x)
  204.  
  205.  
  206. /***********************************************************************
  207. //
  208. ************************************************************************/
  209.  
  210. #include "ucl_ptr.h"
  211.  
  212.  
  213. #endif /* already included */
  214.  
  215. /*
  216. vi:ts=4:et
  217. */
  218.  
  219.