Copyright (C) 1992, Digital Equipment Corporation
All rights reserved.
See the file COPYRIGHT for a full description.
Last modified on Fri Feb 4 11:33:17 PST 2000 by heydon
MODULE PrintImpl;
IMPORT ExternalProc;
FROM ExternalProc IMPORT Closure, Bind;
IMPORT JunoScope, JunoValue, RTVal;
IMPORT JunoArgs;
IMPORT Atom, Stdio, Thread, Wr;
<* FATAL Thread.Alerted, Wr.Failure *>
VAR (*CONST*)
PrintAtom := Atom.FromText("Print");
Val := Atom.FromText("Val");
PROCEDURE New(): JunoScope.Mod =
VAR
scp := JunoScope.New(NIL, size := 6);
res := NEW(JunoScope.Mod, public_scp := scp, scp := scp);
BEGIN
ExternalProc.SetupBind(PrintAtom, scp);
Bind(Val, NEW(Closure, invoke := ValProc), in := 1, out := 0);
RETURN res
END New;
PROCEDURE ValProc(<*UNUSED*> cl: Closure): BOOLEAN =
BEGIN
JunoValue.Unparse(Stdio.stdout, RTVal.ToJV(JunoArgs.ReadValue(1)));
Wr.PutChar(Stdio.stdout, '\n');
Wr.Flush(Stdio.stdout);
RETURN TRUE
END ValProc;
BEGIN
END PrintImpl.