-- text_io.ads   Fairly standard version of the Text_IO package.
-- Supplied with RTI's ada2cc conversion tool - basis for supplied version of
-- text_io.H

 
with Io_Exceptions;

 
package Text_Io is

 
    type File_Type is limited private;
 
    type File_Access is access constant File_Type;

 
    type File_Mode is (In_File, Out_File, Append_File);

 
    type Count is range 0 .. Integer'Last;

    subtype Positive_Count is Count range 1 .. Count'Last;

    Unbounded : constant Count := 0;  -- line and page length

 
    subtype Field is Integer range 0 .. Integer'Last;

    subtype Number_Base is Integer range 2 .. 16;

 
    type Type_Set is (Lower_Case, Upper_Case);

 
    -- File Management
    -- Create, Open, Close, Delete, Reset  Mode, Name
    -- Form and Is_Open

 
    procedure Create (File : in out File_Type;
                      Mode : in File_Mode := Out_File;
                      Name : in String := "";
                      Form : in String := "");

 
    procedure Open (File : in out File_Type;
                    Mode : in File_Mode;
                    Name : in String;
                    Form : in String := "");

    procedure Close (File : in out File_Type);
    procedure Delete (File : in out File_Type);
    procedure Reset (File : in out File_Type; Mode : in File_Mode);
    procedure Reset (File : in out File_Type);
 
    function Mode (File : in File_Type) return File_Mode;

    function Name (File : in File_Type) return String;
    function Form (File : in File_Type) return String;
 

    function Is_Open (File : in File_Type) return Boolean;

 
    -- Control of default input and output files

 
    procedure Set_Input (File : in File_Type);

    procedure Set_Output (File : in File_Type);

 
    function Standard_Input return File_Type;

    function Standard_Output return File_Type;

 
    function Current_Input return File_Type;

    function Current_Output return File_Type;

 
 
    -- Specification of line and page lengths with and w/o File Parameter

 
    procedure Set_Line_Length (File : in File_Type; To : in Count);

    procedure Set_Line_Length (To : in Count);

 
    procedure Set_Page_Length (File : in File_Type; To : in Count);

    procedure Set_Page_Length (To : in Count);
 
    function Line_Length (File : in File_Type) return Count;

    function Line_Length return Count;
 
    function Page_Length (File : in File_Type) return Count;
    function Page_Length return Count;
 
    -- Column, Line and Page Control
 

    procedure New_Line (File : in File_Type; Spacing : in Positive_Count := 1);

    procedure New_Line (Spacing : in Positive_Count := 1);

 
    procedure Skip_Line (File : in File_Type; Spacing : in Positive_Count := 1);

    procedure Skip_Line (Spacing : in Positive_Count := 1);
 
    function End_Of_Line (File : in File_Type) return Boolean;
    function End_Of_Line return Boolean;
 
    procedure New_Page (File : in File_Type);

    procedure New_Page;

 
    procedure Skip_Page (File : in File_Type);

    procedure Skip_Page;
 
    function End_Of_Page (File : in File_Type) return Boolean;

    function End_Of_Page return Boolean;

 
    function End_Of_File (File : in File_Type) return Boolean;

    function End_Of_File return Boolean;

 
 
    procedure Set_Col (File : in File_Type; To : in Positive_Count);

    procedure Set_Col (To : in Positive_Count);
 
    procedure Set_Line (File : in File_Type; To : in Positive_Count);

    procedure Set_Line (To : in Positive_Count);
 
 
    function Col (File : in File_Type) return Positive_Count;

    function Col return Positive_Count;
 
    function Line (File : in File_Type) return Positive_Count;

    function Line return Positive_Count;

 
    function Page (File : in File_Type) return Positive_Count;

    function Page return Positive_Count;

 
    -- Character Input-Output

 

    procedure Get (File : in File_Type; Item : out Character);


    procedure Get (Item : out Character);


    procedure Put (File : in File_Type; Item : in Character);


    procedure Put (Item : in Character);

 

    -- String Input-Output

 

    procedure Get (File : in File_Type; Item : out String);


    procedure Get (Item : out String);


    procedure Put (File : in File_Type; Item : in String);


    procedure Put (Item : in String);

 

    procedure Get_Line (File : in File_Type;
                        Item : out String;
                        Last : out Natural);


    procedure Get_Line (Item : out String; Last : out Natural);

 
    procedure Put_Line (File : in File_Type; Item : in String);
    procedure Put_Line (Item : in String);

 
    -- Generic package for Input-Output of Integer Types

 
    generic
        type Num is range <>;
    package Integer_Io is

 
        Default_Width : Field := Num'Width;

        Default_Base : Number_Base := 10;
 
        procedure Get (File : in File_Type;
                       Item : out Num;
                       Width : in Field := 0);

        procedure Get (Item : out Num; Width : in Field := 0);
        procedure Put (File : in File_Type;
                       Item : in Num;
                       Width : in Field := Default_Width;
                       Base : in Number_Base := Default_Base);

        procedure Put (Item : in Num;
                       Width : in Field := Default_Width;
                       Base : in Number_Base := Default_Base);

 
        procedure Get (From : in String; Item : out Num; Last : out Positive);
        procedure Put (To : out String;
                       Item : in Num;
                       Base : in Number_Base := Default_Base);

 
    end Integer_Io;
 
    -- Other generic I/O (float, fixed, enumeration) redacted for this example

 
    -- Exceptions
 
    Status_Error : exception renames Io_Exceptions.Status_Error;
    Mode_Error : exception renames Io_Exceptions.Mode_Error;
    Name_Error : exception renames Io_Exceptions.Name_Error;
    Use_Error : exception renames Io_Exceptions.Use_Error;
    Device_Error : exception renames Io_Exceptions.Device_Error;
    End_Error : exception renames Io_Exceptions.End_Error;
    Data_Error : exception renames Io_Exceptions.Data_Error;
    Layout_Error : exception renames Io_Exceptions.Layout_Error;
 
Private
 
    type File_Type is access Integer;
 
end Text_Io;