Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

A.4.7 Обработка Wide_String

Средства для работы со строками элементов Wide_Character находятся в пакетах Strings.Wide_Maps, Strings.Wide_Fixed, Strings.Wide_Bounded, Strings.Wide_Unbounded и Strings.Wide_Maps.Wide_Constants, а также в библиотечных функциях Strings.Wide_Hash, Strings.Wide_Fixed.Wide_Hash, Strings.Wide_Bounded.Wide_Hash, Strings.Wide_Unbounded.Wide_Hash, Strings.Wide_Hash_Case_Insensitive, Strings.Wide_Fixed.Wide_Hash_Case_Insensitive, Strings.Wide_Bounded.Wide_Hash_Case_Insensitive, Strings.Wide_Unbounded.Wide_Hash_Case_Insensitive, Strings.Wide_Equal_Case_Insensitive, Strings.Wide_Fixed.Wide_Equal_Case_Insensitive, Strings.Wide_Bounded.Wide_Equal_Case_Insensitive и Strings.Wide_Unbounded.Wide_Equal_Case_Insensitive. Они предоставляют те же операции обработки строк, что и соответствующие пакеты и функции для строк элементов Character.

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

У пакета Strings.Wide_Maps есть следующее объявление.
package Ada.Strings.Wide_Maps
with Preelaborate, Nonblocking, Global => in out synchronized is
-- Представление набора значений Wide_Character:
type Wide_Character_Set is private
with Preelaborable_Initialization;
Null_Set : constant Wide_Character_Set;
type Wide_Character_Range is
record
Low : Wide_Character;
High : Wide_Character;
end record;
-- Представляет диапазон Wide_Character Low..High
type Wide_Character_Ranges is array (Positive range <>)
of Wide_Character_Range;
function To_Set (Ranges : in Wide_Character_Ranges)
return Wide_Character_Set;
function To_Set (Span : in Wide_Character_Range)
return Wide_Character_Set;
function To_Ranges (Set : in Wide_Character_Set)
return Wide_Character_Ranges;
function "=" (Left, Right : in Wide_Character_Set) return Boolean;
function "not" (Right : in Wide_Character_Set)
return Wide_Character_Set;
function "and" (Left, Right : in Wide_Character_Set)
return Wide_Character_Set;
function "or" (Left, Right : in Wide_Character_Set)
return Wide_Character_Set;
function "xor" (Left, Right : in Wide_Character_Set)
return Wide_Character_Set;
function "-" (Left, Right : in Wide_Character_Set)
return Wide_Character_Set;
function Is_In (Element : in Wide_Character;
Set : in Wide_Character_Set)
return Boolean;
function Is_Subset (Elements : in Wide_Character_Set;
Set : in Wide_Character_Set)
return Boolean;
function "<=" (Left : in Wide_Character_Set;
Right : in Wide_Character_Set)
return Boolean renames Is_Subset;
-- Альтернативное представление набора значений Wide_Character:
subtype Wide_Character_Sequence is Wide_String;
function To_Set (Sequence : in Wide_Character_Sequence)
return Wide_Character_Set;
function To_Set (Singleton : in Wide_Character)
return Wide_Character_Set;
function To_Sequence (Set : in Wide_Character_Set)
return Wide_Character_Sequence;
-- Представление сопоставления Wide_Character к Wide_Character:
type Wide_Character_Mapping is private
with Preelaborable_Initialization;
function Value (Map : in Wide_Character_Mapping;
Element : in Wide_Character)
return Wide_Character;
Identity : constant Wide_Character_Mapping;
function To_Mapping (From, To : in Wide_Character_Sequence)
return Wide_Character_Mapping;
function To_Domain (Map : in Wide_Character_Mapping)
return Wide_Character_Sequence;
function To_Range (Map : in Wide_Character_Mapping)
return Wide_Character_Sequence;
type Wide_Character_Mapping_Function is
access function (From : in Wide_Character) return Wide_Character;
private
... -- не указано языком
end Ada.Strings.Wide_Maps;
Оператор контекста для каждого из пакетов Strings.Wide_Fixed, Strings.Wide_Bounded и Strings.Wide_Unbounded идентифицирует Strings.Wide_Maps вместо Strings.Maps.
Типы Wide_Character_Set и Wide_Character_Mapping требуют финализации.
Для каждого из пакетов Strings.Fixed, Strings.Bounded, Strings.Unbounded и Strings.Maps.Constants, и для библиотечных функций Strings.Hash, Strings.Fixed.Hash, Strings.Bounded.Hash, Strings.Unbounded.Hash, Strings.Hash_Case_Insensitive, Strings.Fixed.Hash_Case_Insensitive, Strings.Bounded.Hash_Case_Insensitive, Strings.Unbounded.Hash_Case_Insensitive, Strings.Equal_Case_Insensitive, Strings.Fixed.Equal_Case_Insensitive, Strings.Bounded.Equal_Case_Insensitive и Strings.Unbounded.Equal_Case_Insensitive, соответствующий пакет или функция широких строк имеют одинаковое содержимое, за исключением
  • Wide_Space заменяет Space
  • Wide_Character заменяет Character
  • Wide_String заменяет String
  • Wide_Character_Set заменяет Character_Set
  • Wide_Character_Mapping заменяет Character_Mapping
  • Wide_Character_Mapping_Function заменяет Character_Mapping_Function
  • Wide_Maps заменяет Maps
  • Bounded_Wide_String заменяет Bounded_String
  • Null_Bounded_Wide_String заменяет Null_Bounded_String
  • To_Bounded_Wide_String заменяет To_Bounded_String
  • To_Wide_String заменяет To_String
  • Set_Bounded_Wide_String заменяет Set_Bounded_String
  • Unbounded_Wide_String заменяет Unbounded_String
  • Null_Unbounded_Wide_String заменяет Null_Unbounded_String
  • Wide_String_Access заменяет String_Access
  • To_Unbounded_Wide_String заменяет To_Unbounded_String
  • Set_Unbounded_Wide_String заменяет Set_Unbounded_String
Следующее дополнительное объявление присутствует в пакете Strings.Wide_Maps.Wide_Constants:
Character_Set : constant Wide_Maps.Wide_Character_Set;
--Содержит каждое значение Wide_Character WC, для которого
--Characters.Conversions.Is_Character(WC) равно True
Каждый константа Wide_Character_Set в пакете Strings.Wide_Maps.Wide_Constants не содержит значений за пределами части Character типа Wide_Character. Аналогично, каждая константа Wide_Character_Mapping в этом пакете является отображением тождества, когда применяется к любому элементу за пределами части Character типа Wide_Character.
Аспект Pure заменяется аспектами Preelaborate, Nonblocking, Global => in out synchronized в пакете Strings.Wide_Maps.Wide_Constants.
ПРИМЕЧАНИЕ Если в качестве аргумента Wide_Character_Mapping_Function передается нулевое значение, возникает ошибка Constraint_Error.


Spec-Zone.ru

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