4c221b0da1816acf2ca302b10092df059484468dvboxsync/***********************************************************
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncCopyright 1987, 1998 The Open Group
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncPermission to use, copy, modify, distribute, and sell this software and its
4c221b0da1816acf2ca302b10092df059484468dvboxsyncdocumentation for any purpose is hereby granted without fee, provided that
4c221b0da1816acf2ca302b10092df059484468dvboxsyncthe above copyright notice appear in all copies and that both that
4c221b0da1816acf2ca302b10092df059484468dvboxsynccopyright notice and this permission notice appear in supporting
4c221b0da1816acf2ca302b10092df059484468dvboxsyncdocumentation.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncThe above copyright notice and this permission notice shall be included in
4c221b0da1816acf2ca302b10092df059484468dvboxsyncall copies or substantial portions of the Software.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
4c221b0da1816acf2ca302b10092df059484468dvboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
4c221b0da1816acf2ca302b10092df059484468dvboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
4c221b0da1816acf2ca302b10092df059484468dvboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
4c221b0da1816acf2ca302b10092df059484468dvboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
4c221b0da1816acf2ca302b10092df059484468dvboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncExcept as contained in this notice, the name of The Open Group shall not be
4c221b0da1816acf2ca302b10092df059484468dvboxsyncused in advertising or otherwise to promote the sale, use or other dealings
4c221b0da1816acf2ca302b10092df059484468dvboxsyncin this Software without prior written authorization from The Open Group.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync All Rights Reserved
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncPermission to use, copy, modify, and distribute this software and its
4c221b0da1816acf2ca302b10092df059484468dvboxsyncdocumentation for any purpose and without fee is hereby granted,
4c221b0da1816acf2ca302b10092df059484468dvboxsyncprovided that the above copyright notice appear in all copies and that
4c221b0da1816acf2ca302b10092df059484468dvboxsyncboth that copyright notice and this permission notice appear in
4c221b0da1816acf2ca302b10092df059484468dvboxsyncsupporting documentation, and that the name of Digital not be
4c221b0da1816acf2ca302b10092df059484468dvboxsyncused in advertising or publicity pertaining to distribution of the
4c221b0da1816acf2ca302b10092df059484468dvboxsyncsoftware without specific, written prior permission.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
4c221b0da1816acf2ca302b10092df059484468dvboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
4c221b0da1816acf2ca302b10092df059484468dvboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
4c221b0da1816acf2ca302b10092df059484468dvboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
4c221b0da1816acf2ca302b10092df059484468dvboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
4c221b0da1816acf2ca302b10092df059484468dvboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
4c221b0da1816acf2ca302b10092df059484468dvboxsyncSOFTWARE.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncCopyright 1992, 1993 Data General Corporation;
4c221b0da1816acf2ca302b10092df059484468dvboxsyncCopyright 1992, 1993 OMRON Corporation
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncPermission to use, copy, modify, distribute, and sell this software and its
4c221b0da1816acf2ca302b10092df059484468dvboxsyncdocumentation for any purpose is hereby granted without fee, provided that the
4c221b0da1816acf2ca302b10092df059484468dvboxsyncabove copyright notice appear in all copies and that both that copyright
4c221b0da1816acf2ca302b10092df059484468dvboxsyncnotice and this permission notice appear in supporting documentation, and that
4c221b0da1816acf2ca302b10092df059484468dvboxsyncneither the name OMRON or DATA GENERAL be used in advertising or publicity
4c221b0da1816acf2ca302b10092df059484468dvboxsyncpertaining to distribution of the software without specific, written prior
4c221b0da1816acf2ca302b10092df059484468dvboxsyncpermission of the party whose name is to be used. Neither OMRON or
4c221b0da1816acf2ca302b10092df059484468dvboxsyncDATA GENERAL make any representation about the suitability of this software
4c221b0da1816acf2ca302b10092df059484468dvboxsyncfor any purpose. It is provided "as is" without express or implied warranty.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncOMRON AND DATA GENERAL EACH DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
4c221b0da1816acf2ca302b10092df059484468dvboxsyncSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
4c221b0da1816acf2ca302b10092df059484468dvboxsyncIN NO EVENT SHALL OMRON OR DATA GENERAL BE LIABLE FOR ANY SPECIAL, INDIRECT
4c221b0da1816acf2ca302b10092df059484468dvboxsyncOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
4c221b0da1816acf2ca302b10092df059484468dvboxsyncDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
4c221b0da1816acf2ca302b10092df059484468dvboxsyncTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
4c221b0da1816acf2ca302b10092df059484468dvboxsyncOF THIS SOFTWARE.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync******************************************************************/
4c221b0da1816acf2ca302b10092df059484468dvboxsync#ifndef MISC_H
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MISC_H 1
4c221b0da1816acf2ca302b10092df059484468dvboxsync/*
4c221b0da1816acf2ca302b10092df059484468dvboxsync * X internal definitions
4c221b0da1816acf2ca302b10092df059484468dvboxsync *
4c221b0da1816acf2ca302b10092df059484468dvboxsync */
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include <X11/Xosdefs.h>
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include <X11/Xfuncproto.h>
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include <X11/Xmd.h>
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include <X11/X.h>
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include <X11/Xdefs.h>
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include <stddef.h>
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#ifndef MAXSCREENS
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MAXSCREENS 16
4c221b0da1816acf2ca302b10092df059484468dvboxsync#endif
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MAXCLIENTS 256
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MAXEXTENSIONS 128
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MAXFORMATS 8
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MAXDEVICES 40 /* input devices */
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define EXTENSION_EVENT_BASE 64
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define EXTENSION_BASE 128
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef unsigned long PIXEL;
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef unsigned long ATOM;
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#ifndef TRUE
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define TRUE 1
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define FALSE 0
4c221b0da1816acf2ca302b10092df059484468dvboxsync#endif
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#ifndef _XTYPEDEF_CALLBACKLISTPTR
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct _CallbackList *CallbackListPtr; /* also in dix.h */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define _XTYPEDEF_CALLBACKLISTPTR
4c221b0da1816acf2ca302b10092df059484468dvboxsync#endif
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct _xReq *xReqPtr;
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include "os.h" /* for ALLOCATE_LOCAL and DEALLOCATE_LOCAL */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include <X11/Xfuncs.h> /* for bcopy, bzero, and bcmp */
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define NullBox ((BoxPtr)0)
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MILLI_PER_MIN (1000 * 60)
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MILLI_PER_SECOND (1000)
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync /* this next is used with None and ParentRelative to tell
4c221b0da1816acf2ca302b10092df059484468dvboxsync PaintWin() what to use to paint the background. Also used
4c221b0da1816acf2ca302b10092df059484468dvboxsync in the macro IS_VALID_PIXMAP */
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define USE_BACKGROUND_PIXEL 3
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define USE_BORDER_PIXEL 3
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* byte swap a 32-bit literal */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define lswapl(x) ((((x) & 0xff) << 24) |\
4c221b0da1816acf2ca302b10092df059484468dvboxsync (((x) & 0xff00) << 8) |\
4c221b0da1816acf2ca302b10092df059484468dvboxsync (((x) & 0xff0000) >> 8) |\
4c221b0da1816acf2ca302b10092df059484468dvboxsync (((x) >> 24) & 0xff))
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* byte swap a short literal */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define lswaps(x) ((((x) & 0xff) << 8) | (((x) >> 8) & 0xff))
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#undef min
4c221b0da1816acf2ca302b10092df059484468dvboxsync#undef max
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define min(a, b) (((a) < (b)) ? (a) : (b))
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define max(a, b) (((a) > (b)) ? (a) : (b))
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* abs() is a function, not a macro; include the file declaring
4c221b0da1816acf2ca302b10092df059484468dvboxsync * it in case we haven't done that yet.
4c221b0da1816acf2ca302b10092df059484468dvboxsync */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include <stdlib.h>
4c221b0da1816acf2ca302b10092df059484468dvboxsync#ifndef Fabs
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define Fabs(a) ((a) > 0.0 ? (a) : -(a)) /* floating absolute value */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#endif
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define sign(x) ((x) < 0 ? -1 : ((x) > 0 ? 1 : 0))
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* this assumes b > 0 */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define modulus(a, b, d) if (((d) = (a) % (b)) < 0) (d) += (b)
4c221b0da1816acf2ca302b10092df059484468dvboxsync/*
4c221b0da1816acf2ca302b10092df059484468dvboxsync * return the least significant bit in x which is set
4c221b0da1816acf2ca302b10092df059484468dvboxsync *
4c221b0da1816acf2ca302b10092df059484468dvboxsync * This works on 1's complement and 2's complement machines.
4c221b0da1816acf2ca302b10092df059484468dvboxsync * If you care about the extra instruction on 2's complement
4c221b0da1816acf2ca302b10092df059484468dvboxsync * machines, change to ((x) & (-(x)))
4c221b0da1816acf2ca302b10092df059484468dvboxsync */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define lowbit(x) ((x) & (~(x) + 1))
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* XXX Not for modules */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include <limits.h>
4c221b0da1816acf2ca302b10092df059484468dvboxsync#if !defined(MAXSHORT) || !defined(MINSHORT) || \
4c221b0da1816acf2ca302b10092df059484468dvboxsync !defined(MAXINT) || !defined(MININT)
4c221b0da1816acf2ca302b10092df059484468dvboxsync/*
4c221b0da1816acf2ca302b10092df059484468dvboxsync * Some implementations #define these through <math.h>, so preclude
4c221b0da1816acf2ca302b10092df059484468dvboxsync * #include'ing it later.
4c221b0da1816acf2ca302b10092df059484468dvboxsync */
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include <math.h>
4c221b0da1816acf2ca302b10092df059484468dvboxsync#undef MAXSHORT
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MAXSHORT SHRT_MAX
4c221b0da1816acf2ca302b10092df059484468dvboxsync#undef MINSHORT
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MINSHORT SHRT_MIN
4c221b0da1816acf2ca302b10092df059484468dvboxsync#undef MAXINT
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MAXINT INT_MAX
4c221b0da1816acf2ca302b10092df059484468dvboxsync#undef MININT
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MININT INT_MIN
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include <assert.h>
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include <ctype.h>
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include <stdio.h> /* for fopen, etc... */
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#endif
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/**
4c221b0da1816acf2ca302b10092df059484468dvboxsync * Calculate the number of bytes needed to hold bits.
4c221b0da1816acf2ca302b10092df059484468dvboxsync * @param bits The minimum number of bits needed.
4c221b0da1816acf2ca302b10092df059484468dvboxsync * @return The number of bytes needed to hold bits.
4c221b0da1816acf2ca302b10092df059484468dvboxsync */
4c221b0da1816acf2ca302b10092df059484468dvboxsyncstatic inline int
4c221b0da1816acf2ca302b10092df059484468dvboxsyncbits_to_bytes(const int bits) {
4c221b0da1816acf2ca302b10092df059484468dvboxsync return ((bits + 7) >> 3);
4c221b0da1816acf2ca302b10092df059484468dvboxsync}
4c221b0da1816acf2ca302b10092df059484468dvboxsync/**
4c221b0da1816acf2ca302b10092df059484468dvboxsync * Calculate the number of 4-byte units needed to hold the given number of
4c221b0da1816acf2ca302b10092df059484468dvboxsync * bytes.
4c221b0da1816acf2ca302b10092df059484468dvboxsync * @param bytes The minimum number of bytes needed.
4c221b0da1816acf2ca302b10092df059484468dvboxsync * @return The number of 4-byte units needed to hold bytes.
4c221b0da1816acf2ca302b10092df059484468dvboxsync */
4c221b0da1816acf2ca302b10092df059484468dvboxsyncstatic inline int
4c221b0da1816acf2ca302b10092df059484468dvboxsyncbytes_to_int32(const int bytes) {
4c221b0da1816acf2ca302b10092df059484468dvboxsync return (((bytes) + 3) >> 2);
4c221b0da1816acf2ca302b10092df059484468dvboxsync}
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/**
4c221b0da1816acf2ca302b10092df059484468dvboxsync * Calculate the number of bytes (in multiples of 4) needed to hold bytes.
4c221b0da1816acf2ca302b10092df059484468dvboxsync * @param bytes The minimum number of bytes needed.
4c221b0da1816acf2ca302b10092df059484468dvboxsync * @return The closest multiple of 4 that is equal or higher than bytes.
4c221b0da1816acf2ca302b10092df059484468dvboxsync */
4c221b0da1816acf2ca302b10092df059484468dvboxsyncstatic inline int
4c221b0da1816acf2ca302b10092df059484468dvboxsyncpad_to_int32(const int bytes) {
4c221b0da1816acf2ca302b10092df059484468dvboxsync return (((bytes) + 3) & ~3);
4c221b0da1816acf2ca302b10092df059484468dvboxsync}
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern char**
4c221b0da1816acf2ca302b10092df059484468dvboxsyncxstrtokenize(const char *str, const char* separators);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* some macros to help swap requests, replies, and events */
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define LengthRestB(stuff) \
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((client->req_len << 2) - sizeof(*stuff))
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define LengthRestS(stuff) \
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((client->req_len << 1) - (sizeof(*stuff) >> 1))
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define LengthRestL(stuff) \
4c221b0da1816acf2ca302b10092df059484468dvboxsync (client->req_len - (sizeof(*stuff) >> 2))
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define SwapRestS(stuff) \
4c221b0da1816acf2ca302b10092df059484468dvboxsync SwapShorts((short *)(stuff + 1), LengthRestS(stuff))
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define SwapRestL(stuff) \
4c221b0da1816acf2ca302b10092df059484468dvboxsync SwapLongs((CARD32 *)(stuff + 1), LengthRestL(stuff))
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* byte swap a 32-bit value */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define swapl(x, n) { \
4c221b0da1816acf2ca302b10092df059484468dvboxsync n = ((char *) (x))[0];\
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((char *) (x))[0] = ((char *) (x))[3];\
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((char *) (x))[3] = n;\
4c221b0da1816acf2ca302b10092df059484468dvboxsync n = ((char *) (x))[1];\
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((char *) (x))[1] = ((char *) (x))[2];\
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((char *) (x))[2] = n; }
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* byte swap a short */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define swaps(x, n) { \
4c221b0da1816acf2ca302b10092df059484468dvboxsync n = ((char *) (x))[0];\
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((char *) (x))[0] = ((char *) (x))[1];\
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((char *) (x))[1] = n; }
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* copy 32-bit value from src to dst byteswapping on the way */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define cpswapl(src, dst) { \
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((char *)&(dst))[0] = ((char *) &(src))[3];\
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((char *)&(dst))[1] = ((char *) &(src))[2];\
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((char *)&(dst))[2] = ((char *) &(src))[1];\
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((char *)&(dst))[3] = ((char *) &(src))[0]; }
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* copy short from src to dst byteswapping on the way */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define cpswaps(src, dst) { \
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((char *) &(dst))[0] = ((char *) &(src))[1];\
4c221b0da1816acf2ca302b10092df059484468dvboxsync ((char *) &(dst))[1] = ((char *) &(src))[0]; }
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void SwapLongs(
4c221b0da1816acf2ca302b10092df059484468dvboxsync CARD32 *list,
4c221b0da1816acf2ca302b10092df059484468dvboxsync unsigned long count);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void SwapShorts(
4c221b0da1816acf2ca302b10092df059484468dvboxsync short *list,
4c221b0da1816acf2ca302b10092df059484468dvboxsync unsigned long count);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void MakePredeclaredAtoms(void);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT int Ones(
4c221b0da1816acf2ca302b10092df059484468dvboxsync unsigned long /*mask*/);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct _xPoint *DDXPointPtr;
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct pixman_box16 *BoxPtr;
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct _xEvent *xEventPtr;
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct _xRectangle *xRectanglePtr;
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct _GrabRec *GrabPtr;
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* typedefs from other places - duplicated here to minimize the amount
4c221b0da1816acf2ca302b10092df059484468dvboxsync * of unnecessary junk that one would normally have to include to get
4c221b0da1816acf2ca302b10092df059484468dvboxsync * these symbols defined
4c221b0da1816acf2ca302b10092df059484468dvboxsync */
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#ifndef _XTYPEDEF_CHARINFOPTR
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct _CharInfo *CharInfoPtr; /* also in fonts/include/font.h */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define _XTYPEDEF_CHARINFOPTR
4c221b0da1816acf2ca302b10092df059484468dvboxsync#endif
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT unsigned long globalSerialNumber;
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT unsigned long serverGeneration;
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#endif /* MISC_H */