DocAda(tm) is a productivity tool of KSCE

Prev | Up | Next | Back | Forward
About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News

A.4.2 The Package Strings.Maps

The package Strings.Maps defines the types, operations, and other entities needed for character sets and character-to-character mappings.

Static Semantics

The library package Strings.Maps has the following declaration:

   
       package Ada.Strings.Maps is
          pragma Preelaborate(Maps);

          -- Representation for a set of character values:
          type Character_Set is private;

          Null_Set : constant Character_Set;

          type Character_Range is
            record
               Low  : Character;
               High : Character;
            end record;
          -- Represents Character range Low..High

          type Character_Ranges is array (Positive range <>) of Character_Range;

          function To_Set    (Ranges : in Character_Ranges) return Character_Set;

          function To_Set    (Span   : in Character_Range)  return Character_Set;

          function To_Ranges (Set    : in Character_Set)    return Character_Ranges;

          function "="   (Left, Right : in Character_Set) return Boolean;

          function "not" (Right : in Character_Set)       return Character_Set;
          function "and" (Left, Right : in Character_Set) return Character_Set;
          function "or"  (Left, Right : in Character_Set) return Character_Set;
          function "xor" (Left, Right : in Character_Set) return Character_Set;
          function "-"   (Left, Right : in Character_Set) return Character_Set;

          function Is_In (Element : in Character;
                          Set     : in Character_Set)
             return Boolean;

          function Is_Subset (Elements : in Character_Set;
                              Set      : in Character_Set)
             return Boolean;

          function "<=" (Left  : in Character_Set;
                         Right : in Character_Set)
             return Boolean renames Is_Subset;

          -- Alternative representation for a set of character values:
          subtype Character_Sequence is String;

          function To_Set (Sequence  : in Character_Sequence) return Character_Set;

          function To_Set (Singleton : in Character)          return Character_Set;

          function To_Sequence (Set  : in Character_Set)      return Character_Sequence;

          -- Representation for a character to character mapping:
          type Character_Mapping is private;

          function Value (Map     : in Character_Mapping;
                          Element : in Character)
             return Character;

          Identity : constant Character_Mapping;

          function To_Mapping (From, To : in Character_Sequence) return Character_Mapping;

          function To_Domain (Map : in Character_Mapping) return Character_Sequence;
          function To_Range  (Map : in Character_Mapping) return Character_Sequence;

          type Character_Mapping_Function is
             access function (From : in Character) return Character;

       private
          ... -- not specified by the language
       end Ada.Strings.Maps;

An object of type Character_Set represents a set of characters.

Null_Set represents the set containing no characters.

An object Obj of type Character_Range represents the set of characters in the range Obj.Low .. Obj.High.

An object Obj of type Character_Ranges represents the union of the sets corresponding to Obj(I) for I in Obj'Range.

    
       function To_Set (Ranges : in Character_Ranges) return Character_Set;
    
       function To_Set (Span : in Character_Range) return Character_Set;
    
       function To_Ranges (Set : in Character_Set) return Character_Ranges;
    
       function "=" (Left, Right : in Character_Set) return Boolean;

Each of the logical operators "not", "and", "or", and "xor" returns a Character_Set value that represents the set obtained by applying the corresponding operation to the set(s) represented by the parameter(s) of the operator. "-"(Left, Right) is equivalent to "and"(Left, "not"(Right)).

    
       function Is_In (Element : in Character;
                       Set     : in Character_Set);
          return Boolean;
    
       function Is_Subset (Elements : in Character_Set;
                           Set      : in Character_Set)
          return Boolean;
    
       subtype Character_Sequence is String;
    
       function To_Set (Sequence  : in Character_Sequence) return Character_Set;

       function To_Set (Singleton : in Character)          return Character_Set;
    
       function To_Sequence (Set : in Character_Set) return Character_Sequence;
    
       type Character_Mapping is private;
    
       function Value (Map     : in Character_Mapping;
                       Element : in Character)
          return Character;

A character C matches a pattern character P with respect to a given Character_Mapping value Map if Value(Map, C) = P. A string S matches a pattern string P with respect to a given Character_Mapping if their lengths are the same and if each character in S matches its corresponding character in the pattern string P.

String handling subprograms that deal with character mappings have parameters whose type is Character_Mapping.

    
       Identity : constant Character_Mapping;
    
       function To_Mapping (From, To : in Character_Sequence) return Character_Mapping;
    
       function To_Domain (Map : in Character_Mapping) return Character_Sequence;
    
       function To_Range  (Map : in Character_Mapping) return Character_Sequence;

An object F of type Character_Mapping_Function maps a Character value C to the Character value F.all(C), which is said to match C with respect to mapping function F.

Examples

To_Mapping("ABCD", "ZZAB") returns a Character_Mapping that maps 'A' and 'B' to 'Z', 'C' to 'A', 'D' to 'B', and each other Character to itself.

About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News
Prev | Up | Next | Back | Forward


Copyright © 1994-1997 by Kempe Software Capital Enterprises. All Rights Reserved. For comments on this DocAda(tm) hypertext document, please write to KSCE, at docada@ksce.com