Справочник по Ada 2005
A.3.2 Пакет Characters.Handling
Статическая семантика
В пакете библиотек Characters.Handling содержится следующее объявление:
with Ada.Characters.Conversions;
package Ada.Characters.Handling is
pragma Pure(Handling);
package Ada.Characters.Handling is
pragma Pure(Handling);
--Функции классификации символов
function Is_Control (Item : in Character) return Boolean;
function Is_Graphic (Item : in Character) return Boolean;
function Is_Letter (Item : in Character) return Boolean;
function Is_Lower (Item : in Character) return Boolean;
function Is_Upper (Item : in Character) return Boolean;
function Is_Basic (Item : in Character) return Boolean;
function Is_Digit (Item : in Character) return Boolean;
function Is_Decimal_Digit (Item : in Character) return Boolean
renames Is_Digit;
function Is_Hexadecimal_Digit (Item : in Character) return Boolean;
function Is_Alphanumeric (Item : in Character) return Boolean;
function Is_Special (Item : in Character) return Boolean;
function Is_Graphic (Item : in Character) return Boolean;
function Is_Letter (Item : in Character) return Boolean;
function Is_Lower (Item : in Character) return Boolean;
function Is_Upper (Item : in Character) return Boolean;
function Is_Basic (Item : in Character) return Boolean;
function Is_Digit (Item : in Character) return Boolean;
function Is_Decimal_Digit (Item : in Character) return Boolean
renames Is_Digit;
function Is_Hexadecimal_Digit (Item : in Character) return Boolean;
function Is_Alphanumeric (Item : in Character) return Boolean;
function Is_Special (Item : in Character) return Boolean;
--Функции преобразования для Character и String
function To_Lower (Item : in Character) return Character;
function To_Upper (Item : in Character) return Character;
function To_Basic (Item : in Character) return Character;
function To_Upper (Item : in Character) return Character;
function To_Basic (Item : in Character) return Character;
function To_Lower (Item : in String) return String;
function To_Upper (Item : in String) return String;
function To_Basic (Item : in String) return String;
function To_Upper (Item : in String) return String;
function To_Basic (Item : in String) return String;
--Классификации и преобразования между Character и ISO 646
subtype ISO_646 is
Character range Character'Val(0) .. Character'Val(127);
Character range Character'Val(0) .. Character'Val(127);
function Is_ISO_646 (Item : in Character) return Boolean;
function Is_ISO_646 (Item : in String) return Boolean;
function Is_ISO_646 (Item : in String) return Boolean;
function To_ISO_646 (Item : in Character;
Substitute : in ISO_646 := ' ')
return ISO_646;
Substitute : in ISO_646 := ' ')
return ISO_646;
function To_ISO_646 (Item : in String;
Substitute : in ISO_646 := ' ')
return String;
Substitute : in ISO_646 := ' ')
return String;
--Функции Is_Character, Is_String, To_Character, To_String, To_Wide_Character,
-- и To_Wide_String устарели; см. J.14.
-- и To_Wide_String устарели; см. J.14.
Абзацы с 14 по 18 были удалены.
end Ada.Characters.Handling;
В описании ниже для каждой функции, возвращающей значение Boolean, эффект описывается в терминах условий, при которых возвращается значение True. Если эти условия не выполнены, функция возвращает False.
Каждая из следующих функций классификации имеет формальный параметр Character, Item, и возвращает значение Boolean.
Is_Control
True, если Item — управляющий символ. Управляющий символ — это символ, положение которого находится в одном из диапазонов 0..31 или 127..159.
Is_Graphic
True, если Item — графический символ. Графический символ — это символ, положение которого находится в одном из диапазонов 32..126 или 160..255.
Is_Letter
True, если Item — буква. Буква — это символ, который находится в одном из диапазонов 'A'..'Z' или 'a'..'z', или положение которого находится в одном из диапазонов 192..214, 216..246 или 248..255.
Is_Lower
True, если Item — строчная буква. Строчная буква — это символ, который находится в диапазоне 'a'..'z', или положение которого находится в одном из диапазонов 223..246 или 248..255.
Is_Upper
True, если Item — прописная буква. Прописная буква — это символ, который находится в диапазоне 'A'..'Z' или положение которого находится в одном из диапазонов 192..214 или 216.. 222.
Is_Basic
True, если Item — базовая буква. Базовая буква — это символ, который находится в одном из диапазонов 'A'..'Z' и 'a'..'z', или это один из следующих символов: 'Æ', 'æ', 'Ð', 'ð', 'Þ', 'þ' или 'ß'.
Is_Digit
True, если Item — десятичная цифра. Десятичная цифра — это символ в диапазоне '0'..'9'.
Is_Decimal_Digit
Переименование Is_Digit.
Is_Hexadecimal_Digit
True, если Item — шестнадцатеричная цифра. Шестнадцатеричная цифра — это символ, который является либо десятичной цифрой, либо находится в одном из диапазонов 'A' .. 'F' или 'a' .. 'f'.
Is_Alphanumeric
True, если Item — буквенно-цифровой символ. Буквенно-цифровой символ — это символ, который является либо буквой, либо десятичной цифрой.
Is_Special
True, если Item — специальный графический символ. Специальный графический символ — это графический символ, который не является буквенно-цифровым.
Каждое из имён To_Lower, To_Upper и To_Basic относится к двум функциям: одной, преобразующей Character в Character, и другой, преобразующей String в String. Результат каждой функции Character-в-Character описывается ниже в терминах преобразования, применённого к Item, её формальному параметру Character. Результат каждого преобразования String-в-String получается путём применения соответствующего преобразования Character-в-Character к каждому элементу параметра String функции; результатом является пустая строка, если значение формального параметра — пустая строка. Нижний предел результирующей строки — 1.
To_Lower
Возвращает соответствующее строчное значение для Item, если Is_Upper(Item), и возвращает Item в противном случае.
To_Upper
Возвращает соответствующее прописное значение для Item, если Is_Lower(Item) и Item имеет прописную форму, и возвращает Item в противном случае. Строчные буквы 'ß' и 'ÿ' не имеют прописных форм.
To_Basic
Возвращает букву, соответствующую Item, но без диакритического знака, если Item — буква, но не базовая буква; в противном случае возвращает Item.
Следующий набор функций проверяет принадлежность к диапазону символов ISO 646 или выполняет преобразование между ISO 646 и Character.
Is_ISO_646
Функция, формальный параметр которой Item имеет тип Character, возвращает True, если Item находится в подтипе ISO_646.
Is_ISO_646
Функция, формальный параметр которой Item имеет тип String, возвращает True, если Is_ISO_646(Item(I)) равно True для каждого I в Item'Range.
To_ISO_646
Функция, первый формальный параметр которой Item имеет тип Character, возвращает Item, если Is_ISO_646(Item), и возвращает символ Substitute ISO_646 в противном случае.
To_ISO_646
Функция, первый формальный параметр которой Item имеет тип String, возвращает строку, диапазон которой равен 1..Item'Length, и каждый из элементов которой определяется как To_ISO_646 соответствующего элемента в Item.
Абзацы с 42 по 48 были удалены.
Рекомендации по реализации
Этот абзац был удалён.
ПРИМЕЧАНИЯ
5 Базовая буква — это буква без диакритического знака.
6 За исключением шестнадцатеричных цифр, базовых букв и символов ISO_646, категории, определённые в функциях классификации, образуют строгую иерархию:
— Управляющие символы
— Графические символы
— Буквенно-цифровые символы
— Буквы
— Прописные буквы
— Строчные буквы
— Десятичные цифры
— Специальные графические символы