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