Spec-Zone.ru › Ada 2005
Справочник Ada 2005

G.1.3 Комплексный ввод-вывод

Обобщенный пакет Text_IO.Complex_IO определяет процедуры для форматированного ввода-вывода комплексных значений. Обобщенный фактический параметр в экземпляре Text_IO.Complex_IO является экземпляром Numerics.Generic_Complex_Types для некоторого подтипа с плавающей точкой. Исключительные ситуации сообщаются путем поднятия соответствующего исключения, определенного в Text_IO.

Статическая семантика

Обобщенный пакет библиотек Text_IO.Complex_IO имеет следующее объявление:
with Ada.Numerics.Generic_Complex_Types;
generic
with package Complex_Types is
new Ada.Numerics.Generic_Complex_Types (<>);
package Ada.Text_IO.Complex_IO is
use Complex_Types;
Default_Fore : Field := 2;
Default_Aft : Field := Real'Digits - 1;
Default_Exp : Field := 3;
procedure Get (File : in File_Type;
Item : out Complex;
Width : in Field := 0);
procedure Get (Item : out Complex;
Width : in Field := 0);
procedure Put (File : in File_Type;
Item : in Complex;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
procedure Put (Item : in Complex;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
procedure Get (From : in String;
Item : out Complex;
Last : out Positive);
procedure Put (To : out String;
Item : in Complex;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
end Ada.Text_IO.Complex_IO;
Пакет библиотек Complex_Text_IO определяет те же подпрограммы, что и Text_IO.Complex_IO, за исключением того, что предопределенный тип Float систематически заменяется на Real, а тип Numerics.Complex_Types.Complex систематически заменяется на Complex на всем протяжении. Аналогичным образом определены необобщенные эквиваленты Text_IO.Complex_IO, соответствующие каждому из других предопределенных типов с плавающей точкой, с именами Short_Complex_Text_IO, Long_Complex_Text_IO и т. д.
Семантика процедур Get и Put следующая:
procedure Get (File : in File_Type;
Item : out Complex;
Width : in Field := 0);
procedure Get (Item : out Complex;
Width : in Field := 0);
Последовательность ввода представляет собой пару необязательно знакомых вещественных литералов, представляющих вещественную и мнимую составляющие комплексного значения. Эти составляющие имеют формат, определенный для соответствующей процедуры Get экземпляра Text_IO.Float_IO (см. A.10.9) для базового подтипа Complex_Types.Real. Пару составляющих можно разделить запятой или заключить в пару скобок, или и то, и другое. Пробелы разрешены перед каждой из составляющих и перед скобками и запятой, если они используются. Если значение параметра Width равно нулю, то
  • разделители строк и страниц также разрешены в этих местах;
  • составляющие должны быть разделены по крайней мере одним пробелом или разделителем строк, если запятая опущена; и
  • чтение прекращается, когда скобка закрывается, если последовательность ввода включает в себя открывающую скобку, или когда мнимая составляющая была прочитана, в противном случае.
Если предоставлено ненулевое значение Width, то
  • составляющие должны быть разделены по крайней мере одним пробелом, если запятая опущена; и
  • считываются ровно Width символов или символы (возможно, ни одного) до разделителя строк, в зависимости от того, что произойдет раньше (пробелы включены в счет).
Возвращает в параметре Item значение типа Complex, соответствующее последовательности ввода.
Исключение Text_IO.Data_Error возбуждается, если последовательность ввода не имеет требуемого синтаксиса или если составляющие полученного комплексного значения не являются базовым подтипом Complex_Types.Real.
procedure Put (File : in File_Type;
Item : in Complex;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
procedure Put (Item : in Complex;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
Выводит значение параметра Item в виде пары десятичных литералов, представляющих вещественную и мнимую составляющие комплексного значения, используя синтаксис агрегата. Более конкретно,
  • выводит открывающую скобку;
  • выводит значение вещественной составляющей параметра Item с форматом, определенным соответствующей процедурой Put экземпляра Text_IO.Float_IO для базового подтипа Complex_Types.Real, используя заданные значения Fore, Aft и Exp;
  • выводит запятую;
  • выводит значение мнимой составляющей параметра Item с форматом, определенным соответствующей процедурой Put экземпляра Text_IO.Float_IO для базового подтипа Complex_Types.Real, используя заданные значения Fore, Aft и Exp;
  • выводит закрывающую скобку.
procedure Get (From : in String;
Item : out Complex;
Last : out Positive);
Читает комплексное значение с начала данного строкового значения, следуя тому же правилу, что и процедура Get, которая читает комплексное значение из файла, но обрабатывает конец строки как разделитель файла. Возвращает в параметре Item значение типа Complex, соответствующее последовательности ввода. Возвращает в Last значение индекса, такое что From(Last) является последним прочитанным символом.
Исключение Text_IO.Data_Error возбуждается, если последовательность ввода не имеет требуемого синтаксиса или если составляющие полученного комплексного значения не являются базовым подтипом Complex_Types.Real.
procedure Put (To : out String;
Item : in Complex;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
Выводит значение параметра Item в данную строку в виде пары десятичных литералов, представляющих вещественную и мнимую составляющие комплексного значения, используя синтаксис агрегата. Более конкретно,
  • левая скобка, вещественная составляющая и запятая выравниваются по левому краю в данной строке, при этом вещественная составляющая имеет формат, определенный процедурой Put (для вывода в файл) экземпляра Text_IO.Float_IO для базового подтипа Complex_Types.Real, используя значение нуля для Fore и заданные значения Aft и Exp;
  • мнимая составляющая и правая скобка выравниваются по правому краю в данной строке, при этом мнимая составляющая имеет формат, определенный процедурой Put (для вывода в файл) экземпляра Text_IO.Float_IO для базового подтипа Complex_Types.Real, используя значение Fore, которое полностью заполняет оставшуюся часть строки, вместе с заданными значениями Aft и Exp.
Исключение Text_IO.Layout_Error возбуждается, если заданная строка слишком короткая, чтобы вместить отформатированный вывод.

Реализационные разрешения

Другие исключения, объявленные (с помощью переименования) в Text_IO, могут быть возбуждены предшествующими процедурами в соответствующих обстоятельствах, как и соответствующие процедуры Text_IO.Float_IO.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API