Copyright (C) А.Гавва V-0.4w май 2004

5. Спецификации пакетов ввода/вывода.

5.1 Пакеты текстового ввода/вывода

5.1.1 Пакет Ada.Text_IO


with Ada.IO_Exceptions;    -- описано в приложении A (Annex A)
                           -- руководства по языку (RM-95)

package Ada.Text_IO is
pragma Elaborate_Body (Text_IO);

   type File_Type is limited private;                   -- внутреннее представление
                                                        --    файла для программы

   type File_Mode is (In_File, Out_File, Append_File);  -- управляет направлением
                                                        --    передачи данных
                                                        --    (в/из файла)



   type Count is range 0 .. Определяется_Реализацией;
   subtype Positive_Count is Count range 1 .. Count'Last;

   Unbounded : constant Count := 0;               -- длина строки и страницы


   subtype Field is Integer range 0 .. Определяется_Реализацией;

   subtype Number_Base is Integer range 2 .. 16;  -- используются только:
                                                  --     2, 8, 10 и 16

   type Type_Set is (Lower_Case, Upper_Case);     -- для перечислимых типов



   -- Подпрограммы управления файлами

   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;



   -- Подпрограммы управления файлами ввода, вывода и вывода ошибок
   --    устанавливаемыми по умолчанию

   procedure Set_Input  (File : in File_Type);  -- установить как файл ввода
   procedure Set_Output (File : in File_Type);  -- установить как файл вывода
   procedure Set_Error  (File : in File_Type);  -- установить как файл вывода ошибок
                            -- ПРИМЕЧАНИЕ: перед вызовом подпрограмм Set_Input,
                            --             Set_Output и/или Set_Error,
                            --             файл File должен быть открыт

   function Standard_Input  return File_Type;   -- обычно, клавиатура
   function Standard_Output return File_Type;   -- обычно, видеодисплей
   function Standard_Error  return File_Type;

   function Current_Input  return File_Type;    -- обычно, то же что и Standard_Input
   function Current_Output return File_Type;
   function Current_Error  return File_Type;


   type File_Access is access constant File_Type; -- ссылочный тип (указатель)
                                                  --     позволяющий ссылаться
                                                  --     на переменные внутреннего
                                                  --     представления файла, что
                                                  --     во многих случаях удобно
                                                  -- (введен стандартом Ada-95)

   function Standard_Input  return File_Access;
   function Standard_Output return File_Access;
   function Standard_Error  return File_Access;

   function Current_Input  return File_Access;
   function Current_Output return File_Access;
   function Current_Error  return File_Access;



   -- Подпрограммы управления буферами

   procedure Flush (File : in out File_Type);
   procedure Flush;



   -- Подпрограммы спецификации длин строк и страниц для ввода/вывода

   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 и Page (колонка, строка и страница)

   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;



   -- Посимвольный ввод/вывод

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

   procedure Look_Ahead
     (File        : in File_Type;
      Item        : out Character;
      End_Of_Line : out Boolean);

   procedure Look_Ahead
     (Item        : out Character;
      End_Of_Line : out Boolean);

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

   procedure Get_Immediate
     (Item : out Character);

   procedure Get_Immediate
     (File      : in File_Type;
      Item      : out Character;
      Available : out Boolean);

   procedure Get_Immediate
     (Item      : out Character;
      Available : out Boolean);




   -- Построчный ввод/вывод

   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 : int 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);



   --  Исключения

   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

  . . .   -- стандартом языка не определено

end Ada.Text_IO;

5.1.2 Пакет Ada.Text_IO.Integer_IO


generic
   type Num is range <>;  -- параметр настройки модуля

package Ada.Text_IO.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);    -- индекс последнего преобразуемого символа в From

   procedure Put               -- вывод числа в строку
                               --   (преобразование в строковое представление)
     (To   : out String;
      Item : in Num;
      Base : in Number_Base := Default_Base);

end Ada.Text_IO.Integer_IO;

5.1.3 Пакет Ada.Text_IO.Modular_IO


generic
   type Num is mod <>;  -- параметр настройки модуля

package Ada.Text_IO.Modular_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 Ada.Text_IO.Modular_IO;

5.1.4 Пакет Ada.Text_IO.Float_IO


generic
   type Num is digits <>;  -- параметр настройки модуля

package Ada.Text_IO.Float_IO is

   Default_Fore : Field := 2;               -- количество символов слева
                                            --   от десятичной точки
   Default_Aft  : Field := Num'Digits - 1;  -- количество символов справа
                                            --   от десятичной точки
   Default_Exp  : Field := 3;               -- для нотации используемой
                                            --   в научных рассчетах

   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;
      Fore : in Field := Default_Fore;
      Aft  : in Field := Default_Aft;
      Exp  : in Field := Default_Exp);

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

   procedure Put               -- вывод числа в строку
                               --   (преобразование в строковое представление)
     (To   : out String;
      Item : in Num;
      Aft  : in Field := Default_Aft;
      Exp  : in Field := Default_Exp);

end Ada.Text_IO.Float_IO;

5.1.5 Пакет Ada.Text_IO.Fixed_IO


generic
   type Num is delta <>;  -- параметр настройки модуля

package Ada.Text_IO.Fixed_IO is

   Default_Fore : Field := Num'Fore; -- количество символов слева
                                     --   от десятичной точки
   Default_Aft  : Field := Num'Aft;  -- количество символов справа
                                     --   от десятичной точки
   Default_Exp  : Field := 0;        -- для нотации используемой
                                     --   в научных рассчетах

   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;
      Fore : in Field := Default_Fore;
      Aft  : in Field := Default_Aft;
      Exp  : in Field := Default_Exp);

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

   procedure Put               -- вывод числа в строку
                               --   (преобразование в строковое представление)
     (To   : out String;
      Item : in Num;
      Aft  : in Field := Default_Aft;
      Exp  : in Field := Default_Exp);

