package Report is

    procedure Create (Name : String);
    -- path name for the report

    procedure Close;

    procedure User_Name_And_Time;

    procedure Value (Parameter_Name : String;
                     Value : Boolean;
                     Indent : Natural := 4);
    procedure Value (Parameter_Name : String;
                     Value : Character;
                     Indent : Natural := 4);
    procedure Value (Parameter_Name : String;
                     Value : String;
                     Indent : Natural := 4);
    procedure Value (Parameter_Name : String;
                     Value : Integer;
                     Indent : Natural := 4);
    procedure Value (Parameter_Name : String;
                     Value : Float;
                     Indent : Natural := 4);

    procedure Value (Parameter_Name : String;
                     Value : Duration;
                     Indent : Natural := 4);


    generic
        type User_Defined is private;
        with function Image (User_Type : User_Defined) return String is <>;
    procedure User_Defined_Type (Parameter_Name : String;
                                 Value : User_Defined;
                                 Indent : Natural := 4);

    procedure Begin_Execution (Subprogram : String);

    procedure Capture_Output;
    procedure Terminate_Execution;

    procedure Exception_Raise (Exception_Name : String);

    procedure Comment (Comments : String);

    procedure Passed;
    procedure Failed;

    procedure New_Line (Repeat : Positive := 1);

end Report;