Copyright (C) 1992, Digital Equipment Corporation
All rights reserved.
See the file COPYRIGHT for a full description.
Last modified on Tue Jun 20 21:06:24 PDT 1995 by heydon
MODULE ExternalProc;
IMPORT View, JunoAST, JunoScope, JunoRT;
VAR
root: View.Root;
modName: JunoAST.Id;
scope: JunoScope.T;
PROCEDURE SetupBind(mod: JunoAST.Id; scp: JunoScope.T; rt: View.Root) =
BEGIN
root := rt;
modName := mod;
scope := scp
END SetupBind;
PROCEDURE Bind(name: JunoAST.Id; cl: Closure; in, out := 0) =
<* FATAL JunoScope.NameClash *>
VAR
slot := JunoRT.GetExtCodeIndex(
JunoRT.ProcAttr{modName, name, JunoRT.Sig{out,0,in}});
BEGIN
cl.rt := root;
JunoRT.ext_code_tbl[slot] := cl;
JunoScope.Bind(scope, name, NEW(JunoScope.Proc, index := slot,
in_cnt := in, inout_cnt := 0, out_cnt := out, body := NIL,
external := TRUE))
END Bind;
BEGIN
END ExternalProc.