WITH Ada.Text_IO; PACKAGE BODY Debugging_Support IS ------------------------------------------------------------------------ --| Body of Package for Debugging Other Packages --| WITH-ed by the body of a package to provide an easy way to --| trace calls and returns from subprograms; --| WITH-ed by a client of the package only to turn debugging on. --| Author: Michael B. Feldman, The George Washington University --| Last Modified: January 1996 ------------------------------------------------------------------------ DebuggingIsOn: Boolean := False; -- no debugging unless client calls SetDebug(WhichWay => On); DebugFile: Ada.Text_IO.File_Type; WritingToFile: Boolean := False; -- use standard output unless client gives a file name PROCEDURE SetDebug(WhichWay: IN Switch; FileName: String := "") IS BEGIN -- SetDebug IF WhichWay = Off THEN DebuggingIsOn := False; ELSE DebuggingIsOn := True; -- Open debugging file, if any IF FileName /= "" THEN WritingToFile := True; Ada.Text_IO.Create(File => DebugFile, Mode => Ada.Text_IO.Out_File, Name => FileName); END IF; END IF; END SetDebug; PROCEDURE Enter(Subprogram: IN String; Message: IN String := "") IS BEGIN -- Enter IF WritingToFile THEN Ada.Text_IO.Put (File => DebugFile, Item => ">>>>> Entering " & Subprogram); IF Message /= "" THEN Ada.Text_IO.Put(File => DebugFile, Item => "; " & Message); END IF; Ada.Text_IO.New_Line(File => DebugFile); ELSE -- standard output Ada.Text_IO.Put(Item => ">>>>> Entering " & Subprogram); IF Message /= "" THEN Ada.Text_IO.Put(Item => "; " & Message); END IF; Ada.Text_IO.New_Line; END IF; END Enter; PROCEDURE Leave(Subprogram: IN String; Message: IN String := "") IS BEGIN -- Leave IF WritingToFile THEN Ada.Text_IO.Put (File => DebugFile, Item => ">>>>> Leaving " & Subprogram); IF Message /= "" THEN Ada.Text_IO.Put(File => DebugFile, Item => "; " & Message); END IF; Ada.Text_IO.New_Line(File => DebugFile); ELSE -- standard output Ada.Text_IO.Put(Item => ">>>>> Leaving " & Subprogram); IF Message /= "" THEN Ada.Text_IO.Put(Item => "; " & Message); END IF; Ada.Text_IO.New_Line; END IF; END Leave; END Debugging_Support;