Copyright (C) 1994, Digital Equipment Corp.
UNSAFE MODULE OSErrorWin32 EXPORTS OSError, OSErrorWin32;
IMPORT OSError;
IMPORT Atom, AtomList, Fmt;
IMPORT WinBase;
VAR cache := ARRAY [0..2000] OF Atom.T { NIL, .. };
The table is initialized lazily.
PROCEDURE NewAtom (n: CARDINAL): Atom.T =
BEGIN
RETURN Atom.FromText("ErrorCode=" & Fmt.Int(n));
END NewAtom;
PROCEDURE ErrnoAtom(n: CARDINAL): Atom.T =
BEGIN
IF (n < NUMBER (cache)) THEN
IF cache[n] = NIL THEN cache[n] := NewAtom(n) END;
RETURN cache[n];
ELSE
RETURN NewAtom (n);
END;
END ErrnoAtom;
PROCEDURE Raise0(errno: INTEGER) RAISES {OSError.E} =
BEGIN
RAISE OSError.E(
NEW(AtomList.T, head := ErrnoAtom(errno), tail := NIL))
END Raise0;
PROCEDURE Raise() RAISES {OSError.E} =
BEGIN
Raise0(WinBase.GetLastError());
END Raise;
BEGIN
END OSErrorWin32.