[comp.sources.x] v02i022: monitor X11 Server/Client communications, Part01/04

mikew@wyse.wyse.com (Mike Wexler) (11/29/88)

Submitted-by: peterson@sw.mcc.com (James Peterson)
Posting-number: Volume 2, Issue 22
Archive-name: xmonitor/part01

[I had to compress and uuencode print11.c, to recover it uudecode 
print11.c.Z.uue, this creates print11.c.Z, uncompress this and you
will have print11.c.]

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 4)."
# Contents:  README AUTHOR Makefile scope.h table11.c
# Wrapped by mikew@wyse on Mon Nov 28 10:13:36 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README'\"
else
echo shar: Extracting \"'README'\" \(4117 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
X
X	XSCOPE -- a program to monitor X11/Client conversations
X
XXSCOPE is a program to monitor the connections between the X11 window
Xserver and a client program.  xscope runs as a separate process.  By
Xadjusting the host and/or display number that a X11 client attaches
Xto, the client is attached to xscope instead of X11.  xscope attaches
Xto X11 as if it were the client.  All bytes from the client are sent
Xto xscope which passes them on to X11; All bytes from X11 are sent to
Xxscope which sends them on to the client.  xscope is transparent to
Xthe client and X11.
X
XIn addition to passing characters back and forth, xscope will print
Xinformation about this traffic on stdout, giving performance and
Xdebugging information for an X11 client and server.
X
X
X  --------------               --------------             --------------
X  |            |               |            |             |            |
X  |            | ------------> |            | ----------> |            |
X  |   client   |               |  xscope    |             |   server   |
X  |            |               |            |             |            |
X  |            | <-----------  |            | <---------- |            |
X  |            |               |            |             |            |
X  --------------               --------------             --------------
X                                     |
X				     |
X				     v
X			    trace output to stdout
X
X
XWhen running with xscope, three processes are involved, potentially all
Xon different machines:
X
XX11 -- the X11 window server will be running on machine "A" for Display "B".
X	("A" is a machine name; "B" is a display number).
X
Xxscope -- xscope must be told where the X11 window server is 
X	(what machine and what display).  The options for xscope are 
X	-h<X11-host> and -d<display-number>.  In our example, -hA and -dB. 
X	Typically the display-number is not given. xscope will not try to 
X	connect to X11 until the client connects to xscope.
X
Xclient -- the client should connect to xscope rather than X11.  To avoid 
X	changing the code for the client, xscope listens on the same port 
X	as X11. If X11 and xscope are on different machines, this works 
X	well.  However, if X11 and xscope are on the same machine, this 
X	creates a port conflict.  To resolve this conflict, xscope can 
X	be given a different input or output port number, as necessary 
X	to avoid the port that X11 is listening to.  The client must connect 
X	to this offset port number.  The input port for xscope is set by 
X	-i<port-number>; the output port is set by -o<port-number>. The 
X	default input port is 1; the default output port is 0. These ports
X	are offset by the X11 base (6000) and the display number. The client 
X	attaches to xscope by changing its display number by the port offset.
X
XFor example, with X11 running on "bagel", display 0 (the default), and
Xxscope and the client running on "cleo", we would start xscope as
X"xscope -hbagel -i0".  The client program could then connect to "X11" on
X"cleo:0", and would be attached to xscope, which would then attach to
XX11 on "bagel:0".
X
XIf, however, all three processes were running on "cleo", we would
Xstart xscope by "xscope -i1".  This would cause it to listen on
Xport 6001 (which is display 1 for X11).  The client would attach to
XX11 on "cleo:1", and xscope would connect through to X11 on "cleo:0".
X
X
XLIMITATIONS:
X
Xxscope has been written and used on a Sun3. Additional code may be needed
Xfor byteswapping on different architectures.
X
XThe command line arguments for specifying the real X server should probably
X	be changed to be more consistent with X11R3 applications.
X
XThe Imakefile may be incorrect.
X
XThe builtin atoms have been wired in directly; they should probably be
Xpicked up from a header file.
X
XNo provision is included for extensions to the base protocol.
X
XThere is no code yet to interpret typed commands from the keyboard.
X   It would be possible for a command language at the keyboard to create
X   artificial characters to be sent to X11 or the client as if they were 
X   generated  by the other, or to dynamically alter requests or replies.
X
X
X
X
END_OF_FILE
if test 4117 -ne `wc -c <'README'`; then
    echo shar: \"'README'\" unpacked with wrong size!
fi
# end of 'README'
fi
if test -f 'AUTHOR' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'AUTHOR'\"
else
echo shar: Extracting \"'AUTHOR'\" \(1024 characters\)
sed "s/^X//" >'AUTHOR' <<'END_OF_FILE'
X(Message inbox:272)
XReturn-Path: peterson%sw.MCC.COM@MCC.COM
XReceived: from wyse  by tarfoo.wyse.com (5.58/Wyse client/5-13-88)
X	id AA04689; Mon, 28 Nov 88 00:57:42 PST
XReceived:  by wyse.wyse.com (5.58/Wyse master/5-13-88)
X	id AA04279; Mon, 28 Nov 88 00:56:59 PST
XReceived: from MCC.COM by uunet.UU.NET (5.59/1.14) 
X	id AA07976; Sun, 27 Nov 88 20:52:46 EST
XReceived: from milano.sw.mcc.com by MCC.COM with TCP/SMTP; Sun 27 Nov 88 19:51:10-CST
XReceived: from cleo.sw.mcc.com by milano.sw.mcc.com (5.51/STP1.56) 
X	id AA08018; Sun, 27 Nov 88 19:50:49 CST
XDate: Sun, 27 Nov 88 19:50:44 CST
XFrom: James Peterson <peterson%sw.MCC.COM@MCC.COM>
XMessage-Id: <8811280150.AA14103@cleo.sw.mcc.com>
XReceived: by cleo.sw.mcc.com (3.2/STP1.14) 
X	id AA14103; Sun, 27 Nov 88 19:50:44 CST
XTo: mikew@wyse.wyse.com
XSubject: Xscope (1 of 1)
X
XFollowing is a shar file of a program called xscope.  The README
Xdescribes is function and usage.
X
Xjim
X# This is a shar archive.
X# Remove everything above this line.
X# Run the file through sh, not csh.
END_OF_FILE
if test 1024 -ne `wc -c <'AUTHOR'`; then
    echo shar: \"'AUTHOR'\" unpacked with wrong size!
