     ----------------------------------------------------------------------
     -- Title       :  TextAKD
     -- Version     :  1.0
     -- Copyright   :  (C) 1994 David Wallace Croft.  All rights reserved.
     -- Author      :  David Wallace Croft, CompuServe [76600,102]
     -- Compiler    :  Ada
     -- Description :
     --
     -- This is almost like Text_IO except where "implementation defined".
     -- This package uses faster, re-entrant I/O instead of standard I/O
     -- for console I/O.  File I/O remains the same as in Text_IO.
     ----------------------------------------------------------------------

     with IO_Exceptions; -- renamed
     with Text_IO;       -- for file I/O and types only

     package TextAKD is
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
     subtype File_Type      is Text_IO.File_Type;
     subtype File_Mode      is Text_IO.File_Mode;
     In_File    : constant File_Mode := Text_IO.In_File;
     Out_File   : constant File_Mode := Text_IO.Out_File;
     subtype Field          is integer;
     subtype Number_Base    is integer range 2..16;
     subtype Count          is Text_IO.Count; -- natural
     subtype Positive_Count is Count range 1..Count'last;
     subtype Type_Set       is Text_IO.Type_Set;
     Lower_Case : constant Type_Set  := Text_IO.Lower_Case;
     Upper_Case : constant Type_Set  := Text_IO.Upper_Case;
     Unbounded  : constant Count     := 0;
     ----------------------------------------------------------------------
     procedure Create (
       File : in out File_Type;
       Mode : in     File_Mode := Out_File;
       Name : in     string    := "";
       Form : in     string    := "" )
       renames Text_IO.Create;
     procedure Open (
       File : in out File_Type;
       Mode : in     File_Mode;
       Name : in     string;
       Form : in     string    := "" )
       renames Text_IO.Open;
     procedure Close (
       File : in out File_Type )
       renames Text_IO.Close;
     procedure Delete (
       File : in out File_Type )
       renames Text_IO.Delete;
     procedure Reset (
       File : in out File_Type;
       Mode : in     File_Mode )
       renames Text_IO.Reset;
     procedure Reset (
       File : in out File_Type )
       renames Text_IO.Reset;
     function Mode (
       File : in     File_Type )
       return File_Mode
       renames Text_IO.Mode;
     function Name (
       File : in     File_Type )
       return string
       renames Text_IO.Name;
     function Form (
       File : in     File_Type )
       return string
       renames Text_IO.Form;
     function Is_Open (
       File : in     File_Type )
       return boolean
       renames Text_IO.Is_Open;
     procedure Set_Input (
       File : in     File_Type )
       renames Text_IO.Set_Input;
     procedure Set_Output (
       File : in     File_Type )
       renames Text_IO.Set_Output;
     function Standard_Input
       return File_Type
       renames Text_IO.Standard_Input;
     function Standard_Output
       return File_Type
       renames Text_IO.Standard_Output;
     function Current_Input
       return File_Type
       renames Text_IO.Current_Input;
     function Current_Output
       return File_Type
       renames Text_IO.Current_Output;
     procedure Set_Line_Length (
       File : in     File_Type;
       To   : in     Count )
       renames Text_IO.Set_Line_Length;
--   procedure Set_Line_Length (
--     To   : in     Count );
     procedure Set_Page_Length (
       File : in     File_Type;
       To   : in     Count )
       renames Text_IO.Set_Page_Length;
--   procedure Set_Page_Length (
--     To   : in     Count );
     function Line_Length (
       File : in     File_Type )
       return Count
       renames Text_IO.Line_Length;
--   function Line_Length
--     return Count;
     function Page_Length (
       File : in     File_Type )
       return Count
       renames Text_IO.Page_Length;
--   function Page_Length
--     return Count;
     procedure New_Line (
       File    : in     File_Type;
       Spacing : in     Positive_Count := 1 )
       renames Text_IO.New_Line;
     procedure New_Line (
       Spacing : in     Positive_Count := 1 );
     procedure Skip_Line (
       File    : in     File_Type;
       Spacing : in     Positive_Count := 1 )
       renames Text_IO.Skip_Line;
