DEFINITION MODULE Traps; (* Module: Facility for handling traps Author: Ceriel J.H. Jacobs Version: $Id$ *) IMPORT EM; CONST ERRTOOLARGE = 64; (* stack size of process too large *) ERRTOOMANY = 65; (* too many nested traps + handlers *) ERRNORESULT = 66; (* no RETURN from function procedure *) ERRCARDOVFL = 67; (* CARDINAL overflow *) ERRFORLOOP = 68; (* value of FOR-loop control variable changed in loop *) ERRCARDUVFL = 69; (* CARDINAL underflow *) ERRINTERNAL = 70; (* Internal error; should not happen *) ERRUNIXSIG = 71; (* received unix signal *) TYPE TrapHandler = EM.TrapHandler; PROCEDURE InstallTrapHandler(t: TrapHandler): TrapHandler; (* Install a new trap handler, and return the previous one. Parameter of trap handler is the trap number. When a trap occurs, the default trap handler is re-installed before calling the new handler. *) PROCEDURE Message(str: ARRAY OF CHAR); (* Write message "str" on standard error, preceeded by filename and linenumber if possible *) PROCEDURE Trap(n: INTEGER); (* cause trap number "n" to occur *) END Traps.