end Ada.Text_IO.Fixed_IO;

5.1.6 Пакет Ada.Text_IO.Decimal_IO


generic
   type Num is delta <> digits <>;  -- параметр настройки модуля

package Ada.Text_IO.Decimal_IO is   -- децимальные типы, как правило, используются
                                    --     в финансовых приложениях

   Default_Fore : Field := Num'Fore; -- количество символов слева
                                     --   от десятичной точки
   Default_Aft  : Field := Num'Aft;  -- количество символов справа
                                     --   от десятичной точки
   Default_Exp  : Field := 0;        -- для нотации используемой
                                     --   в научных рассчетах

   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;
      Fore : in Field := Default_Fore;
      Aft  : in Field := Default_Aft;
      Exp  : in Field := Default_Exp);

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

   procedure Put               -- вывод числа в строку
                               --   (преобразование в строковое представление)
     (To   : out String;
      Item : in Num;
      Aft  : in Field := Default_Aft;
      Exp  : in Field := Default_Exp);

end Ada.Text_IO.Decimal_IO;

5.1.7 Пакет Ada.Text_IO.Enumeration_IO


generic
   type Enum is (<>);  -- параметр настройки модуля

package Ada.Text_IO.Enumeration_IO is

   Default_Width : Field := 0;
   Default_Setting : Type_Set := Upper_Case;

   procedure Get     -- ввод значения перечислимого типа из указанного файла
     (File  : in  File_Type;
      Item  : out Enum);

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

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

   procedure Put     -- вывод значения перечислимого типа в строку
                     --   (преобразование в строковое представление)
     (To   : out String;
      Item : in Enum;
      Set  : in Type_Set := Default_Setting);

end Ada.Text_IO.Enumeration_IO;

5.2 Пакет Ada.Sequential_IO


with Ada.IO_Exceptions;

generic
   type Element_Type (<>) is private;  -- параметр настройки модуля

package Ada.Sequential_IO is

   type File_Type is limited private;

   type File_Mode is (In_File, Out_File, Append_File);



   -- Подпрограммы управления файлами

   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;



   -- Подпрограммы ввода/вывода

   procedure Read  (File : in File_Type; Item : out Element_Type);
   procedure Write (File : in File_Type; Item : in Element_Type);

   function End_Of_File (File : in File_Type) return Boolean;



   -- Исключения

   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;

private

  . . .   -- стандартом языка не определено

end Ada.Sequential_IO;

5.3 Пакет Ada.Direct_IO


with Ada.IO_Exceptions;

generic
   type Element_Type is private;  -- параметр настройки модуля

package Ada.Direct_IO is

   type File_Type is limited private;

   type File_Mode is (In_File, Inout_File, Out_File);


   type Count is range 0 .. System.Direct_IO.Count'Last;

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



   -- Подпрограммы управления файлами

   procedure Create
     (File : in out File_Type;
      Mode : in File_Mode := Inout_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;



   -- Подпрограммы ввода/вывода

   procedure Read
     (File : in File_Type;
      Item : out Element_Type;
      From : in Positive_Count);

   procedure Read
     (File : in File_Type;
      Item : out Element_Type);

   procedure Write
     (File : in File_Type;
      Item : in Element_Type;
      To   : in Positive_Count);

   procedure Write
     (File : in File_Type;
      Item : in Element_Type);

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

   function Index (File : in File_Type) return Positive_Count;
   function Size  (File : in File_Type) return Count;

   function End_Of_File (File : in File_Type) return Boolean;



   -- Исключения

   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;


private

  . . .   -- стандартом языка не определено

end Ada.Direct_IO;

5.4 Пакет Ada.Streams.Stream_IO


with Ada.IO_Exceptions;

package Ada.Streams.Stream_IO is

   type Stream_Access is access all Root_Stream_Type'Class;
   type File_Type is limited private;
   type File_Mode is (In_File, Out_File, Append_File);


   type Count is range 0 .. Определяется_Реализацией;

   subtype Positive_Count is Count range 1 .. Count'Last;  --  индекс в файле,
                                                            --   в потоковых
                                                            --   элементах

   -- Подпрограммы управления файлами

   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;
   function End_Of_File (File : in File_Type) return Boolean;

   function Stream (File : in File_Type) return Stream_Access;



   -- Подпрограммы ввода/вывода

   procedure Read
     (File : in  File_Type;
      Item : out Stream_Element_Array;
      Last : out Stream_Element_Offset;
      From : in  Positive_Count);

   procedure Read
     (File : in  File_Type;
      Item : out Stream_Element_Array;
      Last : out Stream_Element_Offset);

   procedure Write
     (File : in File_Type;
      Item : in Stream_Element_Array;
      To   : in Positive_Count);

   procedure Write
     (File : in File_Type;
      Item : in Stream_Element_Array);



   -- Подпрограммы управления позиционированием внутри файла

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

   function Index (File : in File_Type) return Positive_Count;
   function Size  (File : in File_Type) return Count;

   procedure Set_Mode (File : in out File_Type; Mode : in File_Mode);

   procedure Flush (File : in out File_Type);



   -- Исключения

   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;

private

  . . .   -- стандартом языка не определено

end Ada.Streams.Stream_IO;


Copyright (C) А.Гавва V-0.4w май 2004