(* Copyright (C) 1992, Digital Equipment Corporation *) (* All rights reserved. *) (* See the file COPYRIGHT for a full description. *) (* *) (* Last modified on Wed Feb 8 09:43:52 PST 1995 by heydon *) INTERFACE JunoMarshal; IMPORT JunoRT, JunoValue; (* Encode bytecodes into a ByteStream, or decode them from it. All of these procedures move their "a" argument past the read or written value. *) TYPE BytePtr = UNTRACED REF JunoRT.ByteCode; Short = BITS 16 FOR [-16_8000 .. 16_7fff]; UShort = BITS 16 FOR [0 .. 16_ffff]; ULong = BITS 32 FOR [0 .. 16_7fffffff]; CONST ShortSize = BYTESIZE(Short); UShortSize = BYTESIZE(UShort); ULongSize = BYTESIZE(ULong); RealSize = BYTESIZE(JunoValue.Real); PROCEDURE ReadShort (VAR a: BytePtr): Short; PROCEDURE WriteShort (VAR a: BytePtr; i: Short); (* Read/write a signed 16-bit value. *) PROCEDURE ReadUShort (VAR a: BytePtr): UShort; PROCEDURE WriteUShort (VAR a: BytePtr; i: UShort); (* Read/write an unsigned 16-bit value. *) PROCEDURE ReadULong (VAR a: BytePtr): ULong; PROCEDURE WriteULong (VAR a: BytePtr; i: ULong); (* Read/write an unsigned 32-bit value. *) PROCEDURE ReadReal(VAR a: BytePtr): JunoValue.Real; PROCEDURE WriteReal(VAR a: BytePtr; r: JunoValue.Real); (* Read/write a real number. *) END JunoMarshal.