1
/* $Header: /pack/cvsroots/wxwindows/wxWindows/src/tiff/tiffcomp.h,v 1.15 2005/07/21 17:30:41 ABX Exp $ */
4
* Copyright (c) 1990-1997 Sam Leffler
5
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
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.
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.
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
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.
35
* NB: This file is a mess.
39
* Setup basic type definitions and function declaratations.
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!
50
#if defined(__acorn) && defined(__riscos)
54
#if (defined(__MWERKS__) && !defined(__MACH__)) || defined(THINK_C)
61
#if defined(__PPCC__) || ( defined(__SC__) && !defined(__DMC__) ) || defined(__MRC__)
63
#elif !defined(__MWERKS__) && !defined(THINK_C) && !defined(__acornriscos) && !defined(applec)
64
#include <sys/types.h>
70
#elif !defined(__acornriscos)
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.
82
#if defined(__MWERKS__) || defined(THINK_C) || defined(__PPCC__) || ( defined(__SC__) && !defined(__DMC__) ) || defined(__MRC__)
85
#define HAVE_UNISTD_H 0
86
#elif (defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows) || defined(_WIN32)) && !defined(unix)
88
#elif defined(OS2_16) || defined(OS2_32)
90
#elif defined(__MSDOS__)
92
#elif defined(__acornriscos)
95
#define HAVE_UNISTD_H 0
97
#define HAVE_UNISTD_H 0
99
#define HAVE_UNISTD_H 1
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).
108
#if !defined(SEEK_SET) && HAVE_UNISTD_H
113
* The library uses memset, memcpy, and memcmp.
114
* ANSI C and System V define these in string.h.
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.
123
#if defined(BSDTYPES)
124
# ifndef _BSDTYPES_DEFINED
125
# ifndef __u_char_defined
126
typedef unsigned char u_char;
127
typedef unsigned short u_short;
128
typedef unsigned int u_int;
129
typedef unsigned long u_long;
130
# define __u_char_defined
131
# endif /* __u_char_defined */
132
# define _BSDTYPES_DEFINED
133
# endif /* _BSDTYPES_DEFINED */
134
#endif /* BSDTYPES */
137
* dblparam_t is the type that a double precision
138
* floating point value will have on the parameter
139
* stack (when coerced by the compiler).
141
/* Note: on MacPowerPC "extended" is undefined. So only use it for 68K-Macs */
142
#if ( defined(__SC__) && !defined(__DMC__) ) || defined(THINK_C)
143
typedef extended dblparam_t;
145
typedef double dblparam_t;
149
* If your compiler supports inline functions, then
150
* set INLINE appropriately to get the known hotspots
151
* in the library expanded inline.
153
#if defined(__GNUC__)
154
#if defined(__STRICT_ANSI__)
155
#define INLINE __inline__
157
#define INLINE inline
159
#else /* !__GNUC__ */
164
* GLOBALDATA is a macro that is used to define global variables
165
* private to the library. We use this indirection to hide
166
* brain-damage in VAXC (and GCC) under VAX/VMS. In these
167
* environments the macro places the variable in a non-shareable
168
* program section, which ought to be done by default (sigh!)
170
* Apparently DEC are aware of the problem as this behaviour is the
171
* default under VMS on AXP.
173
* The GNU C variant is untested.
175
#if defined(VAX) && defined(VMS)
177
#define GLOBALDATA(TYPE,NAME) extern noshare TYPE NAME
179
#if defined(__GNUC__)
180
#define GLOBALDATA(TYPE,NAME) extern TYPE NAME \
181
asm("_$$PsectAttributes_NOSHR$$" #NAME)
184
#define GLOBALDATA(TYPE,NAME) extern TYPE NAME
187
#if defined(__acornriscos)
189
* osfcn.h is part of C++Lib on Acorn C/C++, and as such can't be used
190
* on C alone. For that reason, the relevant functions are
191
* implemented in tif_acorn.c, and the elements from the header
192
* file are included here.
194
#if defined(__cplusplus)
201
#define O_CREAT 0x200
202
#define O_TRUNC 0x400
204
extern int open(const char *name, int flags, int mode);
205
extern int close(int fd);
206
extern int write(int fd, const char *buf, int nbytes);
207
extern int read(int fd, char *buf, int nbytes);
208
extern off_t lseek(int fd, off_t offset, int whence);
209
extern int creat(const char *path, int mode);
210
#endif /* __cplusplus */
211
#endif /* __acornriscos */
213
/* Bit and byte order, the default is MSB to LSB */
215
#undef HOST_FILLORDER
216
#undef HOST_BIGENDIAN
217
#define HOST_FILLORDER FILLORDER_LSB2MSB
218
#define HOST_BIGENDIAN 0
225
#endif /* _COMPAT_ */