Copyright (C) 1994, Digital Equipment Corp.
MODULE NTDebug;
Writes messages to a visible console log
IMPORT FileWin32, FileWr, Fmt, OSError, Point, Rect, Thread, WinBase, WinCon, Wr;
<* FATAL OSError.E, Wr.Failure, Thread.Alerted *>
PROCEDURE NewLine() =
BEGIN
Wr.PutText(con, "\r\n");
Wr.Flush(con);
END NewLine;
PROCEDURE PText (msg: TEXT; data: TEXT := "") =
BEGIN
Wr.PutText(con, Fmt.F("%s%s", msg, data));
Wr.Flush(con);
END PText;
PROCEDURE PBool (msg: TEXT; b: BOOLEAN) =
VAR data: TEXT;
BEGIN
IF b THEN
data := "TRUE"
ELSE
data := "FALSE"
END;
Wr.PutText(con, Fmt.F("%s %s", msg, data));
Wr.Flush(con);
END PBool;
PROCEDURE PInt (msg: TEXT; int: INTEGER) =
VAR data := Fmt.Int(int);
BEGIN
Wr.PutText(con, Fmt.F("%s %s", msg, data));
Wr.Flush(con);
END PInt;
PROCEDURE PPoint (msg: TEXT; READONLY pt: Point.T) =
VAR data := Fmt.F("%s (%s, %s) ", msg, Fmt.Int(pt.h), Fmt.Int(pt.v));
BEGIN
Wr.PutText(con, data);
Wr.Flush(con);
END PPoint;
PROCEDURE PRect (msg: TEXT; READONLY r: Rect.T) =
VAR
data := Fmt.F("%s (%s, %s, %s, %s) ", msg, Fmt.Int(r.west), Fmt.Int(r.east),
Fmt.Int(r.north), Fmt.Int(r.south));
BEGIN
Wr.PutText(con, data);
Wr.Flush(con);
END PRect;
VAR
con: FileWr.T;
BEGIN
EVAL WinCon.AllocConsole();
con := NEW(FileWr.T).init(FileWin32.New(
WinBase.GetStdHandle(WinBase.STD_OUTPUT_HANDLE),
FileWin32.Write));
END NTDebug.