DIRECTORY Xl; XlEndianPrivate--PrincOps--: CEDAR DEFINITIONS SHARES Xl ~ BEGIN OPEN Xl; Endian: TYPE = {lsbFirst, msbFirst}; FourBytes: TYPE = MACHINE DEPENDENT RECORD [ lh, ll, hh, hl: BYTE ]; TwoBytes: TYPE = MACHINE DEPENDENT RECORD [ hi, lo: BYTE ]; communicationByteOrder: Endian = msbFirst; bitmapBitInByteOrder: Endian = msbFirst; hhOff: INT = 0; hlOff: INT = 1; lHOff: INT = 2; llOff: INT = 3; highOff: INT = 0; lowOff: INT = 1; Byte0: PROC [n: CARD32] RETURNS [BYTE] = INLINE { RETURN[LOOPHOLE[n, FourBytes].hh] }; Byte1: PROC [n: CARD32] RETURNS [BYTE] = INLINE { RETURN[LOOPHOLE[n, FourBytes].hl] }; Byte2: PROC [n: CARD32] RETURNS [BYTE] = INLINE { RETURN[LOOPHOLE[n, FourBytes].lh] }; Byte3: PROC [n: CARD32] RETURNS [BYTE] = INLINE { RETURN[LOOPHOLE[n, FourBytes].ll] }; Byte0Of16: PROC [n: CARD16] RETURNS [BYTE] = INLINE { RETURN[LOOPHOLE[n, TwoBytes].hi] }; Byte1Of16: PROC [n: CARD16] RETURNS [BYTE] = INLINE { RETURN[LOOPHOLE[n, TwoBytes].lo] }; InlineGet8: PROC [c: Connection] RETURNS [BYTE] ~ INLINE { byte: BYTE ~ ORD[c.getChar[c.recv]]; RETURN [byte] }; InlineGet16: PROC [c: Connection] RETURNS [CARD16] ~ INLINE { byte0: BYTE ~ ORD[c.getChar[c.recv]]; byte1: BYTE ~ ORD[c.getChar[c.recv]]; RETURN [byte0*256 + byte1] }; InlineGet32: PROC [c: Connection] RETURNS [CARD32] ~ INLINE { byte0: BYTE ~ ORD[c.getChar[c.recv]]; byte1: BYTE ~ ORD[c.getChar[c.recv]]; byte2: BYTE ~ ORD[c.getChar[c.recv]]; byte3: BYTE ~ ORD[c.getChar[c.recv]]; ln: FourBytes ~ [hh: byte0, hl: byte1, lh: byte2, ll: byte3]; RETURN [LOOPHOLE[ln]] }; InlineGetText8: PROC [text: REF TEXT, startPos: NAT] RETURNS [BYTE] = INLINE { RETURN [ORD[text[startPos]]] }; InlineGetText16: PROC [text: REF TEXT, startPos: NAT] RETURNS [CARD16] = INLINE { byte0: BYTE ~ ORD[text[startPos]]; byte1: BYTE ~ ORD[text[startPos+1]]; RETURN [byte0*256 + byte1] }; InlineGetText32: PROC [text: REF TEXT, startPos: NAT] RETURNS [CARD32] = INLINE { ln: FourBytes ~ [hh: ORD[text[startPos]], hl: ORD[text[startPos+1]], lh: ORD[text[startPos+2]], ll: ORD[text[startPos+3]]]; RETURN [LOOPHOLE[ln]] }; InlineGetExtension8: PROC [e: ExtensionEvent, startPos: NAT] RETURNS [BYTE] = INLINE { RETURN [e.bytes[startPos]] }; InlineGetExtension16: PROC [e: ExtensionEvent, startPos: NAT] RETURNS [CARD16] = INLINE { RETURN [e.bytes[startPos]*256 + e.bytes[startPos+1]] }; InlineGetExtension32: PROC [e: ExtensionEvent, startPos: NAT] RETURNS [CARD32] = INLINE { ln: FourBytes ~ [hh: e.bytes[startPos], hl: e.bytes[startPos+1], lh: e.bytes[startPos+2], ll: e.bytes[startPos+3]]; RETURN [LOOPHOLE[ln]] }; InlinePut8: PROC [c: Connection, val: BYTE] ~ INLINE { c.putChar[c.xmit, VAL[val]]; c.sent ¬ c.sent + 1 }; InlinePut16: PROC [c: Connection, val: CARD16] ~ INLINE { c.putChar[c.xmit, VAL[Byte0Of16[val]]]; c.putChar[c.xmit, VAL[Byte1Of16[val]]]; c.sent ¬ c.sent + 2 }; InlinePut32: PROC [c: Connection, val: CARD32] ~ INLINE { l: FourBytes ~ LOOPHOLE[val]; c.putChar[c.xmit, VAL[l.hh]]; c.putChar[c.xmit, VAL[l.hl]]; c.putChar[c.xmit, VAL[l.lh]]; c.putChar[c.xmit, VAL[l.ll]]; c.sent ¬ c.sent + 4 }; END. ’ XlEndianPrivate-PrincOps.mesa Copyright Σ 1989, 1991 by Xerox Corporation. All rights reserved. Christian Jacobi, February 1, 1989 2:52:14 pm PST Christian Jacobi, March 7, 1991 4:14 pm PST Endian specific private types for Xl Types consider byte order of host [here crazy dorado] --byte order of host --byte order of host Procs consider byte order used for X protocol [here big endian] Κο–(cedarcode) style•NewlineDelimiter ™codešœ™Kšœ Οeœ7™BKšœ.Οk™1Kšœ+™+K™—Kšž œ˜ K˜šΟnΟc œžœž œ˜/Kšžœ˜ —Kšžœžœžœ˜K˜Kšœ"ž™$K˜Kšœžœ˜$K™K™6K˜š œ žœžœž œžœ˜,Kšœž˜Kšœ˜Kš ™K™—š œ žœžœž œžœ˜+Kšœž˜ Kšœ˜Kš ™K™—K™@K˜Kšœ*˜*Kšœ(˜(K˜Kšœžœ˜Kšœžœ˜Kšœžœ˜Kšœžœ˜Kšœ žœ˜Kšœžœ˜K˜š Ÿœžœžœžœžœ˜&Kšœžœžœžœ˜/K˜—š Ÿœžœžœžœžœ˜&Kšœžœžœžœ˜/K˜—š Ÿœžœžœžœžœ˜&Kšœžœžœžœ˜/K˜—š Ÿœžœžœžœžœ˜&Kšœžœžœžœ˜/K˜—š Ÿ œžœžœžœžœ˜*Kšœžœžœžœ˜.K˜—š Ÿ œžœžœžœžœ˜*Kšœžœžœžœ˜.—K˜š Ÿ œžœžœžœžœ˜:Kšœžœžœ˜$Kšžœ˜ Kšœ˜K˜—š Ÿ œžœžœžœžœ˜=Kšœžœžœ˜%Kšœžœžœ˜%Kšžœ˜Kšœ˜—K˜š Ÿ œžœžœžœžœ˜=Kšœžœžœ˜%Kšœžœžœ˜%Kšœžœžœ˜%Kšœžœžœ˜%Kšœ=˜=Kšžœžœ˜Kšœ˜K˜—šŸœžœžœžœ žœžœžœžœ˜NKšžœžœ˜K˜K˜—šŸœžœžœžœ žœžœžœžœ˜QKšœžœžœ˜"Kšœžœžœ˜$Kšžœ˜K˜K˜—šŸœžœžœžœ žœžœžœžœ˜QKš œžœžœžœžœ˜{Kšžœžœ˜K˜—K˜š Ÿœžœžœžœžœžœ˜VKšžœ˜K˜K˜—š Ÿœžœžœžœžœžœ˜YKšžœ.˜4K˜K˜—š Ÿœžœžœžœžœžœ˜YKšœs˜sKšžœžœ˜K˜—K˜šŸ œžœžœžœ˜6Kšœžœ˜Kšœ˜Kšœ˜K˜—šŸ œžœžœžœ˜9Kšœžœ˜(Kšœžœ˜(Kšœ˜Kšœ˜K˜—šŸ œžœžœžœ˜9Kšœžœ˜Kšœžœ ˜Kšœžœ ˜Kšœžœ ˜Kšœžœ ˜Kšœ˜Kšœ˜—K˜Kšžœ˜K˜—…— (©