ui/src/nt/NT.m3


Copyright (C) 1994, Digital Equipment Corp.
 by Steve Glassman, Mark Manasse and Greg Nelson 

UNSAFE MODULE NT;

IMPORT Rect, WinBase, WinDef;

<* INLINE *>
PROCEDURE ToRect (READONLY rc: WinDef.RECT): Rect.T =
  BEGIN
    RETURN Rect.T{west := rc.left, east := rc.right, north := rc.top,
                  south := rc.bottom}
  END ToRect;

<* INLINE *>
PROCEDURE FromRect (READONLY r: Rect.T): WinDef.RECT =
  BEGIN
    RETURN WinDef.RECT{left := r.west, right := r.east, top := r.north,
                  bottom := r.south}
  END FromRect;

PROCEDURE True (b: WinDef.BOOL): BOOLEAN =
  BEGIN
    RETURN b # 0;
  END True;

PROCEDURE Assert(res: INTEGER) =
  VAR error: INTEGER;
  BEGIN
    IF 0 = res THEN
      error := WinBase.GetLastError();
      Crash();
    END;
  END Assert;

PROCEDURE BAssert(b: BOOLEAN) =
  BEGIN Assert(ORD(b)) END BAssert;

EXCEPTION Fatal;

PROCEDURE Crash() =
  <* FATAL Fatal *>
  BEGIN
    RAISE Fatal;
  END Crash;

BEGIN
  CNULL := LOOPHOLE(0, ADDRESS);
END NT.