--   procedure Skip_Line (
--     Spacing : in     Positive_Count := 1 );
     function End_Of_Line (
       File : in     File_Type )
       return boolean
       renames Text_IO.End_Of_Line;
--   function End_Of_Line
--     return boolean;
     procedure New_Page (
       File : in     File_Type )
       renames Text_IO.New_Page;
--   procedure New_Page;
     procedure Skip_Page (
       File : in     File_Type )
       renames Text_IO.Skip_Page;
--   procedure Skip_Page;
     function End_Of_Page (
       File : in     File_Type )
       return boolean
       renames Text_IO.End_Of_Page;
--   function End_Of_Page
--     return boolean;
     function End_Of_File (
       File : in     File_Type )
       return boolean
       renames Text_IO.End_Of_File;
--   function End_Of_File
--     return boolean;
     procedure Set_Col (
       File : in     File_Type;
       To   : in     Positive_Count )
       renames Text_IO.Set_Col;
--   procedure Set_Col (
--     To   : in     Positive_Count );
     procedure Set_Line (
       File : in     File_Type;
       To   : in     Positive_Count )
       renames Text_IO.Set_Line;
--   procedure Set_Line (
--     To   : in     Positive_Count );
     function Col (
       File : in     File_Type )
       return Positive_Count
       renames Text_IO.Col;
--   function Col
--     return Positive_Count;
     function Line (
       File : in     File_Type )
       return Positive_Count
       renames Text_IO.Line;
--   function Line
--     return Positive_Count;
     function Page (
       File : in     File_Type )
       return Positive_Count
       renames Text_IO.Page;
