<<>> <> <> <> <<>> DIRECTORY FloatingPointCommon, FloatingPointPrivate; FloatingPointSoftImpl: CEDAR PROGRAM EXPORTS FloatingPointCommon, FloatingPointPrivate = BEGIN OPEN FloatingPointCommon, FloatingPointPrivate; currentState: PUBLIC FloatingState ¬ noCheck; SetState: PUBLIC PROC [new: FloatingState] RETURNS [old: FloatingState] = { old ¬ currentState; currentState ¬ noCheck; }; MesaFloatingSignalHandlerType: TYPE = PROC [code: Exception]; FloatingSignalHandler: MesaFloatingSignalHandlerType = {ERROR Error[code]}; Error: PUBLIC ERROR [code: Exception] = CODE; SupportedExceptionErrors: PUBLIC PROC RETURNS [ExceptionFlags] = { <> flags: ExceptionFlags ¬ NoExceptions; IF currentState # noCheck THEN { flags[invalidOperation] ¬ TRUE; flags[overflow] ¬ TRUE; flags[divisionByZero] ¬ TRUE; }; RETURN [flags]; }; <<>> SupportedStickyFlags: PUBLIC PROC RETURNS [ExceptionFlags] = { <> RETURN [NoExceptions]; }; GetStickyFlags: PUBLIC PROC RETURNS [ExceptionFlags] = { RETURN [NoExceptions]; }; SetStickyFlags: PUBLIC PROC [new: ExceptionFlags ¬ NoExceptions] RETURNS [old: ExceptionFlags] = { <> RETURN [NoExceptions]; }; END.