(****************************************************************) (* *) (* Gardens Point Modula-2 Library Definition *) (* *) (* *) (* (c) Copyright 1996 Faculty of Information Technology *) (* Queensland University of Technology *) (* *) (* Permission is granted to use, copy and change this *) (* program as long as the copyright message is left intact *) (* *) (****************************************************************) DEFINITION MODULE DebugWrite; (* * Simplified interfaces to typical debug write formats. * * Each has a string initial parameter, which should be used to explain * what the value is and/or the position in the code. * The standard signature is "# [DebugWrite: ]" * Special cases are translated to ensure readability. * All output is to StdError. *) FROM SYSTEM IMPORT BYTE; PROCEDURE DebugOn; (* * Enable DebugWrite output (this is the default) *) PROCEDURE DebugOff; (* * Disable DebugWrite output *) PROCEDURE DC(*DebugWriteChar*) (heading : ARRAY OF CHAR; char : CHAR); (* * Write signature, heading, followed by ":" if not empty, * then ch if printable, else its hex equivalent. *) PROCEDURE DCa(*DebugWriteCardinal*) (heading : ARRAY OF CHAR; card : CARDINAL); (* * Write signature, heading, followed by ":" if not empty, * then card in minimum field width. *) PROCEDURE DI(*DebugWriteInteger*) (heading : ARRAY OF CHAR; int : INTEGER); (* * Write signature, heading, followed by ":" if not empty, * then int in minimum field width. *) PROCEDURE DR(*DebugWriteReal*) (heading : ARRAY OF CHAR; real : REAL); (* * Write signature, heading, followed by ":" if not empty, * then real in full precision - fixed point if within whole number range, * floating point otherwise. *) PROCEDURE DB(*DebugWriteBoolean*) (heading : ARRAY OF CHAR; boolean : BOOLEAN); (* * Write signature, heading, followed by ":" if not empty, * then "TRUE" or "FALSE". *) PROCEDURE DAll (heading : ARRAY OF CHAR; VAR value : ARRAY OF BYTE); (* * Write signature, heading, followed by ":" if not empty, * then 8 bytes starting at beginning of value in all formats. *) PROCEDURE DDump (heading : ARRAY OF CHAR; value : ARRAY OF BYTE; size : CARDINAL); (* * Write signature, heading, followed by ":" if not empty, * then size bytes starting at beginning of value in hexadecimal. *) PROCEDURE DW(*DebugWriteLn*); (* * WriteLn *) PROCEDURE DS(*DebugWriteString*) (string : ARRAY OF CHAR); (* * Write signature, string, ":". *) END DebugWrite.