--   function Page
--     return Positive_Count;
     procedure Get (
       File : in     File_Type;
       Item :    out character )
       renames Text_IO.Get;
     procedure Get (
       Item :    out character );
     procedure Put (
       File : in     File_Type;
       Item : in     character )
       renames Text_IO.Put;
     procedure Put (
       Item : in     character );
     procedure Get (
       File : in     File_Type;
       Item :    out string )
       renames Text_IO.Get;
     procedure Get (
       Item :    out string );
     procedure Put (
       File : in     File_Type;
       Item : in     string )
       renames Text_IO.Put;
     procedure Put (
       Item : in     string );
     procedure Get_Line (
       File : in     File_Type;
       Item :    out string;
       Last :    out natural )
       renames Text_IO.Get_Line;
     procedure Get_Line (
       Item :    out string;
       Last :    out natural );
     procedure Put_Line (
       File : in     File_Type;
       Item : in     string )
       renames Text_IO.Put_Line;
     procedure Put_Line (
       Item : in     string );
     ----------------------------------------------------------------------
     generic
       type Num is range <>;
     package Integer_IO_AKD is
       Default_Width : Field := Num'Width;
       Default_Base  : Number_Base := 10;
       package Num_IO is new Text_IO.Integer_IO ( Num );
       procedure Get (
	 File  : in     File_Type;
	 Item  :    out Num;
	 Width : in     Field := 0 )
	 renames Num_IO.Get;
       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 )
	 renames Num_IO.Put;
       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 )
	 renames Num_IO.Get;
       procedure Put (
	 To    :    out string;
	 Item  : in     Num;
	 Base  : in     Number_Base := Default_Base )
	 renames Num_IO.Put;
     end Integer_IO_AKD;
     ----------------------------------------------------------------------
     generic
       type Num is digits <>;
     package Float_IO_AKD is
       Default_Fore : Field := 2;
       Default_Aft  : Field := Num'digits - 1;
       Default_Exp  : Field := 3;
       package Num_IO is new Text_IO.Float_IO ( Num );
       procedure Get (
	 File  : in     File_Type;
	 Item  :    out Num;
	 Width : in     Field := 0 )
	 renames Num_IO.Get;
       procedure Get (
	 Item  :    out Num;
	 Width : in     Field := 0 );
       procedure Put (
	 File : in     File_Type;
	 Item : in     Num;
	 Fore : in     Field := Default_Fore;
	 Aft  : in     Field := Default_Aft;
	 Exp  : in     Field := Default_Exp )
	 renames Num_IO.Put;
       procedure Put (
	 Item : in     Num;
	 Fore : in     Field := Default_Fore;
	 Aft  : in     Field := Default_Aft;
	 Exp  : in     Field := Default_Exp );
       procedure Get (
	 From : in     string;
	 Item :    out Num;
	 Last :    out positive )
	 renames Num_IO.Get;
       procedure Put (
	 To   :    out string;
	 Item : in     Num;
	 Aft  : in     Field := Default_Aft;
	 Exp  : in     Field := Default_Exp )
	 renames Num_IO.Put;
     end Float_IO_AKD;
     ----------------------------------------------------------------------
     generic
       type Num is delta <>;
     package Fixed_IO_AKD is
       Default_Fore : Field := Num'Fore;
       Default_Aft  : Field := Num'Aft;
       Default_Exp  : Field := 0;
       package Num_IO is new Text_IO.Fixed_IO ( Num );
       procedure Get (
	 File  : in     File_Type;
	 Item  :     out Num;
	 Width : in     Field := 0 )
	 renames Num_IO.Get;
       procedure Get (
	 Item  :     out Num;
	 Width : in     Field := 0 );
       procedure Put (
	 File  : in     File_Type;
	 Item  : in     Num;
	 Fore  : in     Field := Default_Fore;
	 Aft   : in     Field := Default_Aft;
	 Exp   : in     Field := Default_Exp )
	 renames Num_IO.Put;
       procedure Put (
	 Item  : in     Num;
	 Fore  : in     Field := Default_Fore;
	 Aft   : in     Field := Default_Aft;
	 Exp   : in     Field := Default_Exp );
       procedure Get (
	 From  : in     string;
	 Item  :    out Num;
	 Last  :    out positive )
	 renames Num_IO.Get;
       procedure Put (
	 To    :    out string;
	 Item  : in     Num;
	 Aft   : in     Field := Default_Aft;
	 Exp   : in     Field := Default_Exp )
	 renames Num_IO.Put;
     end Fixed_IO_AKD;
     ----------------------------------------------------------------------
     generic
       type Enum is (<>);
     package Enumeration_IO_AKD is
       Default_Width   : Field    := 0;
       Default_Setting : Type_Set := Upper_Case;
       package Enum_IO is new Text_IO.Enumeration_IO ( Enum );
       procedure Get (
	 File  : in     File_Type;
	 Item  :    out Enum )
	 renames Enum_IO.Get;
       procedure Get (
	 Item  :    out Enum );
       procedure Put (
	 File  : in     File_Type;
	 Item  : in     Enum;
	 Width : in     Field    := Default_Width;
	 Set   : in     Type_Set := Default_Setting )
	 renames Enum_IO.Put;
       procedure Put (
	 Item  : in     Enum;
	 Width : in     Field    := Default_Width;
	 Set   : in     Type_Set := Default_Setting );
       procedure Get (
	 From  : in     string;
	 Item  :    out Enum;
	 Last  :    out positive )
	 renames Enum_IO.Get;
       procedure Put (
	 To    :    out string;
	 Item  : in     Enum;
	 Set   : in     Type_Set := Default_Setting )
	 renames Enum_IO.Put;
     end Enumeration_IO_AKD;
     ----------------------------------------------------------------------
     Name_Error   : exception renames IO_Exceptions.Name_Error;
     Use_Error    : exception renames IO_Exceptions.Use_Error;
     Status_Error : exception renames IO_Exceptions.Status_Error;
     Mode_Error   : exception renames IO_Exceptions.Mode_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;
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
     end TextAKD;
