Справочник по Ada 95
A.3.2 Пакет Characters.Handling
Статическая семантика
Библиотечный пакет Characters.Handling имеет следующее объявление:
package Ada.Characters.Handling is
pragma Preelaborate(Handling);
pragma Preelaborate(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;
--Классификация и преобразования между Wide_Character и Character.
function Is_Character (Item : in Wide_Character) return Boolean;
function Is_String (Item : in Wide_String) return Boolean;
function Is_String (Item : in Wide_String) return Boolean;
function To_Character (Item : in Wide_Character;
Substitute : in Character := ' ')
return Character;
Substitute : in Character := ' ')
return Character;
function To_String (Item : in Wide_String;
Substitute : in Character := ' ')
return String;
Substitute : in Character := ' ')
return String;
function To_Wide_Character (Item : in Character) return Wide_Character;
function To_Wide_String (Item : in String) return Wide_String;
end Ada.Characters.Handling;
В описании ниже для каждой функции, возвращающей значение Boolean, эффект описывается в терминах условий, при которых возвращается значение True. Если эти условия не выполняются, функция возвращает False.
Каждая из следующих функций классификации имеет формальный параметр Character, Item, и возвращает логическое значение.
- 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-to-Character описан ниже в терминах преобразования, применяемого к Item, ее формальному параметру Character. Результат каждого преобразования String-to-String получается путем применения соответствующего преобразования Character-to-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.
Следующий набор функций проверяет значения Wide_Character на принадлежность к Character или преобразует между соответствующими символами Wide_Character и Character.
- Is_Character
- Возвращает True, если Wide_Character'Pos(Item) <= Character'Pos(Character'Last).
- Is_String
- Возвращает True, если Is_Character(Item(I)) равно True для каждого I в Item'Range.
- To_Character
- Возвращает Character, соответствующий Item, если Is_Character(Item), и возвращает символ Substitute Character в противном случае.
- To_String
- Возвращает строку, диапазон которой 1..Item'Length, и каждый элемент которой задается To_Character соответствующего элемента в Item.
- To_Wide_Character
- Возвращает Wide_Character X такой, что Character'Pos(Item) = Wide_Character'Pos(X).
- To_Wide_String
- Возвращает Wide_String, диапазон которой 1..Item'Length, и каждый элемент которой задается To_Wide_Character соответствующего элемента в Item.
Рекомендации по реализации
Если реализация предоставляет локальное определение Character или Wide_Character, то эффекты подпрограмм в Characters.Handling должны отражать эти локализации. См. также 3.5.2.
ПРИМЕЧАНИЯ
5 Базовая буква — это буква без диакритического знака.
6 За исключением шестнадцатеричных цифр, базовых букв и символов ISO_646, категории, определенные в функциях классификации, образуют строгую иерархию:
-- Управляющие символы
-- Графические символы
-- Буквенно-цифровые символы
-- Буквы
-- Прописные буквы
-- Строчные буквы
END_OF_DOCUMENT_MARKER -- Десятичные цифры
-- Специальные графические символы