home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / src / tiff / tiffcomp.h < prev    next >
C/C++ Source or Header  |  2002-11-10  |  7KB  |  217 lines

  1. /* $Header: /pack/cvsroots/wxwindows/wxWindows/src/tiff/tiffcomp.h,v 1.6.2.1 2002/11/10 13:13:58 JS Exp $ */
  2.  
  3. /*
  4.  * Copyright (c) 1990-1997 Sam Leffler
  5.  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
  6.  *
  7.  * Permission to use, copy, modify, distribute, and sell this software and 
  8.  * its documentation for any purpose is hereby granted without fee, provided
  9.  * that (i) the above copyright notices and this permission notice appear in
  10.  * all copies of the software and related documentation, and (ii) the names of
  11.  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  12.  * publicity relating to the software without the specific, prior written
  13.  * permission of Sam Leffler and Silicon Graphics.
  14.  * 
  15.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  16.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  17.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  18.  * 
  19.  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  20.  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  21.  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  22.  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  23.  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  24.  * OF THIS SOFTWARE.
  25.  */
  26.  
  27. #ifndef _COMPAT_
  28. #define    _COMPAT_
  29. /*
  30.  * This file contains a hodgepodge of definitions and
  31.  * declarations that are needed to provide compatibility
  32.  * between the native system and the base implementation
  33.  * that the library assumes.
  34.  *
  35.  * NB: This file is a mess.
  36.  */
  37.  
  38. /*
  39.  * Setup basic type definitions and function declaratations.
  40.  */
  41.  
  42. /*
  43.  * Simplify Acorn RISC OS identifier (to avoid confusion with Acorn RISC iX
  44.  * and with defunct Unix Risc OS)
  45.  * No need to specify __arm - hey, Acorn might port the OS, no problem here!
  46.  */
  47. #ifdef __acornriscos
  48. #undef __acornriscos
  49. #endif
  50. #if defined(__acorn) && defined(__riscos)
  51. #define __acornriscos
  52. #endif
  53.  
  54. #if defined(__MWERKS__) || defined(THINK_C)
  55. #include <unix.h>
  56. #include <math.h>
  57. #endif
  58.  
  59. #include <stdio.h>
  60.  
  61. #if defined(__PPCC__) || defined(__SC__) || defined(__MRC__)
  62. #include <types.h>
  63. #elif !defined(__MWERKS__) && !defined(THINK_C) && !defined(__acornriscos) && !defined(applec)
  64. #include <sys/types.h>
  65. #endif
  66.  
  67. #if defined(VMS)
  68. #include <file.h>
  69. #include <unixio.h>
  70. #elif !defined(__acornriscos)
  71. #include <fcntl.h>
  72. #endif
  73.  
  74. /*
  75.  * This maze of checks controls defines or not the
  76.  * target system has BSD-style typdedefs declared in
  77.  * an include file and/or whether or not to include
  78.  * <unistd.h> to get the SEEK_* definitions.  Some
  79.  * additional includes are also done to pull in the
  80.  * appropriate definitions we're looking for.
  81.  */
  82. #if defined(__MWERKS__) || defined(THINK_C) || defined(__PPCC__) || defined(__SC__) || defined(__MRC__)
  83. #include <stdlib.h>
  84. #define    BSDTYPES
  85. #define    HAVE_UNISTD_H    0
  86. #elif defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows)
  87. #define BSDTYPES
  88. #elif defined(__DJGPP__)
  89. #define BSDTYPES
  90. #elif defined(OS2_16) || defined(OS2_32)
  91. #define    BSDTYPES
  92. #elif defined(__acornriscos)
  93. #include <stdlib.h>
  94. #define    BSDTYPES
  95. #define    HAVE_UNISTD_H    0
  96. #elif defined(VMS)
  97. #define    HAVE_UNISTD_H    0
  98. #else
  99. #define    HAVE_UNISTD_H    1
  100. #endif
  101.  
  102. /*
  103.  * The library uses the ANSI C/POSIX SEEK_*
  104.  * definitions that should be defined in unistd.h
  105.  * (except on system where they are in stdio.h and
  106.  * there is no unistd.h).
  107.  */
  108. #if !defined(SEEK_SET) && HAVE_UNISTD_H
  109. #include <unistd.h>
  110. #endif
  111.  
  112. /*
  113.  * The library uses memset, memcpy, and memcmp.
  114.  * ANSI C and System V define these in string.h.
  115.  */
  116. #include <string.h>
  117.  
  118. /*
  119.  * The BSD typedefs are used throughout the library.
  120.  * If your system doesn't have them in <sys/types.h>,
  121.  * then define BSDTYPES in your Makefile.
  122.  */
  123. #if defined(BSDTYPES)
  124. typedef    unsigned char u_char;
  125. typedef    unsigned short u_short;
  126. typedef    unsigned int u_int;
  127. typedef    unsigned long u_long;
  128. #endif
  129.  
  130. /*
  131.  * dblparam_t is the type that a double precision
  132.  * floating point value will have on the parameter
  133.  * stack (when coerced by the compiler).
  134.  */
  135. /* Note: on MacPowerPC "extended" is undefined. So only use it for 68K-Macs */
  136. #if defined(__SC__) || defined(THINK_C)
  137. typedef extended dblparam_t;
  138. #else
  139. typedef double dblparam_t;
  140. #endif
  141.  
  142. /*
  143.  * If your compiler supports inline functions, then
  144.  * set INLINE appropriately to get the known hotspots
  145.  * in the library expanded inline.
  146.  */
  147. #if defined(__GNUC__)
  148. #if defined(__STRICT_ANSI__)
  149. #define    INLINE    __inline__
  150. #else
  151. #define    INLINE    inline
  152. #endif
  153. #else /* !__GNUC__ */
  154. #define    INLINE
  155. #endif
  156.  
  157. /*
  158.  * GLOBALDATA is a macro that is used to define global variables
  159.  * private to the library.  We use this indirection to hide
  160.  * brain-damage in VAXC (and GCC) under VAX/VMS.  In these
  161.  * environments the macro places the variable in a non-shareable
  162.  * program section, which ought to be done by default (sigh!)
  163.  *
  164.  * Apparently DEC are aware of the problem as this behaviour is the
  165.  * default under VMS on AXP.
  166.  *
  167.  * The GNU C variant is untested.
  168.  */
  169. #if defined(VAX) && defined(VMS)
  170. #if defined(VAXC)
  171. #define GLOBALDATA(TYPE,NAME)    extern noshare TYPE NAME
  172. #endif
  173. #if defined(__GNUC__)
  174. #define GLOBALDATA(TYPE,NAME)    extern TYPE NAME \
  175.     asm("_$$PsectAttributes_NOSHR$$" #NAME)
  176. #endif
  177. #else    /* !VAX/VMS */
  178. #define GLOBALDATA(TYPE,NAME)    extern TYPE NAME
  179. #endif
  180.  
  181. #if defined(__acornriscos)
  182. /*
  183.  * osfcn.h is part of C++Lib on Acorn C/C++, and as such can't be used
  184.  * on C alone. For that reason, the relevant functions are
  185.  * implemented in tif_acorn.c, and the elements from the header
  186.  * file are included here.
  187.  */
  188. #if defined(__cplusplus)
  189. #include <osfcn.h>
  190. #else
  191. #define    O_RDONLY    0
  192. #define    O_WRONLY    1
  193. #define    O_RDWR        2
  194. #define    O_APPEND    8
  195. #define    O_CREAT        0x200
  196. #define    O_TRUNC        0x400
  197. typedef long off_t;
  198. extern int open(const char *name, int flags, int mode);
  199. extern int close(int fd);
  200. extern int write(int fd, const char *buf, int nbytes);
  201. extern int read(int fd, char *buf, int nbytes);
  202. extern off_t lseek(int fd, off_t offset, int whence);
  203. extern int creat(const char *path, int mode);
  204. #endif /* __cplusplus */
  205. #endif /* __acornriscos */
  206.  
  207. /* Bit and byte order, the default is MSB to LSB */
  208. #ifdef VMS
  209. #undef HOST_FILLORDER
  210. #undef HOST_BIGENDIAN
  211. #define HOST_FILLORDER FILLORDER_LSB2MSB
  212. #define HOST_BIGENDIAN    0
  213. #endif
  214.  
  215.  
  216. #endif /* _COMPAT_ */
  217.