Article View: vmsnet.sources
Article #110XSCOPE/VMS 1.0, part 07/08
From: Patrick L. Mahan - TGV Window Wa...
Date: Fri, 04 Sep 1992 05:34
Date: Fri, 04 Sep 1992 05:34
1454 lines
50518 bytes
50518 bytes
Submitted-by: mahan@tgv.com (Patrick L. Mahan - TGV Window Washer)
Posting-number: Volume 3, Issue 159
Archive-name: xscope/part07
-+-+-+-+-+-+-+-+ START OF PART 7 -+-+-+-+-+-+-+-+
X sec = tp.tv_sec - ZeroTime1;
X hsec = tp.tv_usec / 10000 - ZeroTime2;
X if (hsec < 0)
X `7B
X hsec += 100;
X sec -= 1;
X `7D
X fprintf(stdout, "%2d.%02ld: ", sec, hsec);
X`7D
X
X/* ************************************************************ */
X/*`09`09`09`09`09`09`09`09*/
X/*`09`09`09`09`09`09`09`09*/
X/* ************************************************************ */
X
X/* we will need to be able to interpret the values stored in the
X requests as various built-in types. The following routines
X support the types built into X11 */
X
Xlong pad (n)
X long n;
X`7B
X /* round up to next multiple of 4 */
X return((n + 3) & `7E0x3);
X`7D
X
Xextern int littleEndian;
X
Xunsigned long ILong (buf)
X unsigned char buf`5B`5D;
X`7B
X if (littleEndian)
X return((((((buf`5B3`5D << 8) `7C buf`5B2`5D) << 8) `7C buf`5B1`5D) << 8)
V `7C buf`5B0`5D);
X return((((((buf`5B0`5D << 8) `7C buf`5B1`5D) << 8) `7C buf`5B2`5D) << 8) `
V7C buf`5B3`5D);
X`7D
X
Xunsigned short IShort (buf)
Xunsigned char buf`5B`5D;
X`7B
X if (littleEndian)
X return (buf`5B1`5D << 8) `7C buf`5B0`5D;
X return((buf`5B0`5D << 8) `7C buf`5B1`5D);
X`7D
X
Xunsigned short IByte (buf)
Xunsigned char buf`5B`5D;
X`7B
X return(buf`5B0`5D);
X`7D
X
XBoolean IBool(buf)
X unsigned char buf`5B`5D;
X`7B
X if (buf`5B0`5D != 0)
X return(true);
X else
X return(false);
X`7D
X
X
X/* ************************************************************ */
X/*`09`09`09`09`09`09`09`09*/
X/*`09`09`09`09`09`09`09`09*/
X/* ************************************************************ */
X
X/* we will need to save bytes until we get a complete request to
X interpret. The following procedures provide this ability */
X
XSaveBytes(fd, buf, n)
X FD fd;
X unsigned char *buf;
X long n;
X`7B
X /* check if there is enough space to hold the bytes we want */
X if (CS`5Bfd`5D.NumberofSavedBytes + n > CS`5Bfd`5D.SizeofSavedBytes)
X `7B
X /* not enough room so far; malloc more space and copy */
X long SizeofNewBytes = (CS`5Bfd`5D.NumberofSavedBytes + n + 1);
X#ifdef vax11c
X unsigned char *NewBytes = (unsigned char *)MyMalloc (SizeofNewBytes)
V;
X#else
X unsigned char *NewBytes = (unsigned char *)Malloc (SizeofNewBytes);
X#endif /* vax11c */
X bcopy(/* from */(char *)CS`5Bfd`5D.SavedBytes,
X`09 /* to */(char *)NewBytes,
X`09 /* count */(int)CS`5Bfd`5D.SizeofSavedBytes);
X#ifdef vax11c
X MyFree((char *)CS`5Bfd`5D.SavedBytes);
X#else
X Free((char *)CS`5Bfd`5D.SavedBytes);
X#endif /* vax11c */
X CS`5Bfd`5D.SavedBytes = NewBytes;
X CS`5Bfd`5D.SizeofSavedBytes = SizeofNewBytes;
X `7D
X
X /* now copy the new bytes onto the end of the old bytes */
X bcopy(/* from */(char *)buf,
X`09/* to */(char *)(CS`5Bfd`5D.SavedBytes + CS`5Bfd`5D.NumberofSavedBytes
V),
X`09/* count */(int)n);
X CS`5Bfd`5D.NumberofSavedBytes += n;
X`7D
X
XRemoveSavedBytes(fd, n)
X FD fd;
X long n;
X`7B
X /* check if all bytes are being removed -- easiest case */
X if (CS`5Bfd`5D.NumberofSavedBytes <= n)
X CS`5Bfd`5D.NumberofSavedBytes = 0;
X else if (n == 0)
X return;
X else
X `7B
X /* not all bytes are being removed -- shift the remaining ones down *
V/
X register unsigned char *p = CS`5Bfd`5D.SavedBytes;
X register unsigned char *q = CS`5Bfd`5D.SavedBytes + n;
X register long i = CS`5Bfd`5D.NumberofSavedBytes - n;
X while (i-- > 0)
X`09*p++ = *q++;
X CS`5Bfd`5D.NumberofSavedBytes -= n;
X `7D
X`7D
X
X
X/* ************************************************************ */
X/*`09`09`09`09`09`09`09`09*/
X/*`09`09`09`09`09`09`09`09*/
X/* ************************************************************ */
X
X
X/* following are the possible values for ByteProcessing */
X/* forward declarations */
Xlong StartSetUpMessage ();
Xlong FinishSetUpMessage ();
Xlong StartRequest ();
Xlong FinishRequest ();
X
Xlong StartSetUpReply ();
Xlong FinishSetUpReply ();
Xlong ServerPacket ();
Xlong FinishReply ();
X
X
X/* ************************************************************ */
X/*`09`09`09`09`09`09`09`09*/
X/*`09`09`09`09`09`09`09`09*/
X/* ************************************************************ */
X
Xint littleEndian;
X
XProcessBuffer(fd, buf, n)
X FD fd;
X unsigned char *buf;
X long n;
X`7B
X unsigned char *BytesToProcess;
X long NumberofUsedBytes;
X
X /* as long as we have enough bytes to do anything -- do it */
X
X littleEndian = CS`5Bfd`5D.littleEndian;
X while (CS`5Bfd`5D.NumberofSavedBytes + n >= CS`5Bfd`5D.NumberofBytesNeeded
V)
X `7B
X /*
X`09we have enough bytes to do something. We want the bytes to be
X`09grouped together into one contiguous block of bytes. We have three
X`09cases:
X
X`09(1) NumberofSavedBytes = 0; so all needed bytes are in the
X`09read buffer, buf.
X
X`09(2) NumberofSavedBytes >= NumberofBytesNeeded;`09in this case we
X`09will not need to copy any extra bytes into the save buffer.
X
X`09(3) 0 < NumberofSavedBytes < NumberofBytesNeeded; so
X`09some bytes are in the save buffer and others are in the read
X`09buffer. In this case we need to copy some of the bytes from the
X`09read buffer to the save buffer to get as many bytes as we need,
X`09then use these bytes.
X */
X
X if (CS`5Bfd`5D.NumberofSavedBytes == 0)
X`09`7B
X`09 /* no saved bytes, so just process the first bytes in the
X`09 read buffer */
X`09 BytesToProcess = buf /* address of request bytes */;
X`09`7D
X else
X`09`7B
X`09 if (CS`5Bfd`5D.NumberofSavedBytes < CS`5Bfd`5D.NumberofBytesNeeded)
X`09 `7B
X`09 /* first determine the number of bytes we need to
X`09`09 transfer; then transfer them and remove them from
X`09`09 the read buffer. (there may be additional requests
X`09`09 in the read buffer) */
X`09 long m;
X`09 m = CS`5Bfd`5D.NumberofBytesNeeded - CS`5Bfd`5D.NumberofSavedBytes;
X`09 SaveBytes(fd, buf, m);
X`09 buf += m;
X`09 n -= m;
X`09 `7D
X`09 BytesToProcess = CS`5Bfd`5D.SavedBytes /* address of request bytes */;
X`09`7D
X
X /*
X`09BytesToProcess points to a contiguous block of NumberofBytesNeeded
X`09bytes that we should process. The type of processing depends upon
X`09the state we are in. The processing routine should return the
X`09number of bytes that it actually used.
X */
X NumberofUsedBytes = (*CS`5Bfd`5D.ByteProcessing)
X (fd, BytesToProcess, CS`5Bfd`5D.NumberofBytesNe
Veded);
X
X /* the number of bytes that were actually used is normally (but not
X`09 always) the number of bytes needed. Discard the bytes that were
X`09 actually used, not the bytes that were needed. The number of used
X`09 bytes must be less than or equal to the number of needed bytes. */
X
X if (NumberofUsedBytes > 0)
X`09`7B
X`09 if (CS`5Bfd`5D.NumberofSavedBytes > 0)
X`09 RemoveSavedBytes(fd, NumberofUsedBytes);
X`09 else
X`09 `7B
X`09 /* there are no saved bytes, so the bytes that were
X`09`09 used must have been in the read buffer */
X`09 buf += NumberofUsedBytes;
X`09 n -= NumberofUsedBytes;
X`09 `7D
X`09`7D
X `7D /* end of while (NumberofSavedBytes + n >= NumberofBytesNeeded) */
X
X /* not enough bytes -- just save the new bytes for more later */
X if (n > 0)
X SaveBytes(fd, buf, n);
X return;
X`7D
X
X
X
X/* ************************************************************ */
X/*`09`09`09`09`09`09`09`09*/
X/*`09`09`09`09`09`09`09`09*/
X/* ************************************************************ */
X/*
X Byte Processing Routines. Each routine MUST set NumberofBytesNeeded
X and ByteProcessing. It probably needs to do some computation first.
X*/
X
X
XStartClientConnection(fd)
X FD fd;
X`7B
X enterprocedure("StartClientConnection");
X /* when a new connection is started, we have no saved bytes */
X CS`5Bfd`5D.SavedBytes = NULL;
X CS`5Bfd`5D.SizeofSavedBytes = 0;
X CS`5Bfd`5D.NumberofSavedBytes = 0;
X
X /* when a new connection is started, we have no reply Queue */
X FlushReplyQ(fd);
X
X /* each new connection gets a request sequence number */
X CS`5Bfd`5D.SequenceNumber = 0;
X
X /* we need 12 bytes to start a SetUp message */
X CS`5Bfd`5D.ByteProcessing = StartSetUpMessage;
X CS`5Bfd`5D.NumberofBytesNeeded = 12;
X`7D
X
XStopClientConnection(fd)
X FD fd;
X`7B
X enterprocedure("StopClientConnection");
X /* when a new connection is stopped, discard the old buffer */
X
X if (CS`5Bfd`5D.SizeofSavedBytes > 0)
X#ifdef vax11c
X MyFree((char*)CS`5Bfd`5D.SavedBytes);
X#else
X Free((char*)CS`5Bfd`5D.SavedBytes);
X#endif /* vax11c */
X`7D
X
Xlong StartSetUpMessage (fd, buf, n)
X FD fd;
X unsigned char *buf;
X long n;
X`7B
X short namelength;
X short datalength;
X
X enterprocedure("StartSetUpMessage");
X /*
X we need the first 12 bytes to be able to determine if, and how many,
X additional bytes we need for name and data authorization. However, we
X can't process the first 12 bytes until we get all of them, so
X return zero bytes used, and increase the number of bytes needed
X */
X
X namelength = IShort(&buf`5B6`5D);
X datalength = IShort(&buf`5B8`5D);
X CS`5Bfd`5D.ByteProcessing = FinishSetUpMessage;
X CS`5Bfd`5D.NumberofBytesNeeded = n
X + pad((long)namelength) + pad((long)datalengt
Vh);
X debug(8,(stderr, "need %d bytes to finish startup\n",
X`09 CS`5Bfd`5D.NumberofBytesNeeded - n));
X return(0);
X`7D
X
Xlong FinishSetUpMessage (fd, buf, n)
X FD fd;
X unsigned char *buf;
X long n;
X`7B
X enterprocedure("FinishSetUpMessage");
X CS`5Bfd`5D.littleEndian = (buf`5B0`5D == 'l');
X CS`5BServerHalf(fd)`5D.littleEndian = CS`5Bfd`5D.littleEndian;
X littleEndian = CS`5Bfd`5D.littleEndian;
X PrintSetUpMessage(buf);
X
X /* after a set-up message, we expect a string of requests */
X CS`5Bfd`5D.ByteProcessing = StartRequest;
X CS`5Bfd`5D.NumberofBytesNeeded = 4;
X return(n);
X`7D
X
X
Xlong StartRequest (fd, buf, n)
X FD fd;
X unsigned char *buf;
X long n;
X`7B
X short requestlength;
X enterprocedure("StartRequest");
X
X /* bytes 0,1 are ignored now; bytes 2,3 tell us the request length */
X requestlength = IShort(&buf`5B2`5D);
X CS`5Bfd`5D.ByteProcessing = FinishRequest;
X CS`5Bfd`5D.NumberofBytesNeeded = 4 * requestlength;
X debug(8,(stderr, "need %d more bytes to finish request\n",
X`09 CS`5Bfd`5D.NumberofBytesNeeded - n));
X return(0);
X`7D
X
X
Xlong FinishRequest (fd, buf, n)
X FD fd;
X unsigned char *buf;
X long n;
X`7B
X enterprocedure("FinishRequest");
X DecodeRequest(fd, buf, n);
X CS`5Bfd`5D.ByteProcessing = StartRequest;
X CS`5Bfd`5D.NumberofBytesNeeded = 4;
X return(n);
X`7D
X
X/* ************************************************************ */
X/*`09`09`09`09`09`09`09`09*/
X/*`09`09`09`09`09`09`09`09*/
X/* ************************************************************ */
X
XStartServerConnection(fd)
X FD fd;
X`7B
X enterprocedure("StartServerConnection");
X /* when a new connection is started, we have no saved bytes */
X CS`5Bfd`5D.SavedBytes = NULL;
X CS`5Bfd`5D.SizeofSavedBytes = 0;
X CS`5Bfd`5D.NumberofSavedBytes = 0;
X
X /* when a new connection is started, we have no reply Queue */
X FlushReplyQ(fd);
X
X /* we need 8 bytes to start a SetUp reply */
X CS`5Bfd`5D.ByteProcessing = StartSetUpReply;
X CS`5Bfd`5D.NumberofBytesNeeded = 8;
X`7D
X
XStopServerConnection(fd)
X FD fd;
X`7B
X enterprocedure("StopServerConnection");
X /* when a new connection is stopped, discard the old buffer */
X
X if (CS`5Bfd`5D.SizeofSavedBytes > 0)
X#ifdef vax11c
X MyFree((char *)CS`5Bfd`5D.SavedBytes);
X#else
X Free((char *)CS`5Bfd`5D.SavedBytes);
X#endif /* vax11c */
X`7D
X
Xlong StartSetUpReply (fd, buf, n)
X FD fd;
X unsigned char *buf;
X long n;
X`7B
X short replylength;
X
X enterprocedure("StartSetUpReply");
X replylength = IShort(&buf`5B6`5D);
X CS`5Bfd`5D.ByteProcessing = FinishSetUpReply;
X CS`5Bfd`5D.NumberofBytesNeeded = n + 4 * replylength;
X debug(8,(stderr, "need %d bytes to finish startup reply\n",
X`09 CS`5Bfd`5D.NumberofBytesNeeded - n));
X return(0);
X`7D
X
Xlong FinishSetUpReply (fd, buf, n)
X FD fd;
X unsigned char *buf;
X long n;
X`7B
X enterprocedure("FinishSetUpReply");
X PrintSetUpReply(buf);
X CS`5Bfd`5D.ByteProcessing = ServerPacket;
X CS`5Bfd`5D.NumberofBytesNeeded = 32;
X return(n);
X`7D
X
X/* ************************************************************ */
X
Xlong ErrorPacket (fd, buf, n)
X FD fd;
X unsigned char *buf;
X long n;
X`7B
X fprintf(stdout, "Error: ");
X DecodeError(fd, buf, n);
X CS`5Bfd`5D.ByteProcessing = ServerPacket;
X CS`5Bfd`5D.NumberofBytesNeeded = 32;
X return(n);
X`7D
X
X
Xlong EventPacket (fd, buf, n)
X FD fd;
X unsigned char *buf;
X long n;
X`7B
X DecodeEvent(fd, buf, n);
X CS`5Bfd`5D.ByteProcessing = ServerPacket;
X CS`5Bfd`5D.NumberofBytesNeeded = 32;
X return(n);
X`7D
X
X
Xlong ReplyPacket (fd, buf, n)
X FD fd;
X unsigned char *buf;
X long n;
X`7B
X short replylength;
X
X replylength = ILong(&buf`5B4`5D);
X
X /*
X Replies may need more bytes, so we compute how many more
X bytes are needed and ask for them, not using any of the bytes
X we were given (return(0) to say that no bytes were used).
X If the replylength is zero (we don't need any more bytes), the
X number of bytes needed will be the same as what we have, and
X so the top-level loop will call the next routine immediately
X with the same buffer of bytes that we were given.
X */
X
X CS`5Bfd`5D.ByteProcessing = FinishReply;
X CS`5Bfd`5D.NumberofBytesNeeded = n + 4 * replylength;
X debug(8,(stderr, "need %d bytes to finish reply\n", (4 * replylength)));
X return(0);
X`7D
X
Xlong ServerPacket (fd, buf, n)
X FD fd;
X unsigned char *buf;
X long n;
X`7B
X short PacketType;
X enterprocedure("ServerPacket");
X
X PacketType = IByte(&buf`5B0`5D);
X if (PacketType == 0)
X return(ErrorPacket(fd, buf, n));
X if (PacketType == 1)
X return(ReplyPacket(fd, buf, n));
X return(EventPacket(fd, buf, n));
X`7D
X
Xlong FinishReply (fd, buf, n)
X FD fd;
X unsigned char *buf;
X long n;
X`7B
X enterprocedure("FinishReply");
X DecodeReply(fd, buf, n);
X CS`5Bfd`5D.ByteProcessing = ServerPacket;
X CS`5Bfd`5D.NumberofBytesNeeded = 32;
X return(n);
X`7D
$ CALL UNPACK SERVER.C;10 355330808
$ create 'f'
X/* ************************************************** *
X *`09`09`09`09`09`09 *
X * Table initialization for X11 protocol`09 *
X *`09`09`09`09`09`09 *
X *`09James Peterson, 1988`09`09`09 *
X *`09(c) Copyright MCC, 1988 `09`09 *
X *`09`09`09`09`09`09 *
X * ************************************************** */
X#if defined(vax11c) && !defined(MULTINET)
X#include "emulationlib.h"
X#endif
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`7B
X InitReplyQ();
X
X InitBuiltInTypes();
X InitEnumeratedTypes();
X InitSetTypes();
X InitValuesTypes();
X InitRecordTypes();
X`7D
X
X/* ************************************************************ */
X/*`09`09`09`09`09`09`09`09*/
X/*`09`09`09`09`09`09`09`09*/
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`7B
X TD`5Btypeid`5D.Name = name;
X TD`5Btypeid`5D.Type = class;
X TD`5Btypeid`5D.ValueList = NULL;
X TD`5Btypeid`5D.PrintProc = printproc;
X return(&TD`5Btypeid`5D);
X`7D
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`7B
X struct ValueListEntry *p;
X
X /* define the new value */
X p = (struct ValueListEntry *)
X#ifdef vax11c
X MyMalloc ((long)(sizeof (struct ValueListEntry)));
X#else
X Malloc ((long)(sizeof (struct ValueListEntry)));
X#endif /* vax11c */
X p->Name = name;
X p->Value = value;
X
X /* add an new value to the list. */
X if (type->ValueList == NULL `7C`7C type->ValueList->Value > p->Value)
X `7B
X p->Next = type->ValueList;
X type->ValueList = p;
X `7D
X else
X `7B
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`09q = q->Next;
X p->Next = q->Next;
X q->Next = p;
X `7D
X`7D
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`7B
X struct ValueListEntry *p;
X
X p = (struct ValueListEntry *)
X#ifdef vax11c
X MyMalloc ((long)(sizeof (struct ValueListEntry))
V);
X#else
X Malloc ((long)(sizeof (struct ValueListEntry)));
X#endif /* vax11c */
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 `7C`7C type->ValueList->Value > p->Value)
X `7B
X p->Next = type->ValueList;
X type->ValueList = p;
X `7D
X else
X `7B
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`09q = q->Next;
X p->Next = q->Next;
X q->Next = p;
X `7D
X`7D
X
X
X
X/* ************************************************************ */
X
XInitBuiltInTypes()
X`7B
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`7D
X
X/* ************************************************************ */
X/*`09`09`09`09`09`09`09`09*/
X/*`09`09`09`09`09`09`09`09*/
X/* ************************************************************ */
X
XInitEnumeratedTypes()
X`7B
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`7D
X
X/* ************************************************************ */
X/*`09`09`09`09`09`09`09`09*/
X/*`09`09`09`09`09`09`09`09*/
X/* ************************************************************ */
X
XInitSetTypes()
X`7B
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`7D
X
X
X/* ************************************************************ */
X/*`09`09`09`09`09`09`09`09*/
X/*`09`09`09`09`09`09`09`09*/
X/* ************************************************************ */
X
X/* Print Routines for builtin record types */
X
XPrintCHAR2B(buf)
X unsigned char *buf;
X`7B
X PrintField(buf, 0, 1, CARD8, "byte1");
X PrintField(buf, 1, 1, CARD8, "byte2");
X`7D
X
XPrintPOINT(buf)
X unsigned char *buf;
X`7B
X PrintField(buf, 0, 2, INT16, "x");
X PrintField(buf, 2, 2, INT16, "y");
X return(4);
X`7D
X
XPrintRECTANGLE(buf)
X unsigned char *buf;
X`7B
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`7D
X
XPrintARC(buf)
X unsigned char *buf;
X`7B
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`7D
X
XPrintHOST(buf)
X unsigned char *buf;
X`7B
X short n;
X PrintField(buf, 0, 1, HOSTFAMILY, "family");
X PrintField(buf, 2, 2, DVALUE2(n), "length of address");
X n = IShort(&buf`5B2`5D);
X PrintList(&buf`5B4`5D, (long)n, BYTE, "address");
X return(pad((long)(4 + n)));
X`7D
X
XPrintTIMECOORD(buf)
X unsigned char *buf;
X`7B
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`7D
X
XPrintFONTPROP(buf)
X unsigned char *buf;
X`7B
X PrintField(buf, 0, 4, ATOM, "name");
X PrintField(buf, 4, 4, INT32, "value");
X return(8);
X`7D
X
XPrintCHARINFO(buf)
X unsigned char *buf;
X`7B
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`7D
X
XPrintSEGMENT(buf)
X unsigned char *buf;
X`7B
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`7D
X
XPrintCOLORITEM(buf)
X unsigned char *buf;
X`7B
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`7D
X
XPrintRGB(buf)
X unsigned char *buf;
X`7B
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`7D
X
XPrintFORMAT(buf)
X unsigned char *buf;
X`7B
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`7D
X
XPrintSCREEN(buf)
X unsigned char *buf;
X`7B
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");
+-+-+-+-+-+-+-+- END OF PART 7 +-+-+-+-+-+-+-+-
--
Patrick L. Mahan
--- TGV Window Washer ------------------------------- Mahan@TGV.COM ---------
Waking a person unnecessarily should not be considered - Lazarus Long
a capital crime. For a first offense, that is From the Notebooks of
Lazarus Long
Technical Details
Message-ID:
<8045410@MVB.SAIC.COM>Path:
arc1-ca.pugleaf.net!sparky!uunet!usc!news.service.uci.edu!unogate!mvb.saic.com!vmsnet-sourcesShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!usc!news.service.uci.edu!unogate!mvb.saic.com!vmsnet-sources From: mahan@tgv.com (Patrick L. Mahan - TGV Window Washer) Newsgroups: vmsnet.sources Subject: XSCOPE/VMS 1.0, part 07/08 Message-ID: <8045410@MVB.SAIC.COM> Date: Fri, 04 Sep 1992 05:34:37 GMT Reply-To: mahan@tgv.com Organization: TGV Incorporated (Tech Support) in Santa Cruz, CA Lines: 1455 Approved: Mark.Berryman@Mvb.Saic.Com