source: trunk/third/tiff/libtiff/tiffcomp.h @ 18174

Revision 18174, 6.2 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18173, which included commits to RCS files with non-trunk default branches.
Line 
1/* $Header: /afs/dev.mit.edu/source/repository/third/tiff/libtiff/tiffcomp.h,v 1.1.1.1 2002-12-26 02:38:47 ghudson 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) || defined(_WIN32)) && !defined(unix)
87#define BSDTYPES
88#elif defined(OS2_16) || defined(OS2_32)
89#define BSDTYPES
90#elif defined(__acornriscos)
91#include <stdlib.h>
92#define BSDTYPES
93#define HAVE_UNISTD_H   0
94#elif defined(VMS)
95#define HAVE_UNISTD_H   0
96#else
97#define HAVE_UNISTD_H   1
98#endif
99
100/*
101 * The library uses the ANSI C/POSIX SEEK_*
102 * definitions that should be defined in unistd.h
103 * (except on system where they are in stdio.h and
104 * there is no unistd.h).
105 */
106#if !defined(SEEK_SET) && HAVE_UNISTD_H
107#include <unistd.h>
108#endif
109
110/*
111 * The library uses memset, memcpy, and memcmp.
112 * ANSI C and System V define these in string.h.
113 */
114#include <string.h>
115
116/*
117 * The BSD typedefs are used throughout the library.
118 * If your system doesn't have them in <sys/types.h>,
119 * then define BSDTYPES in your Makefile.
120 */
121#if defined(BSDTYPES)
122typedef unsigned char u_char;
123typedef unsigned short u_short;
124typedef unsigned int u_int;
125typedef unsigned long u_long;
126#endif
127
128/*
129 * dblparam_t is the type that a double precision
130 * floating point value will have on the parameter
131 * stack (when coerced by the compiler).
132 */
133/* Note: on MacPowerPC "extended" is undefined. So only use it for 68K-Macs */
134#if defined(__SC__) || defined(THINK_C)
135typedef extended dblparam_t;
136#else
137typedef double dblparam_t;
138#endif
139
140/*
141 * If your compiler supports inline functions, then
142 * set INLINE appropriately to get the known hotspots
143 * in the library expanded inline.
144 */
145#if defined(__GNUC__)
146#if defined(__STRICT_ANSI__)
147#define INLINE  __inline__
148#else
149#define INLINE  inline
150#endif
151#else /* !__GNUC__ */
152#define INLINE
153#endif
154
155/*
156 * GLOBALDATA is a macro that is used to define global variables
157 * private to the library.  We use this indirection to hide
158 * brain-damage in VAXC (and GCC) under VAX/VMS.  In these
159 * environments the macro places the variable in a non-shareable
160 * program section, which ought to be done by default (sigh!)
161 *
162 * Apparently DEC are aware of the problem as this behaviour is the
163 * default under VMS on AXP.
164 *
165 * The GNU C variant is untested.
166 */
167#if defined(VAX) && defined(VMS)
168#if defined(VAXC)
169#define GLOBALDATA(TYPE,NAME)   extern noshare TYPE NAME
170#endif
171#if defined(__GNUC__)
172#define GLOBALDATA(TYPE,NAME)   extern TYPE NAME \
173        asm("_$$PsectAttributes_NOSHR$$" #NAME)
174#endif
175#else   /* !VAX/VMS */
176#define GLOBALDATA(TYPE,NAME)   extern TYPE NAME
177#endif
178
179#if defined(__acornriscos)
180/*
181 * osfcn.h is part of C++Lib on Acorn C/C++, and as such can't be used
182 * on C alone. For that reason, the relevant functions are
183 * implemented in tif_acorn.c, and the elements from the header
184 * file are included here.
185 */
186#if defined(__cplusplus)
187#include <osfcn.h>
188#else
189#define O_RDONLY        0
190#define O_WRONLY        1
191#define O_RDWR          2
192#define O_APPEND        8
193#define O_CREAT         0x200
194#define O_TRUNC         0x400
195typedef long off_t;
196extern int open(const char *name, int flags, int mode);
197extern int close(int fd);
198extern int write(int fd, const char *buf, int nbytes);
199extern int read(int fd, char *buf, int nbytes);
200extern off_t lseek(int fd, off_t offset, int whence);
201extern int creat(const char *path, int mode);
202#endif /* __cplusplus */
203#endif /* __acornriscos */
204
205/* Bit and byte order, the default is MSB to LSB */
206#ifdef VMS
207#undef HOST_FILLORDER
208#undef HOST_BIGENDIAN
209#define HOST_FILLORDER FILLORDER_LSB2MSB
210#define HOST_BIGENDIAN  0
211#endif
212
213
214#endif /* _COMPAT_ */
Note: See TracBrowser for help on using the repository browser.