Справочник по Ada 2005
Обработка Wide_Wide_строк
Средства для работы со строками элементов типа Wide_Wide_Character содержатся в пакетах Strings.Wide_Wide_Maps, Strings.Wide_Wide_Fixed, Strings.Wide_Wide_Bounded, Strings.Wide_Wide_Unbounded и Strings.Wide_Wide_Maps.Wide_Wide_Constants, а также в функциях Strings.Wide_Wide_Hash, Strings.Wide_Wide_Fixed.Wide_Wide_Hash, Strings.Wide_Wide_Bounded.Wide_Wide_Hash и Strings.Wide_Wide_Unbounded.Wide_Wide_Hash. Они предоставляют те же операции обработки строк, что и соответствующие пакеты и функции для строк элементов типа Character.
Статическая семантика
Пакет библиотеки Strings.Wide_Wide_Maps имеет следующее объявление.
package Ada.Strings.Wide_Wide_Maps is
pragma Preelaborate(Wide_Wide_Maps);
pragma Preelaborate(Wide_Wide_Maps);
-- Представление множества значений Wide_Wide_Character:
type Wide_Wide_Character_Set is private;
pragma Preelaborable_Initialization(Wide_Wide_Character_Set);
type Wide_Wide_Character_Set is private;
pragma Preelaborable_Initialization(Wide_Wide_Character_Set);
Null_Set : constant Wide_Wide_Character_Set;
type Wide_Wide_Character_Range is
record
Low : Wide_Wide_Character;
High : Wide_Wide_Character;
end record;
-- Представляет диапазон Wide_Wide_Character Low..High
record
Low : Wide_Wide_Character;
High : Wide_Wide_Character;
end record;
-- Представляет диапазон Wide_Wide_Character Low..High
type Wide_Wide_Character_Ranges is array (Positive range <>)
of Wide_Wide_Character_Range;
of Wide_Wide_Character_Range;
function To_Set (Ranges : in Wide_Wide_Character_Ranges)
return Wide_Wide_Character_Set;
return Wide_Wide_Character_Set;
function To_Set (Span : in Wide_Wide_Character_Range)
return Wide_Wide_Character_Set;
return Wide_Wide_Character_Set;
function To_Ranges (Set : in Wide_Wide_Character_Set)
return Wide_Wide_Character_Ranges;
return Wide_Wide_Character_Ranges;
function "=" (Left, Right : in Wide_Wide_Character_Set) return Boolean;
function "not" (Right : in Wide_Wide_Character_Set)
return Wide_Wide_Character_Set;
function "and" (Left, Right : in Wide_Wide_Character_Set)
return Wide_Wide_Character_Set;
function "or" (Left, Right : in Wide_Wide_Character_Set)
return Wide_Wide_Character_Set;
function "xor" (Left, Right : in Wide_Wide_Character_Set)
return Wide_Wide_Character_Set;
function "-" (Left, Right : in Wide_Wide_Character_Set)
return Wide_Wide_Character_Set;
return Wide_Wide_Character_Set;
function "and" (Left, Right : in Wide_Wide_Character_Set)
return Wide_Wide_Character_Set;
function "or" (Left, Right : in Wide_Wide_Character_Set)
return Wide_Wide_Character_Set;
function "xor" (Left, Right : in Wide_Wide_Character_Set)
return Wide_Wide_Character_Set;
function "-" (Left, Right : in Wide_Wide_Character_Set)
return Wide_Wide_Character_Set;
function Is_In (Element : in Wide_Wide_Character;
Set : in Wide_Wide_Character_Set)
return Boolean;
Set : in Wide_Wide_Character_Set)
return Boolean;
function Is_Subset (Elements : in Wide_Wide_Character_Set;
Set : in Wide_Wide_Character_Set)
return Boolean;
Set : in Wide_Wide_Character_Set)
return Boolean;
function "<=" (Left : in Wide_Wide_Character_Set;
Right : in Wide_Wide_Character_Set)
return Boolean renames Is_Subset;
Right : in Wide_Wide_Character_Set)
return Boolean renames Is_Subset;
-- Альтернативное представление множества значений Wide_Wide_Character:
subtype Wide_Wide_Character_Sequence is Wide_Wide_String;
subtype Wide_Wide_Character_Sequence is Wide_Wide_String;
function To_Set (Sequence : in Wide_Wide_Character_Sequence)
return Wide_Wide_Character_Set;
return Wide_Wide_Character_Set;
function To_Set (Singleton : in Wide_Wide_Character)
return Wide_Wide_Character_Set;
return Wide_Wide_Character_Set;
function To_Sequence (Set : in Wide_Wide_Character_Set)
return Wide_Wide_Character_Sequence;
return Wide_Wide_Character_Sequence;
-- Представление сопоставления Wide_Wide_Character с Wide_Wide_Character:
-- отображение:
type Wide_Wide_Character_Mapping is private;
pragma Preelaborable_Initialization(Wide_Wide_Character_Mapping);
-- отображение:
type Wide_Wide_Character_Mapping is private;
pragma Preelaborable_Initialization(Wide_Wide_Character_Mapping);
function Value (Map : in Wide_Wide_Character_Mapping;
Element : in Wide_Wide_Character)
return Wide_Wide_Character;
Element : in Wide_Wide_Character)
return Wide_Wide_Character;
Identity : constant Wide_Wide_Character_Mapping;
function To_Mapping (From, To : in Wide_Wide_Character_Sequence)
return Wide_Wide_Character_Mapping;
return Wide_Wide_Character_Mapping;
function To_Domain (Map : in Wide_Wide_Character_Mapping)
return Wide_Wide_Character_Sequence;
return Wide_Wide_Character_Sequence;
function To_Range (Map : in Wide_Wide_Character_Mapping)
return Wide_Wide_Character_Sequence;
return Wide_Wide_Character_Sequence;
type Wide_Wide_Character_Mapping_Function is
access function (From : in Wide_Wide_Character)
return Wide_Wide_Character;
access function (From : in Wide_Wide_Character)
return Wide_Wide_Character;
private
... -- не указано языком
end Ada.Strings.Wide_Wide_Maps;
... -- не указано языком
end Ada.Strings.Wide_Wide_Maps;
В разделе контекста каждого из пакетов Strings.Wide_Wide_Fixed, Strings.Wide_Wide_Bounded и Strings.Wide_Wide_Unbounded указывается Strings.Wide_Wide_Maps вместо Strings.Maps.
Для каждого из пакетов Strings.Fixed, Strings.Bounded, Strings.Unbounded и Strings.Maps.Constants, и для функций Strings.Hash, Strings.Fixed.Hash, Strings.Bounded.Hash и Strings.Unbounded.Hash, соответствующий пакет или функция для строк Wide_Wide имеют такое же содержимое, за исключением того, что:
- Wide_Wide_Space заменяет Space
- Wide_Wide_Character заменяет Character
- Wide_Wide_String заменяет String
- Wide_Wide_Character_Set заменяет Character_Set
- Wide_Wide_Character_Mapping заменяет Character_Mapping
- Wide_Wide_Character_Mapping_Function заменяет Character_Mapping_Function
- Wide_Wide_Maps заменяет Maps
- Bounded_Wide_Wide_String заменяет Bounded_String
- Null_Bounded_Wide_Wide_String заменяет Null_Bounded_String
- To_Bounded_Wide_Wide_String заменяет To_Bounded_String
- To_Wide_Wide_String заменяет To_String
- Set_Bounded_Wide_Wide_String заменяет Set_Bounded_String
- Unbounded_Wide_Wide_String заменяет Unbounded_String
- Null_Unbounded_Wide_Wide_String заменяет Null_Unbounded_String
- Wide_Wide_String_Access заменяет String_Access
- To_Unbounded_Wide_Wide_String заменяет To_Unbounded_String
- Set_Unbounded_Wide_Wide_String заменяет Set_Unbounded_String
В пакете Strings.Wide_Wide_Maps.Wide_Wide_Constants присутствуют следующие дополнительные объявления:
Character_Set : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-- Содержит каждое значение Wide_Wide_Character WWC такое, что
-- Characters.Conversions.Is_Character(WWC) равно True
Wide_Character_Set : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-- Содержит каждое значение Wide_Wide_Character WWC такое, что
-- Characters.Conversions.Is_Wide_Character(WWC) равно True
-- Содержит каждое значение Wide_Wide_Character WWC такое, что
-- Characters.Conversions.Is_Character(WWC) равно True
Wide_Character_Set : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-- Содержит каждое значение Wide_Wide_Character WWC такое, что
-- Characters.Conversions.Is_Wide_Character(WWC) равно True
Каждая константа Wide_Wide_Character_Set в пакете Strings.Wide_Wide_Maps.Wide_Wide_Constants не содержит значений, выходящих за пределы части Character типа Wide_Wide_Character. Аналогично, каждая константа Wide_Wide_Character_Mapping в этом пакете является тождественным отображением при применении к любому элементу, выходящему за пределы части Character типа Wide_Wide_Character.
ПРИМЕЧАНИЯ
13 Если в любой из подпрограмм обработки Wide_Wide_String передаётся нулевая Wide_Wide_Character_Mapping_Function, возникает исключение Constraint_Error.