Copyright (C) 1992, Digital Equipment Corporation
All rights reserved.
See the file COPYRIGHT for a full description.
Last modified on Thu Jun 9 13:14:37 PDT 1994 by heydon
UNSAFE MODULE WriteVal;
IMPORT JunoMarshal;
PROCEDURE Grow(VAR (*IO*) code: Code; endLoc: CARDINAL) =
BEGIN
IF endLoc > LAST(code^) THEN
VAR new := NEW(Code, 2 * NUMBER(code^)); BEGIN
SUBARRAY(new^, 0, NUMBER(code^)) := code^;
code := new
END
END
END Grow;
PROCEDURE UShort(VAR (*IO*) code: Code;
VAR (*IO*) loc: CARDINAL; v: CARDINAL) =
BEGIN
Grow(code, loc + JunoMarshal.UShortSize);
VAR a: JunoMarshal.BytePtr := ADR(code[loc]); BEGIN
JunoMarshal.WriteUShort(a, v);
loc := a - ADR(code[0])
END
END UShort;
PROCEDURE Short(VAR (*IO*) code: Code; VAR (*IO*) loc: CARDINAL; v: INTEGER) =
BEGIN
Grow(code, loc + JunoMarshal.ShortSize);
VAR a: JunoMarshal.BytePtr := ADR(code[loc]); BEGIN
JunoMarshal.WriteShort(a, v);
loc := a - ADR(code[0])
END
END Short;
PROCEDURE ULong(VAR (*IO*) code: Code;
VAR (*IO*) loc: CARDINAL; v: CARDINAL) =
BEGIN
Grow(code, loc + JunoMarshal.ULongSize);
VAR a: JunoMarshal.BytePtr := ADR(code[loc]); BEGIN
JunoMarshal.WriteULong(a, v);
loc := a - ADR(code[0])
END
END ULong;
PROCEDURE Real(VAR (*IO*) code: Code; VAR (*IO*) loc: CARDINAL; v: JVReal) =
BEGIN
Grow(code, loc + JunoMarshal.RealSize);
VAR a: JunoMarshal.BytePtr := ADR(code[loc]); BEGIN
JunoMarshal.WriteReal(a, v);
loc := a - ADR(code[0])
END
END Real;
BEGIN
END WriteVal.