fi
# end of 'AUTHOR'
fi
if test -f 'Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Makefile'\"
else
echo shar: Extracting \"'Makefile'\" \(6521 characters\)
sed "s/^X//" >'Makefile' <<'END_OF_FILE'
X# Makefile generated by imake - do not edit!
X# $XConsortium: imake.c,v 1.37 88/10/08 20:08:30 jim Exp $
X#
X# The cpp used on this machine replaces all newlines and multiple tabs and
X# spaces in a macro expansion with a single space.  Imake tries to compensate
X# for this, but is not always successful.
X#
X
X###########################################################################
X# X Window System Makefile generated from template file Imake.tmpl
X# $XConsortium: Imake.tmpl,v 1.91 88/10/23 22:37:10 jim Exp $
X#
X# Do not change the body of the imake template file.  Server-specific
X# parameters may be set in the appropriate .macros file; site-specific
X# parameters (but shared by all servers) may be set in site.def.  If you
X# make any changes, you'll need to rebuild the makefiles using
X# "make World" (at best) or "make Makefile; make Makefiles" (at least) in
X# the top level directory.
X#
X# If your C preprocessor doesn't define any unique symbols, you'll need
X# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing
X# "make Makefile", "make Makefiles", or "make World").
X#
X# If you absolutely can't get imake to work, you'll need to set the
X# variables at the top of each Makefile as well as the dependencies at the
X# bottom (makedepend will do this automatically).
X#
X
X###########################################################################
X# platform-specific configuration parameters - edit Sun.macros to change
X
X# platform:  $XConsortium: Sun.macros,v 1.52 88/10/23 11:00:55 jim Exp $
X# operating system:   SunOS 3.4
X
XBOOTSTRAPCFLAGS =
X             AS = as
X             CC = cc
X            CPP = /lib/cpp
X             LD = ld
X           LINT = lint
X        INSTALL = install
X           TAGS = ctags
X             RM = rm -f
X             MV = mv
X             LN = ln -s
X         RANLIB = ranlib
XRANLIBINSTFLAGS = -t
X             AR = ar clq
X             LS = ls
X       LINTOPTS = -axz
X    LINTLIBFLAG = -C
X           MAKE = make
XSTD_CPP_DEFINES =
X    STD_DEFINES =
X
X###########################################################################
X# site-specific configuration parameters - edit site.def to change
X
X# site:  $XConsortium: site.def,v 1.16 88/10/12 10:30:24 jim Exp $
X
X###########################################################################
X# definitions common to all Makefiles - do not edit
X
X          SHELL =  /bin/sh
X
X        DESTDIR = /global
X      USRLIBDIR = $(DESTDIR)/lib
X         BINDIR = $(DESTDIR)/bin/X11
X         INCDIR = $(DESTDIR)/include
X         ADMDIR = $(DESTDIR)/usr/adm
X         LIBDIR = $(USRLIBDIR)/X11
X     LINTLIBDIR = $(USRLIBDIR)/lint
X        FONTDIR = $(LIBDIR)/fonts
X       XINITDIR = $(LIBDIR)/xinit
X         XDMDIR = $(LIBDIR)/xdm
X         UWMDIR = $(LIBDIR)/uwm
X         AWMDIR = $(LIBDIR)/awm
X         TWMDIR = $(LIBDIR)/twm
X          DTDIR = $(LIBDIR)/dt
X        MANPATH = /usr/man
X  MANSOURCEPATH = $(MANPATH)/man
X         MANDIR = $(MANSOURCEPATH)n
X      LIBMANDIR = $(MANSOURCEPATH)n3
X    XAPPLOADDIR = $(LIBDIR)/app-defaults
X
X   INSTBINFLAGS = -m 0755
X   INSTUIDFLAGS = -m 4755
X   INSTLIBFLAGS = -m 0664
X   INSTINCFLAGS = -m 0444
X   INSTMANFLAGS = -m 0444
X   INSTAPPFLAGS = -m 0444
X  INSTKMEMFLAGS = -m 4755
X        FCFLAGS = -t
X    CDEBUGFLAGS = -O
X
X        PATHSEP = /
X         DEPEND = $(DEPENDSRC)/makedepend
X          IMAKE = $(BINDIR)/imake
X            RGB = $(RGBSRC)/rgb
X             FC = $(BDFTOSNFSRC)/bdftosnf
X      MKFONTDIR = $(MKFONTDIRSRC)/mkfontdir
X      MKDIRHIER = $(SCRIPTSSRC)/mkdirhier.sh
X
X         CFLAGS = $(CDEBUGFLAGS) $(INCLUDES) $(STD_DEFINES) $(DEFINES)
X      LINTFLAGS = $(LINTOPTS) $(INCLUDES) $(STD_DEFINES) $(DEFINES) -DLINT
X        LDFLAGS = $(CDEBUGFLAGS) -L$(USRLIBDIR) $(SYS_LIBRARIES) $(SYSAUX_LIBRARIES)
X
X       IRULESRC = $(LIBDIR)/imake.includes
X
X   EXTENSIONLIB = $(USRLIBDIR)/libext.a
X           XLIB = $(USRLIBDIR)/libX11.a
X         XMULIB = $(USRLIBDIR)/libXmu.a
X        OLDXLIB = $(USRLIBDIR)/liboldX.a
X       XTOOLLIB = $(USRLIBDIR)/libXt.a
X         XAWLIB = $(USRLIBDIR)/libXaw.a
X       LINTXLIB = $(USRLIBDIR)/llib-lX11.ln
X        LINTXMU = $(USRLIBDIR)/llib-lXmu.ln
X      LINTXTOOL = $(USRLIBDIR)/llib-lXt.ln
X        LINTXAW = $(USRLIBDIR)/llib-lXaw.ln
X       INCLUDES = -I$(INCDIR)
X      MACROFILE = Sun.macros
X   ICONFIGFILES = $(IRULESRC)/Imake.tmpl \
X			$(IRULESRC)/$(MACROFILE) $(IRULESRC)/site.def
X  IMAKE_DEFINES =
X      IMAKE_CMD = $(NEWTOP)$(IMAKE) -TImake.tmpl -I$(NEWTOP)$(IRULESRC) \
X			-s Makefile $(IMAKE_DEFINES)
X         RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a \
X			.emacs_* tags TAGS make.log MakeOut
X
X###########################################################################
X# rules:  $XConsortium: Imake.rules,v 1.71 88/10/23 22:46:34 jim Exp $
X
X###########################################################################
X# start of Imakefile
X
XLOCAL_LIBRARIES =
XSRCS = prtype.c print11.c table11.c decode11.c server.c fd.c common.c scope.c
XOBJS = scope.o common.o fd.o server.o decode11.o table11.o print11.o prtype.o
X
X PROGRAM = xscope
X
Xall:: xscope
X
Xxscope: $(OBJS) $(LOCAL_LIBRARIES)
X	$(RM) $@
X	$(CC) -o $@ $(OBJS) $(LOCAL_LIBRARIES) $(LDFLAGS) $(SYSLAST_LIBRARIES)
X
Xrelink::
X	$(RM) $(PROGRAM)
X	$(MAKE) $(MFLAGS) $(PROGRAM)
X
Xinstall:: xscope
X	$(INSTALL) -c $(INSTALLFLAGS) xscope $(BINDIR)
X
Xinstall.man:: xscope.man
X	$(INSTALL) -c $(INSTMANFLAGS) xscope.man $(MANDIR)/xscope.n
X
Xdepend:: $(DEPEND)
X
Xdepend::
X	$(DEPEND) -s "# DO NOT DELETE" -- $(CFLAGS) -- $(SRCS)
X
X$(DEPEND):
X	@echo "making $@"; \
X	cd $(DEPENDSRC); $(MAKE)
X
Xclean::
X	$(RM) $(PROGRAM)
X
X###########################################################################
X# Imake.tmpl common rules for all Makefiles - do not edit
X
Xemptyrule::
X
Xclean::
X	$(RM_CMD) \#*
X
XMakefile:: $(IMAKE)
X
XMakefile:: Imakefile \
X	$(IRULESRC)/Imake.tmpl \
X	$(IRULESRC)/Imake.rules \
X	$(IRULESRC)/site.def \
X	$(IRULESRC)/$(MACROFILE)
X	-@if [ -f Makefile ]; then \
X	echo "$(RM) Makefile.bak; $(MV) Makefile Makefile.bak"; \
X	$(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \
X	else exit 0; fi
X	$(IMAKE_CMD) -DTOPDIR=$(TOP)
X
X$(IMAKE):
X	@echo "making $@"; \
X	cd $(IMAKESRC); $(MAKE) BOOTSTRAPCFLAGS=$(BOOTSTRAPCFLAGS)
X
Xtags::
X	$(TAGS) -w *.[ch]
X	$(TAGS) -xw *.[ch] > TAGS
X
X###########################################################################
X# empty rules for directories that do not have SUBDIRS - do not edit
X
Xinstall::
X	@echo "install done"
X
Xinstall.man::
X	@echo "install.man done"
X
XMakefiles::
X
X###########################################################################
X# dependencies generated by makedepend
X
END_OF_FILE
if test 6521 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
fi
# end of 'Makefile'
fi
if test -f 'scope.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'scope.h'\"
else
echo shar: Extracting \"'scope.h'\" \(1270 characters\)
sed "s/^X//" >'scope.h' <<'END_OF_FILE'
X/* **********************************************
X *						*
X * header file for the Server spy scope           *
X *						*
X *	James Peterson, 1987			*
X *	(c) Copyright MCC, 1987 		*
X *						*
X ********************************************** */
X
X#include <stdio.h>
X
X#define Boolean short
X#define true 1
X#define false 0
X
X/* ********************************************** */
X/*                                                */
X/* ********************************************** */
X
X#define Assert(b) (b)
X#define debug(n,f) (void)((debuglevel & n) ? (fprintf f,fflush(stderr)) : 0)
Xshort   debuglevel;
X
X/* ********************************************** */
X/*                                                */
X/* ********************************************** */
X
Xshort   Verbose		  /* quiet (0) or increasingly verbose  ( > 0) */ ;
X
X
Xint     ScopePort;
Xchar   *ScopeHost;
X
X/* external function type declarations */
X
Xextern char   *Malloc ();
Xextern char *strcpy();
Xextern char *sprintf();
Xchar   *ClientName ();
X
X/* ********************************************** */
X/*                                                */
X/* ********************************************** */
X
X/* need to change the MaxFD to allow larger number of fd's */
X#define StaticMaxFD 32
X
X
X#include "fd.h"
END_OF_FILE
if test 1270 -ne `wc -c <'scope.h'`; then
    echo shar: \"'scope.h'\" unpacked with wrong size!
fi
# end of 'scope.h'
fi
if test -f 'table11.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'table11.c'\"
else
echo shar: Extracting \"'table11.c'\" \(38075 characters\)
sed "s/^X//" >'table11.c' <<'END_OF_FILE'
X/* ************************************************** *
X *						      *
X *  Table initialization for X11 protocol	      *
X *						      *
X *	James Peterson, 1988			      *
X *	(c) Copyright MCC, 1988 		      *
X *						      *
X * ************************************************** */
X
X#include "scope.h"
X#include "x11.h"
X
X/*
X  To initialize for the X11 protocol, we need to create data structures
X  describing the data types used by X11.
X*/
X
X/*
X  There are about 100-128 data types for X11.  This start with the simple
X  INT8, INT16, INT32 (byte, short, long), and the CARD8, CARD16, CARD32
X  (unsigned) and extend to records like RGB (a resource id, 3 color
X  values and a bitmask to select a subset of the 3 color values).  Each
X  data type has an assigned type index.  The type index identifies the
X  type (with a #define in x11.h) and is used to access an entry in an
X  array of type descriptors (TD).  Each type descriptor has the type name,
X  the kind of type, and a procedure to print an object of that type.
X  The print procedure for a type <foo> is named Print<foo>.  The kind of
X  type is
X
X  BUILTIN:      one of the primitive types.
X  ENUMERATED:   value should be one of a small set of values.  This type
X                needs a list of allowed values (and their print names).
X  SET:          value is a bitmask of a small set of values.  Each value
X                is a one-bit mask (and its print name).
X  RECORD:       value is a record of fields of other types.
X
X  The Type Descriptor array allows us to print a value if we know its type
X  (index) and the bytes in memory that are its value.
X*/
X
X
XInitializeX11()
X{
X  InitReplyQ();
X
X  InitBuiltInTypes();
X  InitEnumeratedTypes();
X  InitSetTypes();
X  InitValuesTypes();
X  InitRecordTypes();
X}
X
X/* ************************************************************ */
X/*								*/
X/*								*/
X/* ************************************************************ */
X
X/* define the various types */
X
XTYPE DefineType(typeid, class, name, printproc)
X     short   typeid;
X     short   class;
X     char   *name;
X     int     (*printproc)();
X{
X  TD[typeid].Name = name;
X  TD[typeid].Type = class;
X  TD[typeid].ValueList = NULL;
X  TD[typeid].PrintProc = printproc;
X  return(&TD[typeid]);
X}
X
X/* ************************************************************ */
X/* define an Enumerated Value (or a Set Value) */
X
XDefineEValue(type, value, name)
X     TYPE type;
X     long    value;
X     char   *name;
X{
X  struct ValueListEntry  *p;
X
X  /* define the new value */
X  p = (struct ValueListEntry *)
X                          Malloc ((long)(sizeof (struct ValueListEntry)));
X  p->Name = name;
X  p->Value = value;
X
X  /* add an new value to the list. */
X  if (type->ValueList == NULL || type->ValueList->Value > p->Value)
X    {
X      p->Next = type->ValueList;
X      type->ValueList = p;
X    }
X  else
X    {
X      /* keep the list sorted, smallest to largest */
X      struct ValueListEntry  *q = type->ValueList;
X      while (q->Next != NULL && q->Next->Value < p->Value)
X	q = q->Next;
X      p->Next = q->Next;
X      q->Next = p;
X    }
X}
X
X/* ************************************************************ */
X/* a Values list is like an enumerated Value, but has a type and length
X   in addition to a value and name.  It is used to print a Values List */
X
X/* A Values List is a bitmask (like a set), but if the bit is set on, then
X   we have an associated value.  We need to know the length and type of the
X   associated value for each bit */
X
XDefineValues(type, value, length, ctype, name)
X     TYPE type;
X     long    value;
X     char   *name;
X{
X  struct ValueListEntry  *p;
X
X  p = (struct ValueListEntry *)
X                            Malloc ((long)(sizeof (struct ValueListEntry)));
X  p->Name = name;
X  p->Type = ctype;
X  p->Length = length;
X  p->Value = value;
X
X  /* add an new value to the list. */
X  if (type->ValueList == NULL || type->ValueList->Value > p->Value)
X    {
X      p->Next = type->ValueList;
X      type->ValueList = p;
X    }
X  else
X    {
X      /* keep the list sorted, smallest to largest  */
X      struct ValueListEntry  *q = type->ValueList;
X      while (q->Next != NULL && q->Next->Value < p->Value)
X	q = q->Next;
X      p->Next = q->Next;
X      q->Next = p;
X    }
X}
X
X
X
X/* ************************************************************ */
X
XInitBuiltInTypes()
X{
X  (void) DefineType(INT8, BUILTIN, "INT8", PrintINT8);
X  (void) DefineType(INT16, BUILTIN, "INT16", PrintINT16);
X  (void) DefineType(INT32, BUILTIN, "INT32", PrintINT32);
X  (void) DefineType(CARD8, BUILTIN, "CARD8", PrintCARD8);
X  (void) DefineType(CARD16, BUILTIN, "CARD16", PrintCARD16);
X  (void) DefineType(CARD32, BUILTIN, "CARD32", PrintCARD32);
X  (void) DefineType(BYTE, BUILTIN, "BYTE", PrintBYTE);
X  (void) DefineType(CHAR8, BUILTIN, "CHAR8", PrintCHAR8);
X  (void) DefineType(STRING16, BUILTIN, "STRING16", PrintSTRING16);
X  (void) DefineType(STR, BUILTIN, "STR", PrintSTR);
X  (void) DefineType(WINDOW, BUILTIN, "WINDOW", PrintWINDOW);
X  (void) DefineType(WINDOWD, BUILTIN, "WINDOWD", PrintWINDOWD);
X  (void) DefineType(WINDOWNR, BUILTIN, "WINDOWNR", PrintWINDOWNR);
X  (void) DefineType(PIXMAP, BUILTIN, "PIXMAP", PrintPIXMAP);
X  (void) DefineType(PIXMAPNPR, BUILTIN, "PIXMAPNPR", PrintPIXMAPNPR);
X  (void) DefineType(PIXMAPC, BUILTIN, "PIXMAPC", PrintPIXMAPC);
X  (void) DefineType(CURSOR, BUILTIN, "CURSOR", PrintCURSOR);
X  (void) DefineType(FONT, BUILTIN, "FONT", PrintFONT);
X  (void) DefineType(GCONTEXT, BUILTIN, "GCONTEXT", PrintGCONTEXT);
X  (void) DefineType(COLORMAP, BUILTIN, "COLORMAP", PrintCOLORMAP);
X  (void) DefineType(COLORMAPC, BUILTIN, "COLORMAPC", PrintCOLORMAPC);
X  (void) DefineType(DRAWABLE, BUILTIN, "DRAWABLE", PrintDRAWABLE);
X  (void) DefineType(FONTABLE, BUILTIN, "FONTABLE", PrintFONTABLE);
X  (void) DefineType(ATOM, BUILTIN, "ATOM", PrintATOM);
X  (void) DefineType(ATOMT, BUILTIN, "ATOMT", PrintATOMT);
X  (void) DefineType(VISUALID, BUILTIN, "VISUALID", PrintVISUALID);
X  (void) DefineType(VISUALIDC, BUILTIN, "VISUALIDC", PrintVISUALIDC);
X  (void) DefineType(TIMESTAMP, BUILTIN, "TIMESTAMP", PrintTIMESTAMP);
X  (void) DefineType(RESOURCEID, BUILTIN, "RESOURCEID", PrintRESOURCEID);
X  (void) DefineType(KEYSYM, BUILTIN, "KEYSYM", PrintKEYSYM);
X  (void) DefineType(KEYCODE, BUILTIN, "KEYCODE", PrintKEYCODE);
X  (void) DefineType(KEYCODEA, BUILTIN, "KEYCODEA", PrintKEYCODEA);
X  (void) DefineType(BUTTON, BUILTIN, "BUTTON", PrintBUTTON);
X  (void) DefineType(BUTTONA, BUILTIN, "BUTTONA", PrintBUTTONA);
X  (void) DefineType(EVENTFORM, BUILTIN, "EVENTFORM", PrintEVENTFORM);
X}
X
X/* ************************************************************ */
X/*								*/
X/*								*/
X/* ************************************************************ */
X
XInitEnumeratedTypes()
X{
X  TYPE p;
X
X  p = DefineType(REQUEST, ENUMERATED, "REQUEST", PrintENUMERATED);
X  DefineEValue(p, 1L, "CreateWindow");
X  DefineEValue(p, 2L, "ChangeWindowAttributes");
X  DefineEValue(p, 3L, "GetWindowAttributes");
X  DefineEValue(p, 4L, "DestroyWindow");
X  DefineEValue(p, 5L, "DestroySubwindows");
X  DefineEValue(p, 6L, "ChangeSaveSet");
X  DefineEValue(p, 7L, "ReparentWindow");
X  DefineEValue(p, 8L, "MapWindow");
X  DefineEValue(p, 9L, "MapSubwindows");
X  DefineEValue(p, 10L, "UnmapWindow");
X  DefineEValue(p, 11L, "UnmapSubwindows");
X  DefineEValue(p, 12L, "ConfigureWindow");
X  DefineEValue(p, 13L, "CirculateWindow");
X  DefineEValue(p, 14L, "GetGeometry");
X  DefineEValue(p, 15L, "QueryTree");
X  DefineEValue(p, 16L, "InternAtom");
X  DefineEValue(p, 17L, "GetAtomName");
X  DefineEValue(p, 18L, "ChangeProperty");
X  DefineEValue(p, 19L, "DeleteProperty");
X  DefineEValue(p, 20L, "GetProperty");
X  DefineEValue(p, 21L, "ListProperties");
X  DefineEValue(p, 22L, "SetSelectionOwner");
X  DefineEValue(p, 23L, "GetSelectionOwner");
X  DefineEValue(p, 24L, "ConvertSelection");
X  DefineEValue(p, 25L, "SendEvent");
X  DefineEValue(p, 26L, "GrabPointer");
X  DefineEValue(p, 27L, "UngrabPointer");
X  DefineEValue(p, 28L, "GrabButton");
X  DefineEValue(p, 29L, "UngrabButton");
X  DefineEValue(p, 30L, "ChangeActivePointerGrab");
X  DefineEValue(p, 31L, "GrabKeyboard");
X  DefineEValue(p, 32L, "UngrabKeyboard");
X  DefineEValue(p, 33L, "GrabKey");
X  DefineEValue(p, 34L, "UngrabKey");
X  DefineEValue(p, 35L, "AllowEvents");
X  DefineEValue(p, 36L, "GrabServer");
X  DefineEValue(p, 37L, "UngrabServer");
X  DefineEValue(p, 38L, "QueryPointer");
X  DefineEValue(p, 39L, "GetMotionEvents");
X  DefineEValue(p, 40L, "TranslateCoordinates");
X  DefineEValue(p, 41L, "WarpPointer");
X  DefineEValue(p, 42L, "SetInputFocus");
X  DefineEValue(p, 43L, "GetInputFocus");
X  DefineEValue(p, 44L, "QueryKeymap");
X  DefineEValue(p, 45L, "OpenFont");
X  DefineEValue(p, 46L, "CloseFont");
X  DefineEValue(p, 47L, "QueryFont");
X  DefineEValue(p, 48L, "QueryTextExtents");
X  DefineEValue(p, 49L, "ListFonts");
X  DefineEValue(p, 50L, "ListFontsWithInfo");
X  DefineEValue(p, 51L, "SetFontPath");
X  DefineEValue(p, 52L, "GetFontPath");
X  DefineEValue(p, 53L, "CreatePixmap");
X  DefineEValue(p, 54L, "FreePixmap");
X  DefineEValue(p, 55L, "CreateGC");
X  DefineEValue(p, 56L, "ChangeGC");
X  DefineEValue(p, 57L, "CopyGC");
X  DefineEValue(p, 58L, "SetDashes");
X  DefineEValue(p, 59L, "SetClipRectangles");
X  DefineEValue(p, 60L, "FreeGC");
X  DefineEValue(p, 61L, "ClearArea");
X  DefineEValue(p, 62L, "CopyArea");
X  DefineEValue(p, 63L, "CopyPlane");
X  DefineEValue(p, 64L, "PolyPoint");
X  DefineEValue(p, 65L, "PolyLine");
X  DefineEValue(p, 66L, "PolySegment");
X  DefineEValue(p, 67L, "PolyRectangle");
X  DefineEValue(p, 68L, "PolyArc");
X  DefineEValue(p, 69L, "FillPoly");
X  DefineEValue(p, 70L, "PolyFillRectangle");
X  DefineEValue(p, 71L, "PolyFillArc");
X  DefineEValue(p, 72L, "PutImage");
X  DefineEValue(p, 73L, "GetImage");
X  DefineEValue(p, 74L, "PolyText8");
X  DefineEValue(p, 75L, "PolyText16");
X  DefineEValue(p, 76L, "ImageText8");
X  DefineEValue(p, 77L, "ImageText16");
X  DefineEValue(p, 78L, "CreateColormap");
X  DefineEValue(p, 79L, "FreeColormap");
X  DefineEValue(p, 80L, "CopyColormapAndFree");
X  DefineEValue(p, 81L, "InstallColormap");
X  DefineEValue(p, 82L, "UninstallColormap");
X  DefineEValue(p, 83L, "ListInstalledColormaps");
X  DefineEValue(p, 84L, "AllocColor");
X  DefineEValue(p, 85L, "AllocNamedColor");
X  DefineEValue(p, 86L, "AllocColorCells");
X  DefineEValue(p, 87L, "AllocColorPlanes");
X  DefineEValue(p, 88L, "FreeColors");
X  DefineEValue(p, 89L, "StoreColors");
X  DefineEValue(p, 90L, "StoreNamedColor");
X  DefineEValue(p, 91L, "QueryColors");
X  DefineEValue(p, 92L, "LookupColor");
X  DefineEValue(p, 93L, "CreateCursor");
X  DefineEValue(p, 94L, "CreateGlyphCursor");
X  DefineEValue(p, 95L, "FreeCursor");
X  DefineEValue(p, 96L, "RecolorCursor");
X  DefineEValue(p, 97L, "QueryBestSize");
X  DefineEValue(p, 98L, "QueryExtension");
X  DefineEValue(p, 99L, "ListExtensions");
X  DefineEValue(p, 100L, "ChangeKeyboardMapping");
X  DefineEValue(p, 101L, "GetKeyboardMapping");
X  DefineEValue(p, 102L, "ChangeKeyboardControl");
X  DefineEValue(p, 103L, "GetKeyboardControl");
X  DefineEValue(p, 104L, "Bell");
X  DefineEValue(p, 105L, "ChangePointerControl");
X  DefineEValue(p, 106L, "GetPointerControl");
X  DefineEValue(p, 107L, "SetScreenSaver");
X  DefineEValue(p, 108L, "GetScreenSaver");
X  DefineEValue(p, 109L, "ChangeHosts");
X  DefineEValue(p, 110L, "ListHosts");
X  DefineEValue(p, 111L, "SetAccessControl");
X  DefineEValue(p, 112L, "SetCloseDownMode");
X  DefineEValue(p, 113L, "KillClient");
X  DefineEValue(p, 114L, "RotateProperties");
X  DefineEValue(p, 115L, "ForceScreenSaver");
X  DefineEValue(p, 116L, "SetPointerMapping");
X  DefineEValue(p, 117L, "GetPointerMapping");
X  DefineEValue(p, 118L, "SetModifierMapping");
X  DefineEValue(p, 119L, "GetModifierMapping");
X  DefineEValue(p, 127L, "NoOperation");
X
X  p = DefineType(REPLY, ENUMERATED, "REPLY", PrintENUMERATED);
X  DefineEValue(p, 3L, "GetWindowAttributes");
X  DefineEValue(p, 14L, "GetGeometry");
X  DefineEValue(p, 15L, "QueryTree");
X  DefineEValue(p, 16L, "InternAtom");
X  DefineEValue(p, 17L, "GetAtomName");
X  DefineEValue(p, 20L, "GetProperty");
X  DefineEValue(p, 21L, "ListProperties");
X  DefineEValue(p, 23L, "GetSelectionOwner");
X  DefineEValue(p, 26L, "GrabPointer");
X  DefineEValue(p, 31L, "GrabKeyboard");
X  DefineEValue(p, 38L, "QueryPointer");
X  DefineEValue(p, 39L, "GetMotionEvents");
X  DefineEValue(p, 40L, "TranslateCoordinates");
X  DefineEValue(p, 43L, "GetInputFocus");
X  DefineEValue(p, 44L, "QueryKeymap");
X  DefineEValue(p, 47L, "QueryFont");
X  DefineEValue(p, 48L, "QueryTextExtents");
X  DefineEValue(p, 49L, "ListFonts");
X  DefineEValue(p, 50L, "ListFontsWithInfo");
X  DefineEValue(p, 52L, "GetFontPath");
X  DefineEValue(p, 73L, "GetImage");
X  DefineEValue(p, 83L, "ListInstalledColormaps");
X  DefineEValue(p, 84L, "AllocColor");
X  DefineEValue(p, 85L, "AllocNamedColor");
X  DefineEValue(p, 86L, "AllocColorCells");
X  DefineEValue(p, 87L, "AllocColorPlanes");
X  DefineEValue(p, 91L, "QueryColors");
X  DefineEValue(p, 92L, "LookupColor");
X  DefineEValue(p, 97L, "QueryBestSize");
X  DefineEValue(p, 98L, "QueryExtension");
X  DefineEValue(p, 99L, "ListExtensions");
X  DefineEValue(p, 101L, "GetKeyboardMapping");
X  DefineEValue(p, 103L, "GetKeyboardControl");
X  DefineEValue(p, 106L, "GetPointerControl");
X  DefineEValue(p, 108L, "GetScreenSaver");
X  DefineEValue(p, 110L, "ListHosts");
X  DefineEValue(p, 116L, "SetPointerMapping");
X  DefineEValue(p, 117L, "GetPointerMapping");
X  DefineEValue(p, 118L, "SetModifierMapping");
X  DefineEValue(p, 119L, "GetModifierMapping");
X
X  p = DefineType(ERROR, ENUMERATED, "ERROR", PrintENUMERATED);
X  DefineEValue(p, 1L, "Request");
X  DefineEValue(p, 2L, "Value");
X  DefineEValue(p, 3L, "Window");
X  DefineEValue(p, 4L, "Pixmap");
X  DefineEValue(p, 5L, "Atom");
X  DefineEValue(p, 6L, "Cursor");
X  DefineEValue(p, 7L, "Font");
X  DefineEValue(p, 8L, "Match");
X  DefineEValue(p, 9L, "Drawable");
X  DefineEValue(p, 10L, "Access");
X  DefineEValue(p, 11L, "Alloc");
X  DefineEValue(p, 12L, "Colormap");
X  DefineEValue(p, 13L, "GContext");
X  DefineEValue(p, 14L, "IDChoice");
X  DefineEValue(p, 15L, "Name");
X  DefineEValue(p, 16L, "Length");
X  DefineEValue(p, 17L, "Implementation");
X
X  p = DefineType(EVENT, ENUMERATED, "EVENT", PrintENUMERATED);
X  DefineEValue(p, 2L, "KeyPress");
X  DefineEValue(p, 3L, "KeyRelease");
X  DefineEValue(p, 4L, "ButtonPress");
X  DefineEValue(p, 5L, "ButtonRelease");
X  DefineEValue(p, 6L, "MotionNotify");
X  DefineEValue(p, 7L, "EnterNotify");
X  DefineEValue(p, 8L, "LeaveNotify");
X  DefineEValue(p, 9L, "FocusIn");
X  DefineEValue(p, 10L, "FocusOut");
X  DefineEValue(p, 11L, "KeymapNotify");
X  DefineEValue(p, 12L, "Expose");
X  DefineEValue(p, 13L, "GraphicsExposure");
X  DefineEValue(p, 14L, "NoExposure");
X  DefineEValue(p, 15L, "VisibilityNotify");
X  DefineEValue(p, 16L, "CreateNotify");
X  DefineEValue(p, 17L, "DestroyNotify");
X  DefineEValue(p, 18L, "UnmapNotify");
X  DefineEValue(p, 19L, "MapNotify");
X  DefineEValue(p, 20L, "MapRequest");
X  DefineEValue(p, 21L, "ReparentNotify");
X  DefineEValue(p, 22L, "ConfigureNotify");
X  DefineEValue(p, 23L, "ConfigureRequest");
X  DefineEValue(p, 24L, "GravityNotify");
X  DefineEValue(p, 25L, "ResizeRequest");
X  DefineEValue(p, 26L, "CirculateNotify");
X  DefineEValue(p, 27L, "CirculateRequest");
X  DefineEValue(p, 28L, "PropertyNotify");
X  DefineEValue(p, 29L, "SelectionClear");
X  DefineEValue(p, 30L, "SelectionRequest");
X  DefineEValue(p, 31L, "SelectionNotify");
X  DefineEValue(p, 32L, "ColormapNotify");
X  DefineEValue(p, 33L, "ClientMessage");
X  DefineEValue(p, 34L, "MappingNotify");
X
X
X  p = DefineType(BITGRAVITY, ENUMERATED, "BITGRAVITY", PrintENUMERATED);
X  DefineEValue(p, 0L, "Forget");
X  DefineEValue(p, 1L, "NorthWest");
X  DefineEValue(p, 2L, "North");
X  DefineEValue(p, 3L, "NorthEast");
X  DefineEValue(p, 4L, "West");
X  DefineEValue(p, 5L, "Center");
X  DefineEValue(p, 6L, "East");
X  DefineEValue(p, 7L, "SouthWest");
X  DefineEValue(p, 8L, "South");
X  DefineEValue(p, 9L, "SouthEast");
X  DefineEValue(p, 10L, "Static");
X
X  p = DefineType(WINGRAVITY, ENUMERATED, "WINGRAVITY", PrintENUMERATED);
X  DefineEValue(p, 0L, "Unmap");
X  DefineEValue(p, 1L, "NorthWest");
X  DefineEValue(p, 2L, "North");
X  DefineEValue(p, 3L, "NorthEast");
X  DefineEValue(p, 4L, "West");
X  DefineEValue(p, 5L, "Center");
X  DefineEValue(p, 6L, "East");
X  DefineEValue(p, 7L, "SouthWest");
X  DefineEValue(p, 8L, "South");
X  DefineEValue(p, 9L, "SouthEast");
X  DefineEValue(p, 10L, "Static");
X
X  p = DefineType(BOOL, ENUMERATED, "BOOL", PrintENUMERATED);
X  DefineEValue(p, 0L, "False");
X  DefineEValue(p, 1L, "True");
X
X  p = DefineType(HOSTFAMILY, ENUMERATED, "HOSTFAMILY", PrintENUMERATED);
X  DefineEValue(p, 0L, "Internet");
X  DefineEValue(p, 1L, "DECnet");
X  DefineEValue(p, 2L, "Chaos");
X
X  p = DefineType(PK_MODE, ENUMERATED, "PK_MODE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Synchronous");
X  DefineEValue(p, 1L, "Asynchronous");
X
X  p = DefineType(NO_YES, ENUMERATED, "NO_YES", PrintENUMERATED);
X  DefineEValue(p, 0L, "No");
X  DefineEValue(p, 1L, "Yes");
X  DefineEValue(p, 2L, "Default");
X
X  p = DefineType(WINDOWCLASS, ENUMERATED, "WINDOWCLASS", PrintENUMERATED);
X  DefineEValue(p, 0L, "CopyFromParent");
X  DefineEValue(p, 1L, "InputOutput");
X  DefineEValue(p, 2L, "InputOnly");
X
X  p = DefineType(BACKSTORE, ENUMERATED, "BACKSTORE", PrintENUMERATED);
X  DefineEValue(p, 0L, "NotUseful");
X  DefineEValue(p, 1L, "WhenMapped");
X  DefineEValue(p, 2L, "Always");
X
X  p = DefineType(MAPSTATE, ENUMERATED, "MAPSTATE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Unmapped");
X  DefineEValue(p, 1L, "Unviewable");
X  DefineEValue(p, 2L, "Viewable");
X
X  p = DefineType(STACKMODE, ENUMERATED, "STACKMODE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Above");
X  DefineEValue(p, 1L, "Below");
X  DefineEValue(p, 2L, "TopIf");
X  DefineEValue(p, 3L, "BottomIf");
X  DefineEValue(p, 4L, "Opposite");
X
X  p = DefineType(CIRMODE, ENUMERATED, "CIRMODE", PrintENUMERATED);
X  DefineEValue(p, 0L, "RaiseLowest");
X  DefineEValue(p, 1L, "LowerHighest");
X
X  p = DefineType(CHANGEMODE, ENUMERATED, "CHANGEMODE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Replace");
X  DefineEValue(p, 1L, "Prepend");
X  DefineEValue(p, 2L, "Append");
X
X  p = DefineType(GRABSTAT, ENUMERATED, "GRABSTAT", PrintENUMERATED);
X  DefineEValue(p, 0L, "Success");
X  DefineEValue(p, 1L, "AlreadyGrabbed");
X  DefineEValue(p, 2L, "InvalidTime");
X  DefineEValue(p, 3L, "NotViewable");
X  DefineEValue(p, 4L, "Frozen");
X
X  p = DefineType(EVENTMODE, ENUMERATED, "EVENTMODE", PrintENUMERATED);
X  DefineEValue(p, 0L, "AsyncPointer");
X  DefineEValue(p, 1L, "SyncPointer");
X  DefineEValue(p, 2L, "ReplayPointer");
X  DefineEValue(p, 3L, "AsyncKeyboard");
X  DefineEValue(p, 4L, "SyncKeyboard");
X  DefineEValue(p, 5L, "ReplayKeyboard");
X  DefineEValue(p, 6L, "AsyncBoth");
X  DefineEValue(p, 7L, "SyncBoth");
X
X  p = DefineType(FOCUSAGENT, ENUMERATED, "FOCUSAGENT", PrintENUMERATED);
X  DefineEValue(p, 0L, "None");
X  DefineEValue(p, 1L, "PointerRoot");
X  DefineEValue(p, 2L, "Parent");
X
X  p = DefineType(DIRECT, ENUMERATED, "DIRECT", PrintENUMERATED);
X  DefineEValue(p, 0L, "LeftToRight");
X  DefineEValue(p, 1L, "RightToLeft");
X
X  p = DefineType(GCFUNC, ENUMERATED, "GCFUNC", PrintENUMERATED);
X  DefineEValue(p, 0L, "Clear");
X  DefineEValue(p, 1L, "And");
X  DefineEValue(p, 2L, "AndReverse");
X  DefineEValue(p, 3L, "Copy");
X  DefineEValue(p, 4L, "AndInverted");
X  DefineEValue(p, 5L, "Noop");
X  DefineEValue(p, 6L, "Xor");
X  DefineEValue(p, 7L, "Or");
X  DefineEValue(p, 8L, "Nor");
X  DefineEValue(p, 9L, "Equiv");
X  DefineEValue(p, 10L, "Invert");
X  DefineEValue(p, 11L, "OrReverse");
X  DefineEValue(p, 12L, "CopyInverted");
X  DefineEValue(p, 13L, "OrInverted");
X  DefineEValue(p, 14L, "Nand");
X  DefineEValue(p, 15L, "Set");
X
X  p = DefineType(LINESTYLE, ENUMERATED, "LINESTYLE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Solid");
X  DefineEValue(p, 1L, "OnOffDash");
X  DefineEValue(p, 2L, "DoubleDash");
X
X  p = DefineType(CAPSTYLE, ENUMERATED, "CAPSTYLE", PrintENUMERATED);
X  DefineEValue(p, 0L, "NotLast");
X  DefineEValue(p, 1L, "Butt");
X  DefineEValue(p, 2L, "Round");
X  DefineEValue(p, 3L, "Projecting");
X
X  p = DefineType(JOINSTYLE, ENUMERATED, "JOINSTYLE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Miter");
X  DefineEValue(p, 1L, "Round");
X  DefineEValue(p, 2L, "Bevel");
X
X  p = DefineType(FILLSTYLE, ENUMERATED, "FILLSTYLE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Solid");
X  DefineEValue(p, 1L, "Tiled");
X  DefineEValue(p, 2L, "Stippled");
X  DefineEValue(p, 3L, "OpaqueStippled");
X
X  p = DefineType(FILLRULE, ENUMERATED, "FILLRULE", PrintENUMERATED);
X  DefineEValue(p, 0L, "EvenOdd");
X  DefineEValue(p, 1L, "Winding");
X
X  p = DefineType(SUBWINMODE, ENUMERATED, "SUBWINMODE", PrintENUMERATED);
X  DefineEValue(p, 0L, "ClipByChildren");
X  DefineEValue(p, 1L, "IncludeInferiors");
X
X  p = DefineType(ARCMODE, ENUMERATED, "ARCMODE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Chord");
X  DefineEValue(p, 1L, "PieSlice");
X
X  p = DefineType(RECTORDER, ENUMERATED, "RECTORDER", PrintENUMERATED);
X  DefineEValue(p, 0L, "UnSorted");
X  DefineEValue(p, 1L, "YSorted");
X  DefineEValue(p, 2L, "YXSorted");
X  DefineEValue(p, 3L, "YXBanded");
X
X  p = DefineType(COORMODE, ENUMERATED, "COORMODE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Origin");
X  DefineEValue(p, 1L, "Previous");
X
X  p = DefineType(POLYSHAPE, ENUMERATED, "POLYSHAPE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Complex");
X  DefineEValue(p, 1L, "Nonconvex");
X  DefineEValue(p, 2L, "Convex");
X
X  p = DefineType(IMAGEMODE, ENUMERATED, "IMAGEMODE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Bitmap");
X  DefineEValue(p, 1L, "XYPixmap");
X  DefineEValue(p, 2L, "ZPixmap");
X
X  p = DefineType(ALLORNONE, ENUMERATED, "ALLORNONE", PrintENUMERATED);
X  DefineEValue(p, 0L, "None");
X  DefineEValue(p, 1L, "All");
X
X  p = DefineType(OBJECTCLASS, ENUMERATED, "OBJECTCLASS", PrintENUMERATED);
X  DefineEValue(p, 0L, "Cursor");
X  DefineEValue(p, 1L, "Tile");
X  DefineEValue(p, 2L, "Stipple");
X
X  p = DefineType(OFF_ON, ENUMERATED, "OFF_ON", PrintENUMERATED);
X  DefineEValue(p, 0L, "Off");
X  DefineEValue(p, 1L, "On");
X  DefineEValue(p, 2L, "Default");
X
X  p = DefineType(INS_DEL, ENUMERATED, "INS_DEL", PrintENUMERATED);
X  DefineEValue(p, 0L, "Insert");
X  DefineEValue(p, 1L, "Delete");
X
X  p = DefineType(DIS_EN, ENUMERATED, "DIS_EN", PrintENUMERATED);
X  DefineEValue(p, 0L, "Disabled");
X  DefineEValue(p, 1L, "Enabled");
X
X  p = DefineType(CLOSEMODE, ENUMERATED, "CLOSEMODE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Destroy");
X  DefineEValue(p, 1L, "RetainPermanent");
X  DefineEValue(p, 2L, "RetainTemporary");
X
X  p = DefineType(SAVEMODE, ENUMERATED, "SAVEMODE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Reset");
X  DefineEValue(p, 1L, "Activate");
X
X  p = DefineType(RSTATUS, ENUMERATED, "RSTATUS", PrintENUMERATED);
X  DefineEValue(p, 0L, "Success");
X  DefineEValue(p, 1L, "Busy");
X  DefineEValue(p, 2L, "Failed");
X
X  p = DefineType(MOTIONDETAIL, ENUMERATED, "MOTIONDETAIL", PrintENUMERATED);
X  DefineEValue(p, 0L, "Normal");
X  DefineEValue(p, 1L, "Hint");
X
X  p = DefineType(ENTERDETAIL, ENUMERATED, "ENTERDETAIL", PrintENUMERATED);
X  DefineEValue(p, 0L, "Ancestor");
X  DefineEValue(p, 1L, "Virtual");
X  DefineEValue(p, 2L, "Inferior");
X  DefineEValue(p, 3L, "Nonlinear");
X  DefineEValue(p, 4L, "NonlinearVirtual");
X  DefineEValue(p, 5L, "Pointer");
X  DefineEValue(p, 6L, "PointerRoot");
X  DefineEValue(p, 7L, "None");
X
X  p = DefineType(BUTTONMODE, ENUMERATED, "BUTTONMODE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Normal");
X  DefineEValue(p, 1L, "Grab");
X  DefineEValue(p, 2L, "Ungrab");
X  DefineEValue(p, 3L, "WhileGrabbed");
X
X  p = DefineType(VISIBLE, ENUMERATED, "VISIBLE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Unobscured");
X  DefineEValue(p, 1L, "PartiallyObscured");
X  DefineEValue(p, 2L, "FullyObscured");
X
X  p = DefineType(CIRSTAT, ENUMERATED, "CIRSTAT", PrintENUMERATED);
X  DefineEValue(p, 0L, "Top");
X  DefineEValue(p, 1L, "Bottom");
X
X  p = DefineType(PROPCHANGE, ENUMERATED, "PROPCHANGE", PrintENUMERATED);
X  DefineEValue(p, 0L, "NewValue");
X  DefineEValue(p, 1L, "Deleted");
X
X  p = DefineType(CMAPCHANGE, ENUMERATED, "CMAPCHANGE", PrintENUMERATED);
X  DefineEValue(p, 0L, "Uninstalled");
X  DefineEValue(p, 1L, "Installed");
X
X  p = DefineType(MAPOBJECT, ENUMERATED, "MAPOBJECT", PrintENUMERATED);
X  DefineEValue(p, 0L, "Modifier");
X  DefineEValue(p, 1L, "Keyboard");
X  DefineEValue(p, 2L, "Pointer");
X
X  p = DefineType(BYTEMODE, ENUMERATED, "BYTEMODE", PrintENUMERATED);
X  DefineEValue(p, 0x42L, "MSB first");
X  DefineEValue(p, 0x6CL, "LSB first");
X
X  p = DefineType(BYTEORDER, ENUMERATED, "BYTEORDER", PrintENUMERATED);
X  DefineEValue(p, 0L, "LSB first");
X  DefineEValue(p, 1L, "MSB first");
X
X  p = DefineType(COLORCLASS, ENUMERATED, "COLORCLASS", PrintENUMERATED);
X  DefineEValue(p, 0L, "StaticGray");
X  DefineEValue(p, 1L, "GrayScale");
X  DefineEValue(p, 2L, "StaticColor");
X  DefineEValue(p, 3L, "PseudoColor");
X  DefineEValue(p, 4L, "TrueColor");
X  DefineEValue(p, 5L, "DirectColor");
X}
X
X/* ************************************************************ */
X/*								*/
X/*								*/
X/* ************************************************************ */
X
XInitSetTypes()
X{
X  TYPE p;
X
X  p = DefineType(SETofEVENT, SET, "SETofEVENT", PrintSET);
X  DefineEValue(p, 0x00000001L, "KeyPress");
X  DefineEValue(p, 0x00000002L, "KeyRelease");
X  DefineEValue(p, 0x00000004L, "ButtonPress");
X  DefineEValue(p, 0x00000008L, "ButtonRelease");
X  DefineEValue(p, 0x00000010L, "EnterWindow");
X  DefineEValue(p, 0x00000020L, "LeaveWindow");
X  DefineEValue(p, 0x00000040L, "PointerMotion");
X  DefineEValue(p, 0x00000080L, "PointerMotionHint");
X  DefineEValue(p, 0x00000100L, "Button1Motion");
X  DefineEValue(p, 0x00000200L, "Button2Motion");
X  DefineEValue(p, 0x00000400L, "Button3Motion");
X  DefineEValue(p, 0x00000800L, "Button4Motion");
X  DefineEValue(p, 0x00001000L, "Button5Motion");
X  DefineEValue(p, 0x00002000L, "ButtonMotion");
X  DefineEValue(p, 0x00004000L, "KeymapState");
X  DefineEValue(p, 0x00008000L, "Exposure");
X  DefineEValue(p, 0x00010000L, "VisibilityChange");
X  DefineEValue(p, 0x00020000L, "StructureNotify");
X  DefineEValue(p, 0x00040000L, "ResizeRedirect");
X  DefineEValue(p, 0x00080000L, "SubstructureNotify");
X  DefineEValue(p, 0x00100000L, "SubstructureRedirect");
X  DefineEValue(p, 0x00200000L, "FocusChange");
X  DefineEValue(p, 0x00400000L, "PropertyChange");
X  DefineEValue(p, 0x00800000L, "ColormapChange");
X  DefineEValue(p, 0x01000000L, "OwnerGrabButton");
X
X  p = DefineType(SETofPOINTEREVENT, SET, "SETofPOINTEREVENT", PrintSET);
X  DefineEValue(p, 0x00000004L, "ButtonPress");
X  DefineEValue(p, 0x00000008L, "ButtonRelease");
X  DefineEValue(p, 0x00000010L, "EnterWindow");
X  DefineEValue(p, 0x00000020L, "LeaveWindow");
X  DefineEValue(p, 0x00000040L, "PointerMotion");
X  DefineEValue(p, 0x00000080L, "PointerMotionHint");
X  DefineEValue(p, 0x00000100L, "Button1Motion");
X  DefineEValue(p, 0x00000200L, "Button2Motion");
X  DefineEValue(p, 0x00000400L, "Button3Motion");
X  DefineEValue(p, 0x00000800L, "Button4Motion");
X  DefineEValue(p, 0x00001000L, "Button5Motion");
X  DefineEValue(p, 0x00002000L, "ButtonMotion");
X  DefineEValue(p, 0x00004000L, "KeymapState");
X
X  p = DefineType(SETofDEVICEEVENT, SET, "SETofDEVICEEVENT", PrintSET);
X  DefineEValue(p, 0x00000001L, "KeyPress");
X  DefineEValue(p, 0x00000002L, "KeyRelease");
X  DefineEValue(p, 0x00000004L, "ButtonPress");
X  DefineEValue(p, 0x00000008L, "ButtonRelease");
X  DefineEValue(p, 0x00000040L, "PointerMotion");
X  DefineEValue(p, 0x00000100L, "Button1Motion");
X  DefineEValue(p, 0x00000200L, "Button2Motion");
X  DefineEValue(p, 0x00000400L, "Button3Motion");
X  DefineEValue(p, 0x00000800L, "Button4Motion");
X  DefineEValue(p, 0x00001000L, "Button5Motion");
X  DefineEValue(p, 0x00002000L, "ButtonMotion");
X
X  p = DefineType(SETofKEYBUTMASK, SET, "SETofKEYBUTMASK", PrintSET);
X  DefineEValue(p, 0x0001L, "Shift");
X  DefineEValue(p, 0x0002L, "Lock");
X  DefineEValue(p, 0x0004L, "Control");
X  DefineEValue(p, 0x0008L, "Mod1");
X  DefineEValue(p, 0x0010L, "Mod2");
X  DefineEValue(p, 0x0020L, "Mod3");
X  DefineEValue(p, 0x0040L, "Mod4");
X  DefineEValue(p, 0x0080L, "Mod5");
X  DefineEValue(p, 0x0100L, "Button1");
X  DefineEValue(p, 0x0200L, "Button2");
X  DefineEValue(p, 0x0400L, "Button3");
X  DefineEValue(p, 0x0800L, "Button4");
X  DefineEValue(p, 0x1000L, "Button5");
X
X  p = DefineType(SETofKEYMASK, SET, "SETofKEYMASK", PrintSET);
X  DefineEValue(p, 0x0001L, "Shift");
X  DefineEValue(p, 0x0002L, "Lock");
X  DefineEValue(p, 0x0004L, "Control");
X  DefineEValue(p, 0x0008L, "Mod1");
X  DefineEValue(p, 0x0010L, "Mod2");
X  DefineEValue(p, 0x0020L, "Mod3");
X  DefineEValue(p, 0x0040L, "Mod4");
X  DefineEValue(p, 0x0080L, "Mod5");
X  DefineEValue(p, 0x8000L, "AnyModifier");
X
X  p = DefineType(COLORMASK, SET, "COLORMASK", PrintSET);
X  DefineEValue(p, 0x01L, "do-red");
X  DefineEValue(p, 0x02L, "do-green");
X  DefineEValue(p, 0x04L, "do-blue");
X
X  p = DefineType(SCREENFOCUS, SET, "SCREENFOCUS", PrintSET);
X  DefineEValue(p, 0x01L, "focus");
X  DefineEValue(p, 0x02L, "same-screen");
X}
X
X
X/* ************************************************************ */
X/*								*/
X/*								*/
X/* ************************************************************ */
X
X/* Print Routines for builtin record types */
X
XPrintCHAR2B(buf)
X     unsigned char *buf;
X{
X  PrintField(buf, 0, 1, CARD8, "byte1");
X  PrintField(buf, 1, 1, CARD8, "byte2");
X}
X
XPrintPOINT(buf)
X     unsigned char *buf;
X{
X  PrintField(buf, 0, 2, INT16, "x");
X  PrintField(buf, 2, 2, INT16, "y");
X  return(4);
X}
X
XPrintRECTANGLE(buf)
X     unsigned char *buf;
X{
X  PrintField(buf, 0, 2, INT16, "x");
X  PrintField(buf, 2, 2, INT16, "y");
X  PrintField(buf, 4, 2, CARD16, "width");
X  PrintField(buf, 6, 2, CARD16, "height");
X  return(8);
X}
X
XPrintARC(buf)
X     unsigned char *buf;
X{
X  PrintField(buf, 0, 2, INT16, "x");
X  PrintField(buf, 2, 2, INT16, "y");
X  PrintField(buf, 4, 2, CARD16, "width");
X  PrintField(buf, 6, 2, CARD16, "height");
X  PrintField(buf, 8, 2, INT16, "angle1");
X  PrintField(buf, 10, 2, INT16, "angle2");
X  return(12);
X}
X
XPrintHOST(buf)
X     unsigned char *buf;
X{
X  short   n;
X  PrintField(buf, 0, 1, HOSTFAMILY, "family");
X  PrintField(buf, 2, 2, DVALUE2(n), "length of address");
X  n = IShort(&buf[2]);
X  PrintList(&buf[4], (long)n, BYTE, "address");
X  return(pad((long)(4 + n)));
X}
X
XPrintTIMECOORD(buf)
X     unsigned char *buf;
X{
X  PrintField(buf, 0, 4, TIMESTAMP, "time");
X  PrintField(buf, 4, 2, CARD16, "x");
X  PrintField(buf, 6, 2, CARD16, "y");
X  return(8);
X}
X
XPrintFONTPROP(buf)
X     unsigned char *buf;
X{
X  PrintField(buf, 0, 4, ATOM, "name");
X  PrintField(buf, 4, 4, INT32, "value");
X  return(8);
X}
X
XPrintCHARINFO(buf)
X     unsigned char *buf;
X{
X  PrintField(buf, 0, 2, INT16, "left-side-bearing");
X  PrintField(buf, 2, 2, INT16, "right-side-bearing");
X  PrintField(buf, 4, 2, INT16, "character-width");
X  PrintField(buf, 6, 2, INT16, "ascent");
X  PrintField(buf, 8, 2, INT16, "descent");
X  PrintField(buf, 10, 2, CARD16, "attributes");
X  return(12);
X}
X
XPrintSEGMENT(buf)
X     unsigned char *buf;
X{
X  PrintField(buf, 0, 2, INT16, "x1");
X  PrintField(buf, 2, 2, INT16, "y1");
X  PrintField(buf, 4, 2, INT16, "x2");
X  PrintField(buf, 6, 2, INT16, "y2");
X  return(8);
X}
X
XPrintCOLORITEM(buf)
X     unsigned char *buf;
X{
X  PrintField(buf, 0, 4, CARD32, "pixel");
X  PrintField(buf, 4, 2, CARD16, "red");
X  PrintField(buf, 6, 2, CARD16, "green");
X  PrintField(buf, 8, 2, CARD16, "blue");
X  PrintField(buf, 10, 1, COLORMASK, "component selector");
X  return(12);
X}
X
XPrintRGB(buf)
X     unsigned char *buf;
X{
X  PrintField(buf, 0, 2, CARD16, "red");
X  PrintField(buf, 2, 2, CARD16, "green");
X  PrintField(buf, 4, 2, CARD16, "blue");
X  return(8);
X}
X
XPrintFORMAT(buf)
X     unsigned char *buf;
X{
X  PrintField(buf, 0, 1, CARD8, "depth");
X  PrintField(buf, 1, 1, CARD8, "bits-per-pixel");
X  PrintField(buf, 2, 1, CARD8, "scanline-pad");
X  return(8);
X}
X
XPrintSCREEN(buf)
X     unsigned char *buf;
X{
X  short   n /* number of elements in List of DEPTH */ ;
X  long    m /* length (in bytes) of List of DEPTH */ ;
X
X  PrintField(buf, 0, 4, WINDOW, "root");
X  PrintField(buf, 4, 4, COLORMAP, "default-colormap");
X  PrintField(buf, 8, 4, CARD32, "white-pixel");
X  PrintField(buf, 12, 4, CARD32, "black-pixel");
X  PrintField(buf, 16, 4, SETofEVENT, "current-input-masks");
X  PrintField(buf, 20, 2, CARD16, "width-in-pixels");
X  PrintField(buf, 22, 2, CARD16, "height-in-pixels");
X  PrintField(buf, 24, 2, CARD16, "width-in-millimeters");
X  PrintField(buf, 26, 2, CARD16, "height-in-millimeters");
X  PrintField(buf, 28, 2, CARD16, "min-installed-maps");
X  PrintField(buf, 30, 2, CARD16, "max-installed-maps");
X  PrintField(buf, 32, 4, VISUALID, "root-visual");
X  PrintField(buf, 36, 1, BACKSTORE, "backing-stores");
X  PrintField(buf, 37, 1, BOOL, "save-unders");
X  PrintField(buf, 38, 1, CARD8, "root-depth");
X  PrintField(buf, 39, 1, CARD8, "number of allowed-depths");
X  n = IByte(&buf[39]);
X  m = PrintList(&buf[40], (long)n, DEPTH, "allowed-depths");
X  return(40 + m);
X}
X
XPrintDEPTH(buf)
X     unsigned char *buf;
X{
X  short   n /* number of elements in List of VISUALTYPE */ ;
X  short   m /* length (in bytes) of List of VISUALTYPE */ ;
X
X  PrintField(buf, 0, 1, CARD8, "depth");
X  PrintField(buf, 2, 2, DVALUE2(n), "number of visuals");
X  n = IShort(&buf[2]);
X  m = PrintList(&buf[8], (long)n, VISUALTYPE, "visuals");
X  return(8 + m);
X}
X
XPrintVISUALTYPE(buf)
X     unsigned char *buf;
X{
X  PrintField(buf, 0, 4, VISUALID, "visual-id");
X  PrintField(buf, 4, 1, COLORCLASS, "class");
X  PrintField(buf, 5, 1, CARD8, "bits-per-rgb-value");
X  PrintField(buf, 6, 2, CARD16, "colormap-entries");
X  PrintField(buf, 8, 4, CARD32, "red-mask");
X  PrintField(buf, 12, 4, CARD32, "green-mask");
X  PrintField(buf, 16, 4, CARD32, "blue-mask");
X  return(24);
X}
X
X/* ************************************************************ */
X
XInitRecordTypes()
X{
X  (void) DefineType(CHAR2B, RECORD, "CHAR2B", PrintCHAR2B);
X  (void) DefineType(POINT, RECORD, "POINT", PrintPOINT);
X  (void) DefineType(RECTANGLE, RECORD, "RECTANGLE", PrintRECTANGLE);
X  (void) DefineType(ARC, RECORD, "ARC", PrintARC);
X  (void) DefineType(HOST, RECORD, "HOST", PrintHOST);
X  (void) DefineType(TIMECOORD, RECORD, "TIMECOORD", PrintTIMECOORD);
X  (void) DefineType(FONTPROP, RECORD, "FONTPROP", PrintFONTPROP);
X  (void) DefineType(CHARINFO, RECORD, "CHARINFO", PrintCHARINFO);
X  (void) DefineType(SEGMENT, RECORD, "SEGMENT", PrintSEGMENT);
X  (void) DefineType(COLORITEM, RECORD, "COLORITEM", PrintCOLORITEM);
X  (void) DefineType(RGB, RECORD, "RGB", PrintRGB);
X  (void) DefineType(FORMAT, RECORD, "FORMAT", PrintFORMAT);
X  (void) DefineType(SCREEN, RECORD, "SCREEN", PrintSCREEN);
X  (void) DefineType(DEPTH, RECORD, "DEPTH", PrintDEPTH);
X  (void) DefineType(VISUALTYPE, RECORD, "VISUALTYPE", PrintVISUALTYPE);
X}
X
X
X
X/* ************************************************************ */
X/*								*/
X/*								*/
X/* ************************************************************ */
X
XInitValuesTypes()
X{
X  TYPE p;
X
X  p = DefineType(WINDOW_BITMASK, SET, "WINDOW_BITMASK", PrintSET);
X
X  DefineValues(p, 0x00000001L, 4, PIXMAPNPR, "background-pixmap");
X  DefineValues(p, 0x00000002L, 4, CARD32, "background-pixel");
X  DefineValues(p, 0x00000004L, 4, PIXMAPC, "border-pixmap");
X  DefineValues(p, 0x00000008L, 4, CARD32, "border-pixel");
X  DefineValues(p, 0x00000010L, 1, BITGRAVITY, "bit-gravity");
X  DefineValues(p, 0x00000020L, 1, WINGRAVITY, "win-gravity");
X  DefineValues(p, 0x00000040L, 1, BACKSTORE, "backing-store");
X  DefineValues(p, 0x00000080L, 4, CARD32, "backing-planes");
X  DefineValues(p, 0x00000100L, 4, CARD32, "backing-pixel");
X  DefineValues(p, 0x00000200L, 1, BOOL, "override-redirect");
X  DefineValues(p, 0x00000400L, 1, BOOL, "save-under");
X  DefineValues(p, 0x00000800L, 4, SETofEVENT, "event-mask");
X  DefineValues(p, 0x00001000L, 4, SETofDEVICEEVENT, "do-not-propagate-mask");
X  DefineValues(p, 0x00002000L, 4, COLORMAPC, "colormap");
X  DefineValues(p, 0x00004000L, 4, CURSOR, "cursor");
X
X  p = DefineType(CONFIGURE_BITMASK, SET, "CONFIGURE_BITMASK", PrintSET);
X  DefineValues(p, 0x0001L, 2, INT16, "x");
X  DefineValues(p, 0x0002L, 2, INT16, "y");
X  DefineValues(p, 0x0004L, 2, CARD16, "width");
X  DefineValues(p, 0x0008L, 2, CARD16, "height");
X  DefineValues(p, 0x0010L, 2, CARD16, "border-width");
X  DefineValues(p, 0x0020L, 4, WINDOW, "sibling");
X  DefineValues(p, 0x0040L, 1, STACKMODE, "stack-mode");
X
X  p = DefineType(GC_BITMASK, SET, "GC_BITMASK", PrintSET);
X  DefineValues(p, 0x00000001L, 1, GCFUNC, "function");
X  DefineValues(p, 0x00000002L, 4, CARD32, "plane-mask");
X  DefineValues(p, 0x00000004L, 4, CARD32, "foreground");
X  DefineValues(p, 0x00000008L, 4, CARD32, "background");
X  DefineValues(p, 0x00000010L, 2, CARD16, "line-width");
X  DefineValues(p, 0x00000020L, 1, LINESTYLE, "line-style");
X  DefineValues(p, 0x00000040L, 1, CAPSTYLE, "cap-style");
X  DefineValues(p, 0x00000080L, 1, JOINSTYLE, "join-style");
X  DefineValues(p, 0x00000100L, 1, FILLSTYLE, "fill-style");
X  DefineValues(p, 0x00000200L, 1, FILLRULE, "fill-rule");
X  DefineValues(p, 0x00000400L, 4, PIXMAP, "tile");
X  DefineValues(p, 0x00000800L, 4, PIXMAP, "stipple");
X  DefineValues(p, 0x00001000L, 2, INT16, "tile-stipple-x-origin");
X  DefineValues(p, 0x00002000L, 2, INT16, "tile-stipple-y-origin");
X  DefineValues(p, 0x00004000L, 4, FONT, "font");
X  DefineValues(p, 0x00008000L, 1, SUBWINMODE, "subwindow-mode");
X  DefineValues(p, 0x00010000L, 1, BOOL, "graphics-exposures");
X  DefineValues(p, 0x00020000L, 2, INT16, "clip-x-origin");
X  DefineValues(p, 0x00040000L, 2, INT16, "clip-y-origin");
X  DefineValues(p, 0x00080000L, 4, PIXMAP, "clip-mask");
X  DefineValues(p, 0x00100000L, 2, CARD16, "dash-offset");
X  DefineValues(p, 0x00200000L, 1, CARD8, "dashes");
X  DefineValues(p, 0x00400000L, 1, ARCMODE, "arc-mode");
X
X  p = DefineType(KEYBOARD_BITMASK, SET, "KEYBOARD_BITMASK", PrintSET);
X  DefineValues(p, 0x0001L, 1, INT8, "key-click-percent");
X  DefineValues(p, 0x0002L, 1, INT8, "bell-percent");
X  DefineValues(p, 0x0004L, 2, INT16, "bell-pitch");
X  DefineValues(p, 0x0008L, 2, INT16, "bell-duration");
X  DefineValues(p, 0x0010L, 1, CARD8, "led");
X  DefineValues(p, 0x0020L, 1, OFF_ON, "led-mode");
X  DefineValues(p, 0x0040L, 1, KEYCODE, "key");
X  DefineValues(p, 0x0080L, 1, OFF_ON, "auto-repeat-mode");
X}
END_OF_FILE
if test 38075 -ne `wc -c <'table11.c'`; then
    echo shar: \"'table11.c'\" unpacked with wrong size!
fi
# end of 'table11.c'
fi
echo shar: End of archive 1 \(of 4\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 4 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Mike Wexler(wyse!mikew)    Phone: (408)433-1000 x1330
Moderator of comp.sources.x