DIRECTORY Basics USING [BITSHIFT, bitsPerWord, BytePair, DIVMOD, LDIVMOD, LongDiv, LongDivMod, LongMult, LongNumber], PrincOpsUtils USING [BITAND, BITNOT, BitOp, BITOR, BITSHIFT, BITXOR, Copy, LongCopy]; Inline: DEFINITIONS IMPORTS Basics, PrincOpsUtils = BEGIN LongCARDINAL: TYPE = LONG CARDINAL; LongNumber: TYPE = Basics.LongNumber; COPY: PROCEDURE [from: POINTER, nwords: CARDINAL, to: POINTER] = PrincOpsUtils.Copy; LongCOPY: PROCEDURE [from: LONG POINTER, nwords: CARDINAL, to: LONG POINTER] = PrincOpsUtils.LongCopy; LongCOPYReverse: PROCEDURE [from: LONG POINTER, nwords: CARDINAL, to: LONG POINTER] = INLINE {FOR i: CARDINAL DECREASING IN [0..nwords) DO (to+i)^ _ (from+i)^ ENDLOOP}; DIVMOD: PROCEDURE [num, den: CARDINAL] RETURNS [quotient, remainder: CARDINAL] = Basics.DIVMOD; LDIVMOD: PROCEDURE [numlow: WORD, numhigh: CARDINAL, den: CARDINAL] RETURNS [quotient, remainder: CARDINAL] = Basics.LDIVMOD; LongMult: PROCEDURE [CARDINAL, CARDINAL] RETURNS [product: LONG CARDINAL] = Basics.LongMult; LongDiv: PROCEDURE [num: LONG CARDINAL, den: CARDINAL] RETURNS [CARDINAL] = Basics.LongDiv; LongDivMod: PROCEDURE [num: LONG CARDINAL, den: CARDINAL] RETURNS [quotient, remainder: CARDINAL] = Basics.LongDivMod; BitOp: TYPE = PROCEDURE [UNSPECIFIED, UNSPECIFIED] RETURNS [UNSPECIFIED]; BITAND: BitOp = PrincOpsUtils.BITAND; BITOR: BitOp = PrincOpsUtils.BITOR; BITXOR: BitOp = PrincOpsUtils.BITXOR; BITNOT: PROCEDURE [UNSPECIFIED] RETURNS [UNSPECIFIED] = PrincOpsUtils.BITNOT; BITSHIFT: PROCEDURE [value: UNSPECIFIED, count: INTEGER] RETURNS [UNSPECIFIED] = PrincOpsUtils.BITSHIFT; BITROTATE: PROCEDURE [value: UNSPECIFIED, count: INTEGER] RETURNS [UNSPECIFIED] = INLINE { count _ BITAND[count, Basics.bitsPerWord-1]; RETURN [Basics.BITSHIFT[value, count]+Basics.BITSHIFT[value, Basics.bitsPerWord-count]] }; LowHalf: PROCEDURE [u: LONG UNSPECIFIED] RETURNS [UNSPECIFIED] = INLINE BEGIN RETURN[LOOPHOLE[u, LongNumber].lowbits] END; HighHalf: PROCEDURE [u: LONG UNSPECIFIED] RETURNS [UNSPECIFIED] = INLINE BEGIN RETURN[LOOPHOLE[u, LongNumber].highbits] END; BytePair: TYPE = Basics.BytePair; LowByte: PROCEDURE [u: UNSPECIFIED] RETURNS [UNSPECIFIED] = INLINE BEGIN RETURN[LOOPHOLE[u, BytePair].low] END; HighByte: PROCEDURE [u: UNSPECIFIED] RETURNS [UNSPECIFIED] = INLINE BEGIN RETURN[LOOPHOLE[u, BytePair].high] END; UDDivMod: PROCEDURE [ num, den: LONG CARDINAL] RETURNS [quotient, remainder: LONG CARDINAL] = INLINE {quotient _ num/den; remainder _ num MOD den}; SDDivMod: PROCEDURE [ num, den: LONG INTEGER] RETURNS [quotient, remainder: LONG INTEGER] = INLINE {quotient _ num/den; remainder _ num MOD den}; DBitOp: TYPE = PROCEDURE [ a: LONG UNSPECIFIED, b: LONG UNSPECIFIED] RETURNS [LONG UNSPECIFIED]; Lng: PRIVATE PROCEDURE [lo, hi: UNSPECIFIED] RETURNS [LONG UNSPECIFIED] ~ MACHINE CODE {}; DBITAND: DBitOp = INLINE {RETURN [Lng[lo: BITAND[LowHalf[a], LowHalf[b]], hi: BITAND[HighHalf[a], HighHalf[b]]]]}; DBITOR: DBitOp = INLINE {RETURN [Lng[lo: BITOR[LowHalf[a], LowHalf[b]], hi: BITOR[HighHalf[a], HighHalf[b]]]]}; DBITXOR: DBitOp = INLINE {RETURN [Lng[lo: BITXOR[LowHalf[a], LowHalf[b]], hi: BITXOR[HighHalf[a], HighHalf[b]]]]}; DBITNOT: PROCEDURE [a: LONG UNSPECIFIED] RETURNS [LONG UNSPECIFIED] = INLINE {RETURN [Lng[lo: BITNOT[LowHalf[a]], hi: BITNOT[HighHalf[a]]]]}; DBITSHIFT: PROCEDURE [ value: LONG UNSPECIFIED, count: INTEGER] RETURNS [LONG UNSPECIFIED]; END. LOG Time: May 22, 1979 4:47 PM By: Lauer Action: Created file by renaming Mesa>System>InlineDefs.mesa Time: June 7, 1979 5:46 PM By: McJones Action: Fixed shift count in HighByte Time: January 25, 1980 4:01 PM By: Forrest Action: Equated Long number to Env.longNumber Time: January 27, 1981 5:33 PM By: Johnsson Action: Made High/LowMumble be INLINE instead of MACHINE CODE. Time: 22-Jul-81 12:01:07 By: JGS Action: Added double operations Time: 30-Mar-83 12:12:57 By: Johnsson Action: Added LongCOPYReverse Time: August 31, 1984 10:52:31 am PDT By: Plass Action: Created Cedar PilotBridge version from version of 30-Mar-83 12:13:17 PST ÀInline.mesa (last edited by: Plass on August 31, 1984 10:52:21 am PDT) Cedar PilotBridge version Copyright (C) Xerox Corporation 1982. All rights reserved. Not really Inline for Cedar �ʘJšœG™GJ™J˜Jšœ:™:J˜šÏk ˜ Jš œ�œ�œ�œ�œ-˜kJš œ�œ�œ�œ �œ�œ�œ˜UJ˜—šœ� œ�œ˜3Jš�˜J˜Jšœ�œ�œ�œ˜#J˜Jšœ �œ˜%J˜š �œ� œ�œ �œ�œ˜TJ˜—šÏnœ� œ�œ�œ �œ�œ�œ˜NJšœ˜J˜—šžœ� œ�œ�œ �œ�œ�œ˜UJš�œ�œ�œ� œ�œ �œ�œ˜RJ˜—š �œ� œ �œ�œ�œ˜PJšœ�œ˜J˜—š �œ� œ �œ �œ�œ˜CJš�œ�œ˜)Jšœ�œ˜J˜—šžœ� œ�œ�œ�œ �œ�œ˜KJšœ˜J˜—šžœ� œ�œ�œ�œ�œ�œ˜KJšœ˜J˜—š ž œ� œ�œ�œ�œ˜9Jš�œ�œ˜)Jšœ˜J˜J˜—Jšžœ�œ� œ� œ� œ�œ� œ˜IJ˜Jš�œ�œ˜%J˜Jš�œ�œ˜#J˜Jš�œ�œ˜%J˜š �œ� œ� œ�œ� œ˜8Jšœ�œ˜J˜—š �œ� œ � œ �œ�œ� œ˜PJšœ�œ˜J˜—š � œ� œ � œ �œ�œ� œ˜Qš�œ˜Jšœ�œ˜,Jš�œ �œ�œ"˜WJšœ˜—J˜J˜—š žœ� œ�œ� œ�œ� œ�˜GJš�œ�œ�œ�œ˜2J˜—š žœ� œ�œ� œ�œ� œ�˜HJš�œ�œ�œ�œ˜3J˜—Jšœ �œ˜!J˜š žœ� œ� œ�œ� œ�˜BJš�œ�œ�œ�œ˜,J˜—š žœ� œ� œ�œ� œ�˜CJš�œ�œ�œ�œ˜-J˜J˜J˜—šžœ� œ˜Jš œ �œ�œ�œ�œ�œ˜GJš�œ&�œ˜5J˜—šžœ� œ˜Jš œ �œ�œ�œ�œ�œ˜EJš�œ&�œ˜5J˜—šžœ�œ� œ˜Jšœ�œ� œ�œ� œ�œ�œ� œ˜EJ˜—šœ�œ� œ � œ�œ�œ� œ�œ�œ˜ZJ˜—Jš �œ �œ�œ �œ�œ˜rJ˜Jš �œ �œ�œ �œ�œ˜oJ˜Jš �œ �œ�œ �œ�œ˜rJ˜š�œ� œ�œ� œ�œ�œ� œ�œ�œ �œ�œ˜�J˜—š� œ� œ˜š œ�œ� œ �œ�œ�œ� œ˜DJ™—J˜J˜—Jš�œ˜—Jš�˜Jšœ�œG˜bJšœ�œ2˜MJšœ�œ:˜YJš œ�œ-�œ �œ�œ˜kJšœ�œ ˜@J˜CJšœ€˜€J˜—…—æ¬