<<>> <> <> <> <> <> <<>> DIRECTORY Rope USING [ROPE]; PreDebug: CEDAR DEFINITIONS = BEGIN SIGANY: TYPE ~ UNSAFE SIGNAL ANY RETURNS ANY; ERRANY: TYPE ~ UNSAFE ERROR ANY; <> Explainer: TYPE = PROC [signalOrError: SIGANY, args: POINTER, registerData: REF] RETURNS [msg: Rope.ROPE ¬ NIL]; <> < {<>; CONTINUE}];>> RegisterSignalExplainer: PROC [signal: SIGANY, explain: Explainer ¬ NIL, data: REF ¬ NIL]; RegisterErrorExplainer: PROC [error: ERRANY, explain: Explainer ¬ NIL, data: REF ¬ NIL]; <> <<>> <> <<>> <> <<>> <> <<>> <> <<>> Raise: PROC [signalOrError: SIGANY, args: POINTER]; <> <> <<>> <> <> <<>> Protect: PROC [inner: PROC, rejectP: PROC [Rope.ROPE] RETURNS [BOOL]] RETURNS [ok: BOOL]; <> <<>> Explain: PROC [signalOrError: SIGANY, args: POINTER] RETURNS [Rope.ROPE]; <> <> <<>> END.