deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/***********************************************************
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncCopyright 1987, 1998 The Open Group
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncPermission to use, copy, modify, distribute, and sell this software and its
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncdocumentation for any purpose is hereby granted without fee, provided that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncthe above copyright notice appear in all copies and that both that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynccopyright notice and this permission notice appear in supporting
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncdocumentation.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncThe above copyright notice and this permission notice shall be included in
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncall copies or substantial portions of the Software.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncExcept as contained in this notice, the name of The Open Group shall not be
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncused in advertising or otherwise to promote the sale, use or other dealings
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncin this Software without prior written authorization from The Open Group.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync All Rights Reserved
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncPermission to use, copy, modify, and distribute this software and its
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncdocumentation for any purpose and without fee is hereby granted,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncprovided that the above copyright notice appear in all copies and that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncboth that copyright notice and this permission notice appear in
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncsupporting documentation, and that the name of Digital not be
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncused in advertising or publicity pertaining to distribution of the
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncsoftware without specific, written prior permission.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncSOFTWARE.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncCopyright 1992, 1993 Data General Corporation;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncCopyright 1992, 1993 OMRON Corporation
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncPermission to use, copy, modify, distribute, and sell this software and its
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncdocumentation for any purpose is hereby granted without fee, provided that the
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncabove copyright notice appear in all copies and that both that copyright
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncnotice and this permission notice appear in supporting documentation, and that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncneither the name OMRON or DATA GENERAL be used in advertising or publicity
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncpertaining to distribution of the software without specific, written prior
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncpermission of the party whose name is to be used. Neither OMRON or
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDATA GENERAL make any representation about the suitability of this software
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncfor any purpose. It is provided "as is" without express or implied warranty.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncOMRON AND DATA GENERAL EACH DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncIN NO EVENT SHALL OMRON OR DATA GENERAL BE LIABLE FOR ANY SPECIAL, INDIRECT
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncOF THIS SOFTWARE.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync******************************************************************/
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef MISC_H
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MISC_H 1
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * X internal definitions
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern unsigned long globalSerialNumber;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern unsigned long serverGeneration;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <X11/Xosdefs.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <X11/Xfuncproto.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <X11/Xmd.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <X11/X.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <X11/Xdefs.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <stddef.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef MAXSCREENS
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MAXSCREENS 16
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MAXCLIENTS 256
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MAXDITS 1
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MAXEXTENSIONS 128
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MAXFORMATS 8
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MAXVISUALS_PER_SCREEN 50
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef unsigned long PIXEL;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef unsigned long ATOM;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef TRUE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define TRUE 1
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FALSE 0
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef _XTYPEDEF_CALLBACKLISTPTR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _CallbackList *CallbackListPtr; /* also in dix.h */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define _XTYPEDEF_CALLBACKLISTPTR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _xReq *xReqPtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "os.h" /* for ALLOCATE_LOCAL and DEALLOCATE_LOCAL */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <X11/Xfuncs.h> /* for bcopy, bzero, and bcmp */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define NullBox ((BoxPtr)0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MILLI_PER_MIN (1000 * 60)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MILLI_PER_SECOND (1000)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /* this next is used with None and ParentRelative to tell
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PaintWin() what to use to paint the background. Also used
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync in the macro IS_VALID_PIXMAP */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define USE_BACKGROUND_PIXEL 3
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define USE_BORDER_PIXEL 3
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* byte swap a 32-bit literal */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define lswapl(x) ((((x) & 0xff) << 24) |\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (((x) & 0xff00) << 8) |\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (((x) & 0xff0000) >> 8) |\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (((x) >> 24) & 0xff))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* byte swap a short literal */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define lswaps(x) ((((x) & 0xff) << 8) | (((x) >> 8) & 0xff))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#undef min
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#undef max
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define min(a, b) (((a) < (b)) ? (a) : (b))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define max(a, b) (((a) > (b)) ? (a) : (b))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* abs() is a function, not a macro; include the file declaring
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * it in case we haven't done that yet.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <stdlib.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef Fabs
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define Fabs(a) ((a) > 0.0 ? (a) : -(a)) /* floating absolute value */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define sign(x) ((x) < 0 ? -1 : ((x) > 0 ? 1 : 0))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* this assumes b > 0 */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define modulus(a, b, d) if (((d) = (a) % (b)) < 0) (d) += (b)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * return the least significant bit in x which is set
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * This works on 1's complement and 2's complement machines.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * If you care about the extra instruction on 2's complement
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * machines, change to ((x) & (-(x)))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define lowbit(x) ((x) & (~(x) + 1))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* XXX Not for modules */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <limits.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#if !defined(MAXSHORT) || !defined(MINSHORT) || \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync !defined(MAXINT) || !defined(MININT)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Some implementations #define these through <math.h>, so preclude
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * #include'ing it later.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <math.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#undef MAXSHORT
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MAXSHORT SHRT_MAX
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#undef MINSHORT
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MINSHORT SHRT_MIN
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#undef MAXINT
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MAXINT INT_MAX
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#undef MININT
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MININT INT_MIN
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <assert.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <ctype.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <stdio.h> /* for fopen, etc... */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* some macros to help swap requests, replies, and events */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define LengthRestB(stuff) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((client->req_len << 2) - sizeof(*stuff))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define LengthRestS(stuff) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((client->req_len << 1) - (sizeof(*stuff) >> 1))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define LengthRestL(stuff) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (client->req_len - (sizeof(*stuff) >> 2))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SwapRestS(stuff) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SwapShorts((short *)(stuff + 1), LengthRestS(stuff))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SwapRestL(stuff) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SwapLongs((CARD32 *)(stuff + 1), LengthRestL(stuff))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* byte swap a 32-bit value */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define swapl(x, n) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync n = ((char *) (x))[0];\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((char *) (x))[0] = ((char *) (x))[3];\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((char *) (x))[3] = n;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync n = ((char *) (x))[1];\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((char *) (x))[1] = ((char *) (x))[2];\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((char *) (x))[2] = n; }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* byte swap a short */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define swaps(x, n) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync n = ((char *) (x))[0];\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((char *) (x))[0] = ((char *) (x))[1];\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((char *) (x))[1] = n; }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* copy 32-bit value from src to dst byteswapping on the way */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define cpswapl(src, dst) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((char *)&(dst))[0] = ((char *) &(src))[3];\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((char *)&(dst))[1] = ((char *) &(src))[2];\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((char *)&(dst))[2] = ((char *) &(src))[1];\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((char *)&(dst))[3] = ((char *) &(src))[0]; }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* copy short from src to dst byteswapping on the way */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define cpswaps(src, dst) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((char *) &(dst))[0] = ((char *) &(src))[1];\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((char *) &(dst))[1] = ((char *) &(src))[0]; }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void SwapLongs(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CARD32 *list,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned long count);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void SwapShorts(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync short *list,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned long count);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void MakePredeclaredAtoms(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int Ones(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned long /*mask*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _xPoint *DDXPointPtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _Box *BoxPtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _xEvent *xEventPtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _xRectangle *xRectanglePtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _GrabRec *GrabPtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* typedefs from other places - duplicated here to minimize the amount
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * of unnecessary junk that one would normally have to include to get
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * these symbols defined
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef _XTYPEDEF_CHARINFOPTR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _CharInfo *CharInfoPtr; /* also in fonts/include/font.h */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define _XTYPEDEF_CHARINFOPTR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif /* MISC_H */