-- 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;