-- Copyright (C) 1985, 1986 by Xerox Corporation. All rights reserved. -- CString.mesa -- NFS 18-Dec-85 10:34:20 -- MEW 18-Jan-86 13:17:29 -- Routines for coversions between Mesa strings and C strings. DIRECTORY Environment USING [Byte], ESCAlpha, Mopcodes, MopcodesExtraST USING [zMBP, zRBP, zWBP], PrincOpsExtrasBP USING [BytePointer]; CString: DEFINITIONS = { CString: TYPE = PrincOpsExtrasBP.BytePointer; ToBytePointer: PROCEDURE [LONG POINTER] RETURNS [CString] = MACHINE CODE BEGIN MopcodesExtraST.zMBP END; ToWordPointer: PROCEDURE [CString] RETURNS [LONG POINTER] = MACHINE CODE BEGIN Mopcodes.zLIN1; Mopcodes.zLIW, 177B, 377B; Mopcodes.zESC, ESCAlpha.aDAND; Mopcodes.zLIN1; Mopcodes.zESC, ESCAlpha.aDSHIFT END; ReadChar: PROCEDURE [CString] RETURNS [CHARACTER] = MACHINE CODE BEGIN MopcodesExtraST.zRBP, 0 END; ReadByte: PROCEDURE [CString] RETURNS [Environment.Byte] = MACHINE CODE BEGIN MopcodesExtraST.zRBP, 0 END; WriteChar: PROCEDURE [CHARACTER, CString] = MACHINE CODE BEGIN MopcodesExtraST.zWBP, 0 END; WriteByte: PROCEDURE [Environment.Byte, CString] = MACHINE CODE BEGIN MopcodesExtraST.zWBP, 0 END; IncrBPointer: PROCEDURE [p: CString] RETURNS [CString] = INLINE BEGIN RETURN[LOOPHOLE[p.pointer + 1, CString]] END; DecrBPointer: PROCEDURE [p: CString] RETURNS [CString] = INLINE BEGIN RETURN[LOOPHOLE[p.pointer - 1, CString]] END; AddToBPointer: PROCEDURE [p: CString, i: INTEGER] RETURNS [CString] = INLINE BEGIN RETURN[LOOPHOLE[p.pointer + i, CString]] END; CStringToString: PROCEDURE [cs: CString, z: MDSZone] RETURNS [STRING]; CStringToLongString: PROCEDURE [cs: CString, z: UNCOUNTED ZONE] RETURNS [LONG STRING]; StringToCString: PROCEDURE [s: STRING, z: UNCOUNTED ZONE] RETURNS [CString]; LongStringToCString: PROCEDURE [s: LONG STRING, z: UNCOUNTED ZONE] RETURNS [CString]; }.