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