(* Copyright (C) 1992, Digital Equipment Corporation *) (* All rights reserved. *) (* See the file COPYRIGHT for a full description. *) (* *) (* Last modified on Wed Jun 8 18:58:11 PDT 1994 by heydon *) INTERFACE WriteVal; IMPORT JunoRT, JunoValue; (* The procedures in this interface write values of various types into a byte stream. All procedures take to VAR (*INOUT*) variables: a byte stream "code" and an offset in that bytestream. The instructions first test if the bytestream is long enough; if not, they set "code" to a new bytesteam with the same prefix (up to location "loc") that is large enough. These procedures also advance "loc" to point to the byte in the stream after the last one written for the value. *) TYPE Code = JunoRT.ByteStream; JVReal = JunoValue.Real; PROCEDURE UShort(VAR (*IO*) code: Code; VAR (*IO*) loc: CARDINAL; v: CARDINAL); (* Write "v" as an unsigned 16-bit value to "code" at location "loc". *) PROCEDURE Short(VAR (*IO*) code: Code; VAR (*IO*) loc: CARDINAL; v: INTEGER); (* Write "v" as a signed 16-bit value to "code" at location "loc". *) PROCEDURE ULong(VAR (*IO*) code: Code; VAR (*IO*) loc: CARDINAL; v: CARDINAL); (* Write "v" as an unsigned 32-bit value to "code" at location "loc". *) PROCEDURE Real(VAR (*IO*) code: Code; VAR (*IO*) loc: CARDINAL; v: JVReal); (* Write "v" as a real number to "code" at location "loc". *) END WriteVal.