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

A.10.10 Ввод-вывод для типов перечисления

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

Следующие процедуры определены в обобщенном пакете Enumeration_IO, который необходимо инстанцировать для соответствующего типа перечисления (указанного Enum в спецификации).
Значения выводятся с использованием заглавных или строчных букв для идентификаторов. Это задается параметром Set, который имеет тип перечисления Type_Set.
тип Type_Set является (Lower_Case, Upper_Case);
Формат (включая любые последующие пробелы) может быть задан необязательным параметром ширины поля. Значения по умолчанию для ширины поля и регистра букв определяются следующими переменными, объявленными в обобщенном пакете Enumeration_IO:
Default_Width : Field := 0;
Default_Setting : Type_Set := Upper_Case;
Предоставляются следующие процедуры:
процедура Get(File : вход File_Type; Item : выход Enum);
процедура Get(Item : выход Enum);
После пропуска любых начальных пробелов, разделителей строк или страниц считывает идентификатор в соответствии со синтаксисом этого лексического элемента (строчные и заглавные буквы считаются эквивалентными), или литерал символа в соответствии со синтаксисом этого лексического элемента (включая апострофы). Возвращает в параметре Item значение типа Enum, соответствующее входной последовательности.
Исключение Data_Error распространяется, если входная последовательность не имеет требуемого синтаксиса или если идентификатор или литерал символа не соответствует значению подтипа Enum.
процедура Put(File : вход File_Type;
Item : вход Enum;
Width : вход Field := Default_Width;
Set : вход Type_Set := Default_Setting);

процедура Put(Item : вход Enum;
Width : вход Field := Default_Width;
Set : вход Type_Set := Default_Setting);
Выводит значение параметра Item в виде литерала перечисления (либо идентификатор, либо литерал символа). Необязательный параметр Set указывает, использовать ли строчные или заглавные буквы для идентификаторов; он не влияет на литералы символов. Если последовательность сгенерированных символов содержит меньше, чем Width символов, то выводятся последующие пробелы, чтобы заполнить разницу. Если Enum — тип символа, последовательность сгенерированных символов совпадает с Enum.Image(Item), изменённая параметрами Width и Set.
процедура Get(From : вход String; Item : выход Enum; Last : выход Positive);
Считывает значение перечисления из начала заданной строки, следуя тем же правилам, что и процедура Get, считывающая значение перечисления из файла, но обрабатывая конец строки как разделитель файла. Возвращает в параметре Item значение типа Enum, соответствующее входной последовательности. Возвращает в Last значение индекса, такое что From(Last) — последний считанный символ.
Исключение Data_Error распространяется, если входная последовательность не имеет требуемого синтаксиса или если идентификатор или литерал символа не соответствует значению подтипа Enum.
процедура Put(To : выход String;
Item : вход Enum;
Set : вход Type_Set := Default_Setting);
Выводит значение параметра Item в заданную строку, следуя тем же правилам, что и для вывода в файл, используя длину заданной строки как значение для Width.
Хотя спецификация обобщенного пакета Enumeration_IO позволила бы инстанцировать его для целочисленного типа, это не является предназначением этого обобщенного пакета, и эффект таких инстанциаций не определен языком.
ПРИМЕЧАНИЯ
32 Существует разница между Put, определенным для символов и для значений перечислений. Таким образом
Ada.Text_IO.Put('A'); -- выводит символ A
пакет Char_IO является новым Ada.Text_IO.Enumeration_IO(Character);
Char_IO.Put('A'); -- выводит символ 'A', между апострофами
33 Тип Boolean — это тип перечисления, поэтому Enumeration_IO может быть инстанцирован для этого типа.


Spec-Zone.ru

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