Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
808 | serge | 1 | /* $XFree86: xc/include/Xmd.h,v 3.18tsi Exp $ */ |
2 | /*********************************************************** |
||
3 | |||
4 | Copyright 1987, 1998 The Open Group |
||
5 | |||
6 | Permission to use, copy, modify, distribute, and sell this software and its |
||
7 | documentation for any purpose is hereby granted without fee, provided that |
||
8 | the above copyright notice appear in all copies and that both that |
||
9 | copyright notice and this permission notice appear in supporting |
||
10 | documentation. |
||
11 | |||
12 | The above copyright notice and this permission notice shall be included in |
||
13 | all copies or substantial portions of the Software. |
||
14 | |||
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||
18 | OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN |
||
19 | AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
||
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||
21 | |||
22 | Except as contained in this notice, the name of The Open Group shall not be |
||
23 | used in advertising or otherwise to promote the sale, use or other dealings |
||
24 | in this Software without prior written authorization from The Open Group. |
||
25 | |||
26 | |||
27 | Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. |
||
28 | |||
29 | All Rights Reserved |
||
30 | |||
31 | Permission to use, copy, modify, and distribute this software and its |
||
32 | documentation for any purpose and without fee is hereby granted, |
||
33 | provided that the above copyright notice appear in all copies and that |
||
34 | both that copyright notice and this permission notice appear in |
||
35 | supporting documentation, and that the name of Digital not be |
||
36 | used in advertising or publicity pertaining to distribution of the |
||
37 | software without specific, written prior permission. |
||
38 | |||
39 | DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING |
||
40 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL |
||
41 | DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR |
||
42 | ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, |
||
43 | WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, |
||
44 | ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS |
||
45 | SOFTWARE. |
||
46 | |||
47 | ******************************************************************/ |
||
48 | #ifndef XMD_H |
||
49 | #define XMD_H 1 |
||
50 | /* $Xorg: Xmd.h,v 1.4 2001/02/09 02:03:22 xorgcvs Exp $ */ |
||
51 | /* |
||
52 | * Xmd.h: MACHINE DEPENDENT DECLARATIONS. |
||
53 | */ |
||
54 | |||
55 | /* |
||
56 | * Special per-machine configuration flags. |
||
57 | */ |
||
58 | #ifdef CRAY |
||
59 | #define WORD64 /* 64-bit architecture */ |
||
60 | #endif |
||
61 | #if defined (_LP64) || \ |
||
62 | defined(__alpha) || defined(__alpha__) || \ |
||
63 | defined(__ia64__) || defined(ia64) || \ |
||
64 | defined(__sparc64__) || \ |
||
65 | defined(__s390x__) || \ |
||
66 | (defined(__hppa__) && defined(__LP64__)) || \ |
||
67 | defined(__amd64__) || defined(amd64) || \ |
||
68 | defined(__powerpc64__) || \ |
||
69 | (defined(sgi) && (_MIPS_SZLONG == 64)) |
||
70 | #define LONG64 /* 32/64-bit architecture */ |
||
71 | #endif |
||
72 | |||
73 | /* |
||
74 | * Stuff to handle large architecture machines; the constants were generated |
||
75 | * on a 32-bit machine and must coorespond to the protocol. |
||
76 | */ |
||
77 | #ifdef WORD64 |
||
78 | #define MUSTCOPY |
||
79 | #endif /* WORD64 */ |
||
80 | |||
81 | |||
82 | /* |
||
83 | * Definition of macro used to set constants for size of network structures; |
||
84 | * machines with preprocessors that can't handle all of the sz_ symbols |
||
85 | * can define this macro to be sizeof(x) if and only if their compiler doesn't |
||
86 | * pad out structures (esp. the xTextElt structure which contains only two |
||
87 | * one-byte fields). Network structures should always define sz_symbols. |
||
88 | * |
||
89 | * The sz_ prefix is used instead of something more descriptive so that the |
||
90 | * symbols are no more than 32 characters long (which causes problems for some |
||
91 | * compilers and preprocessors). |
||
92 | * |
||
93 | * The extra indirection in the __STDC__ case is to get macro arguments to |
||
94 | * expand correctly before the concatenation, rather than afterward. |
||
95 | */ |
||
96 | #if ((defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)) && !defined(UNIXCPP)) || defined(ANSICPP) |
||
97 | #define _SIZEOF(x) sz_##x |
||
98 | #define SIZEOF(x) _SIZEOF(x) |
||
99 | #else |
||
100 | #define SIZEOF(x) sz_/**/x |
||
101 | #endif /* if ANSI C compiler else not */ |
||
102 | |||
103 | /* |
||
104 | * Bitfield suffixes for the protocol structure elements, if you |
||
105 | * need them. Note that bitfields are not guarranteed to be signed |
||
106 | * (or even unsigned) according to ANSI C. |
||
107 | */ |
||
108 | #ifdef WORD64 |
||
109 | typedef long INT64; |
||
110 | typedef unsigned long CARD64; |
||
111 | #define B32 :32 |
||
112 | #define B16 :16 |
||
113 | #ifdef UNSIGNEDBITFIELDS |
||
114 | typedef unsigned int INT32; |
||
115 | typedef unsigned int INT16; |
||
116 | #else |
||
117 | #ifdef __STDC__ |
||
118 | typedef signed int INT32; |
||
119 | typedef signed int INT16; |
||
120 | #else |
||
121 | typedef int INT32; |
||
122 | typedef int INT16; |
||
123 | #endif |
||
124 | #endif |
||
125 | #else |
||
126 | #define B32 |
||
127 | #define B16 |
||
128 | #ifdef LONG64 |
||
129 | typedef long INT64; |
||
130 | typedef int INT32; |
||
131 | #else |
||
132 | typedef long INT32; |
||
133 | #endif |
||
134 | typedef short INT16; |
||
135 | #endif |
||
136 | |||
137 | #if defined(__STDC__) || defined(sgi) || defined(AIXV3) |
||
138 | typedef signed char INT8; |
||
139 | #else |
||
140 | typedef char INT8; |
||
141 | #endif |
||
142 | |||
143 | #ifdef LONG64 |
||
144 | typedef unsigned long CARD64; |
||
145 | typedef unsigned int CARD32; |
||
146 | #else |
||
147 | typedef unsigned long CARD32; |
||
148 | #endif |
||
149 | typedef unsigned short CARD16; |
||
150 | typedef unsigned char CARD8; |
||
151 | |||
152 | typedef CARD32 BITS32; |
||
153 | typedef CARD16 BITS16; |
||
154 | |||
155 | #ifndef I_NEED_OS2_H |
||
156 | typedef CARD8 BYTE; |
||
157 | typedef CARD8 BOOL; |
||
158 | #else |
||
159 | #define BYTE CARD8 |
||
160 | #define BOOL CARD8 |
||
161 | #endif |
||
162 | |||
163 | /* |
||
164 | * definitions for sign-extending bitfields on 64-bit architectures |
||
165 | */ |
||
166 | #if defined(WORD64) && defined(UNSIGNEDBITFIELDS) |
||
167 | #define cvtINT8toInt(val) (((val) & 0x00000080) ? ((val) | 0xffffffffffffff00) : (val)) |
||
168 | #define cvtINT16toInt(val) (((val) & 0x00008000) ? ((val) | 0xffffffffffff0000) : (val)) |
||
169 | #define cvtINT32toInt(val) (((val) & 0x80000000) ? ((val) | 0xffffffff00000000) : (val)) |
||
170 | #define cvtINT8toShort(val) cvtINT8toInt(val) |
||
171 | #define cvtINT16toShort(val) cvtINT16toInt(val) |
||
172 | #define cvtINT32toShort(val) cvtINT32toInt(val) |
||
173 | #define cvtINT8toLong(val) cvtINT8toInt(val) |
||
174 | #define cvtINT16toLong(val) cvtINT16toInt(val) |
||
175 | #define cvtINT32toLong(val) cvtINT32toInt(val) |
||
176 | #else |
||
177 | #define cvtINT8toInt(val) (val) |
||
178 | #define cvtINT16toInt(val) (val) |
||
179 | #define cvtINT32toInt(val) (val) |
||
180 | #define cvtINT8toShort(val) (val) |
||
181 | #define cvtINT16toShort(val) (val) |
||
182 | #define cvtINT32toShort(val) (val) |
||
183 | #define cvtINT8toLong(val) (val) |
||
184 | #define cvtINT16toLong(val) (val) |
||
185 | #define cvtINT32toLong(val) (val) |
||
186 | #endif /* WORD64 and UNSIGNEDBITFIELDS */ |
||
187 | |||
188 | |||
189 | |||
190 | #ifdef MUSTCOPY |
||
191 | /* |
||
192 | * This macro must not cast or else pointers will get aligned and be wrong |
||
193 | */ |
||
194 | #define NEXTPTR(p,t) (((char *) p) + SIZEOF(t)) |
||
195 | #else /* else not MUSTCOPY, this is used for 32-bit machines */ |
||
196 | /* |
||
197 | * this version should leave result of type (t *), but that should only be |
||
198 | * used when not in MUSTCOPY |
||
199 | */ |
||
200 | #define NEXTPTR(p,t) (((t *)(p)) + 1) |
||
201 | #endif /* MUSTCOPY - used machines whose C structs don't line up with proto */ |
||
202 | |||
203 | #endif /* XMD_H */ |