with Schema, Io_Package, Text_Io;
use Schema, Io_Package, Text_Io;
package body Inquiry_Operations is

    type Statistics_File is (Compilation, Run_Time, Instrumentation);
    type File_Array is array (Statistics_File) of Io_Package.File_Record_Type;
    Current_Files : File_Array;

    subtype Unit_Name_Type is Schema.Name_Type;
    -- SCHEMA.NAME_TYPE & IO_PACKAGE.NAME_TYPE *must* agree
    Blank_Name : constant Unit_Name_Type := (others => ' ');

    -- Internal (Hidden) Functions

    function Answer (Prompt : String) return Boolean is separate;
    function Get_Unit_Name return Unit_Name_Type is separate;
    procedure Put_Files (Name : in Unit_Name_Type := Blank_Name;
                         From : in out File_Array;
                         File : in File_Type) is separate;
    procedure Put_Attributes
                 (Name : in Unit_Name_Type;
                  File : in File_Type := Current_Output) is separate;


    --  REQUEST prompts with a menu of choices, converting the
    --            result to type Command_Type
    --  INITIALIZE prints greeting and initial help info.
    --  COLLECT could be called more than once, to change file name setup
    --   -- builds Current Files Record and opens Statistics files.
    --  SELECT could be called repeatedly, to change selections
    --   -- builds Current Options Record
    --  LIST could be called out-of-sequence, and repeatedly
    --   -- uses built records
    --  PRINT dumps the current contents of the statistics files to screen
    --  SAVE  prints (a less formatted) version of the Report dialog to
    -- a named file
    --  HELP re-displays the initial prompt.
    --  QUIT closes any open files and exits.

    function Request return Command_Type is separate;
    procedure Initialize is separate;
    procedure Collect_Files is separate;
    procedure Select_Attributes is separate;
    procedure List_Statistics is separate;
    procedure Print_Files is separate;
    procedure Help_Prompt is separate;
    procedure Save_Statistics is separate;
    procedure Quit is separate;

    -- These subprograms use String I/O [e.g. 'IMAGE()] wherever possible,
    -- to avoid many instances of the large Enumeration_IO package.

end Inquiry_Operations;
--*****************************************************************************