MODULE; IMPORT View, JunoAST, JunoScope, JunoRT; VAR root: View.Root; modName: JunoAST.Id; scope: JunoScope.T; PROCEDURE ExternalProc SetupBind (mod: JunoAST.Id; scp: JunoScope.T; rt: View.Root) = BEGIN root := rt; modName := mod; scope := scp END SetupBind; PROCEDUREBind (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.