Create Xref-Html Frames Remove All Frames
file:c:/local/Cygwin/usr/X11R6/include/X11/Xmd.h (Sat Apr 10 16:24:37 2004
)
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(sgi) && (_MIPS_SZLONG == 64))
69: #define LONG64 /* 32/64-bit architecture */
70: #endif
71:
72: /*
73: * Stuff to handle large architecture machines; the constants were generated
74: * on a 32-bit machine and must coorespond to the protocol.
75: */
76: #ifdef WORD64
77: #define MUSTCOPY
78: #endif /* WORD64 */
79:
80:
81: /*
82: * Definition of macro used to set constants for size of network structures;
83: * machines with preprocessors that can't handle all of the sz_ symbols
84: * can define this macro to be sizeof(x) if and only if their compiler doesn't
85: * pad out structures (esp. the xTextElt structure which contains only two
86: * one-byte fields). Network structures should always define sz_symbols.
87: *
88: * The sz_ prefix is used instead of something more descriptive so that the
89: * symbols are no more than 32 characters long (which causes problems for some
90: * compilers and preprocessors).
91: *
92: * The extra indirection in the __STDC__ case is to get macro arguments to
93: * expand correctly before the concatenation, rather than afterward.
94: */
95: #if ((defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)) && !defined(UNIXCPP)) || defined(ANSICPP)
96: #define _SIZEOF(x) sz_##x
97: #define SIZEOF(x) _SIZEOF(x)
98: #else
99: #define SIZEOF(x) sz_/**/x
100: #endif /* if ANSI C compiler else not */
101:
102: /*
103: * Bitfield suffixes for the protocol structure elements, if you
104: * need them. Note that bitfields are not guarranteed to be signed
105: * (or even unsigned) according to ANSI C.
106: */
107: #ifdef WORD64
108: typedef long INT64;
109: typedef unsigned long CARD64;
110: #define B32 :32
111: #define B16 :16
112: #ifdef UNSIGNEDBITFIELDS
113: typedef unsigned int INT32;
114: typedef unsigned int INT16;
115: #else
116: #ifdef __STDC__
117: typedef signed int INT32;
118: typedef signed int INT16;
119: #else
120: typedef int INT32;
121: typedef int INT16;
122: #endif
123: #endif
124: #else
125: #define B32
126: #define B16
127: #ifdef LONG64
128: typedef long INT64;
129: typedef int INT32;
130: #else
131: typedef long INT32;
132: #endif
133: typedef short INT16;
134: #endif
135:
136: #if defined(__STDC__) || defined(sgi) || defined(AIXV3)
137: typedef signed char INT8;
138: #else
139: typedef char INT8;
140: #endif
141:
142: #ifdef LONG64
143: typedef unsigned long CARD64;
144: typedef unsigned int CARD32;
145: #else
146: typedef unsigned long CARD32;
147: #endif
148: typedef unsigned short CARD16;
149: typedef unsigned char CARD8;
150:
151: typedef CARD32 BITS32;
152: typedef CARD16 BITS16;
153:
154: #ifndef I_NEED_OS2_H
155: typedef CARD8 BYTE;
156: typedef CARD8 BOOL;
157: #else
158: #define BYTE CARD8
159: #define BOOL CARD8
160: #endif
161:
162: /*
163: * definitions for sign-extending bitfields on 64-bit architectures
164: */
165: #if defined(WORD64) && defined(UNSIGNEDBITFIELDS)
166: #define cvtINT8toInt(val) (((val) & 0x00000080) ? ((val) | 0xffffffffffffff00) : (val))
167: #define cvtINT16toInt(val) (((val) & 0x00008000) ? ((val) | 0xffffffffffff0000) : (val))
168: #define cvtINT32toInt(val) (((val) & 0x80000000) ? ((val) | 0xffffffff00000000) : (val))
169: #define cvtINT8toShort(val) cvtINT8toInt(val)
170: #define cvtINT16toShort(val) cvtINT16toInt(val)
171: #define cvtINT32toShort(val) cvtINT32toInt(val)
172: #define cvtINT8toLong(val) cvtINT8toInt(val)
173: #define cvtINT16toLong(val) cvtINT16toInt(val)
174: #define cvtINT32toLong(val) cvtINT32toInt(val)
175: #else
176: #define cvtINT8toInt(val) (val)
177: #define cvtINT16toInt(val) (val)
178: #define cvtINT32toInt(val) (val)
179: #define cvtINT8toShort(val) (val)
180: #define cvtINT16toShort(val) (val)
181: #define cvtINT32toShort(val) (val)
182: #define cvtINT8toLong(val) (val)
183: #define cvtINT16toLong(val) (val)
184: #define cvtINT32toLong(val) (val)
185: #endif /* WORD64 and UNSIGNEDBITFIELDS */
186:
187:
188:
189: #ifdef MUSTCOPY
190: /*
191: * This macro must not cast or else pointers will get aligned and be wrong
192: */
193: #define NEXTPTR(p,t) (((char *) p) + SIZEOF(t))
194: #else /* else not MUSTCOPY, this is used for 32-bit machines */
195: /*
196: * this version should leave result of type (t *), but that should only be
197: * used when not in MUSTCOPY
198: */
199: #define NEXTPTR(p,t) (((t *)(p)) + 1)
200: #endif /* MUSTCOPY - used machines whose C structs don't line up with proto */
201:
202: #endif /* XMD_H */
203:
Html form generated by Xrefactory version 1.6.7 on Fri Sep 03 17:18:59 2004