Ada Conformity Assessment Authority      Home Conformity Assessment   Test Suite ARGAda Standard
 
Ada Reference ManualLegal Information
Contents   Index   References   Search   Previous   Next 

A.4.7 Wide_String Handling

1/3
Facilities for handling strings of Wide_Character elements are found in the packages Strings.Wide_Maps, Strings.Wide_Fixed, Strings.Wide_Bounded, Strings.Wide_Unbounded, and Strings.Wide_Maps.Wide_Constants, and in the library functions 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, and Strings.Wide_Unbounded.Wide_Equal_Case_Insensitive. They provide the same string-handling operations as the corresponding packages and functions for strings of Character elements.

Static Semantics

2
The package Strings.Wide_Maps has the following declaration.
3
package Ada.Strings.Wide_Maps is
   pragma Preelaborate(Wide_Maps);
4/2
   -- Representation for a set of Wide_Character values:
   type Wide_Character_Set is private;
   pragma Preelaborable_Initialization(Wide_Character_Set);
5
   Null_Set : constant Wide_Character_Set;
6
   type Wide_Character_Range is
     record
         Low  : Wide_Character;
         High : Wide_Character;
     end record;
   -- Represents Wide_Character range Low..High
7
   type Wide_Character_Ranges is array (Positive range <>)
      of Wide_Character_Range;
8
   function To_Set    (Ranges : in Wide_Character_Ranges)
      return Wide_Character_Set;
9
   function To_Set    (Span   : in Wide_Character_Range)
      return Wide_Character_Set;
10
   function To_Ranges (Set    : in Wide_Character_Set)
      return Wide_Character_Ranges;
11
   function "="   (Left, Right : in Wide_Character_Set) return Boolean;
12
   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;
13
   function Is_In (Element : in Wide_Character;
                   Set     : in Wide_Character_Set)
      return Boolean;
14
   function Is_Subset (Elements : in Wide_Character_Set;
                       Set      : in Wide_Character_Set)
      return Boolean;
15
   function "<=" (Left  : in Wide_Character_Set;
                  Right : in Wide_Character_Set)
      return Boolean renames Is_Subset;
16
   -- Alternative representation for a set of Wide_Character values:
   subtype Wide_Character_Sequence is Wide_String;
17
   function To_Set (Sequence  : in Wide_Character_Sequence)
      return Wide_Character_Set;
18
   function To_Set (Singleton : in Wide_Character)
      return Wide_Character_Set;
19
   function To_Sequence (Set  : in Wide_Character_Set)
      return Wide_Character_Sequence;
20/2
   -- Representation for a Wide_Character to Wide_Character mapping:
   type Wide_Character_Mapping is private;
   pragma Preelaborable_Initialization(Wide_Character_Mapping);
21
   function Value (Map     : in Wide_Character_Mapping;
                   Element : in Wide_Character)
      return Wide_Character;
22
   Identity : constant Wide_Character_Mapping;
23
   function To_Mapping (From, To : in Wide_Character_Sequence)
      return Wide_Character_Mapping;
24
   function To_Domain (Map : in Wide_Character_Mapping)
      return Wide_Character_Sequence;
25
   function To_Range  (Map : in Wide_Character_Mapping)
      return Wide_Character_Sequence;
26
   type Wide_Character_Mapping_Function is
      access function (From : in Wide_Character) return Wide_Character;
27
private
   ... -- not specified by the language
end Ada.Strings.Wide_Maps;
28
The context clause for each of the packages Strings.Wide_Fixed, Strings.Wide_Bounded, and Strings.Wide_Unbounded identifies Strings.Wide_Maps instead of Strings.Maps.
28.1/3
   Types Wide_Character_Set and Wide_Character_Mapping need finalization.
29/3
 For each of the packages Strings.Fixed, Strings.Bounded, Strings.Unbounded, and Strings.Maps.Constants, and for library functions 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, and Strings.Unbounded.Equal_Case_Insensitive, the corresponding wide string package or function has the same contents except that 
30
Wide_Space replaces Space
31
Wide_Character replaces Character
32
Wide_String replaces String
33
Wide_Character_Set replaces Character_Set
34
Wide_Character_Mapping replaces Character_Mapping
35
Wide_Character_Mapping_Function replaces Character_Mapping_Function
36
Wide_Maps replaces Maps
37
Bounded_Wide_String replaces Bounded_String
38
Null_Bounded_Wide_String replaces Null_Bounded_String
39
To_Bounded_Wide_String replaces To_Bounded_String
40
To_Wide_String replaces To_String
40.1/2
Set_Bounded_Wide_String replaces Set_Bounded_String
41
Unbounded_Wide_String replaces Unbounded_String
42
Null_Unbounded_Wide_String replaces Null_Unbounded_String
43
Wide_String_Access replaces String_Access
44
To_Unbounded_Wide_String replaces To_Unbounded_String
44.1/2
Set_Unbounded_Wide_String replaces Set_Unbounded_String
45
The following additional declaration is present in Strings.Wide_Maps.Wide_Constants: 
46/2
Character_Set : constant Wide_Maps.Wide_Character_Set;
--Contains each Wide_Character value WC such that
--Characters.Conversions.Is_Character(WC) is True
46.1/2
   Each Wide_Character_Set constant in the package Strings.Wide_Maps.Wide_Constants contains no values outside the Character portion of Wide_Character. Similarly, each Wide_Character_Mapping constant in this package is the identity mapping when applied to any element outside the Character portion of Wide_Character.
46.2/2
   Pragma Pure is replaced by pragma Preelaborate in Strings.Wide_Maps.Wide_Constants.
NOTES
47
16  If a null Wide_Character_Mapping_Function is passed to any of the Wide_String handling subprograms, Constraint_Error is propagated.

Contents   Index   References   Search   Previous   Next 
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe