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.3 Fixed-Length String Handling

The language-defined package Strings.Fixed provides string-handling subprograms for fixed-length strings; that is, for values of type Standard.String. Several of these subprograms are procedures that modify the contents of a String that is passed as an out or an in out parameter; each has additional parameters to control the effect when the logical length of the result differs from the parameter's length.

For each function that returns a String, the lower bound of the returned value is 1.

The basic model embodied in the package is that a fixed-length string comprises significant characters and possibly padding (with space characters) on either or both ends. When a shorter string is copied to a longer string, padding is inserted, and when a longer string is copied to a shorter one, padding is stripped. The Move procedure in Strings.Fixed, which takes a String as an out parameter, allows the programmer to control these effects. Similar control is provided by the string transformation procedures.

Static Semantics

The library package Strings.Fixed has the following declaration:

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

       -- "Copy" procedure for strings of possibly different lengths

          procedure Move (Source  : in  String;
                          Target  : out String;
                          Drop    : in  Truncation := Error;
                          Justify : in  Alignment  := Left;
                          Pad     : in  Character  := Space);

       -- Search subprograms

          function Index (Source   : in String;
                          Pattern  : in String;
                          Going    : in Direction := Forward;
                          Mapping  : in Maps.Character_Mapping
                                       := Maps.Identity)
             return Natural;

          function Index (Source   : in String;
                          Pattern  : in String;
                          Going    : in Direction := Forward;
                          Mapping  : in Maps.Character_Mapping_Function)
             return Natural;

          function Index (Source : in String;
                          Set    : in Maps.Character_Set;
                          Test   : in Membership := Inside;
                          Going  : in Direction  := Forward)
             return Natural;

          function Index_Non_Blank (Source : in String;
                                    Going  : in Direction := Forward)
             return Natural;

          function Count (Source   : in String;
                          Pattern  : in String;
                          Mapping  : in Maps.Character_Mapping
                                        := Maps.Identity)
             return Natural;

          function Count (Source   : in String;
                          Pattern  : in String;
                          Mapping  : in Maps.Character_Mapping_Function)
             return Natural;

          function Count (Source   : in String;
                          Set      : in Maps.Character_Set)
             return Natural;

          procedure Find_Token (Source : in String;
                                Set    : in Maps.Character_Set;
                                Test   : in Membership;
                                First  : out Positive;
                                Last   : out Natural);

       -- String translation subprograms

          function Translate (Source  : in String;
                              Mapping : in Maps.Character_Mapping)
             return String;

          procedure Translate (Source  : in out String;
                               Mapping : in Maps.Character_Mapping);

          function Translate (Source  : in String;
                              Mapping : in Maps.Character_Mapping_Function)
             return String;

          procedure Translate (Source  : in out String;
                               Mapping : in Maps.Character_Mapping_Function);

       -- String transformation subprograms

          function Replace_Slice (Source   : in String;
                                  Low      : in Positive;
                                  High     : in Natural;
                                  By       : in String)
             return String;

          procedure Replace_Slice (Source   : in out String;
                                   Low      : in Positive;
                                   High     : in Natural;
                                   By       : in String;
                                   Drop     : in Truncation := Error;
                                   Justify  : in Alignment  := Left;
                                   Pad      : in Character  := Space);

          function Insert (Source   : in String;
                           Before   : in Positive;
                           New_Item : in String)
             return String;

          procedure Insert (Source   : in out String;
                            Before   : in Positive;
                            New_Item : in String;
                            Drop     : in Truncation := Error);

          function Overwrite (Source   : in String;
                              Position : in Positive;
                              New_Item : in String)
             return String;

          procedure Overwrite (Source   : in out String;
                               Position : in Positive;
                               New_Item : in String;
                               Drop     : in Truncation := Right);

          function Delete (Source  : in String;
                           From    : in Positive;
                           Through : in Natural)
             return String;

          procedure Delete (Source  : in out String;
                            From    : in Positive;
                            Through : in Natural;
                            Justify : in Alignment := Left;
                            Pad     : in Character := Space);

        --String selector subprograms
          function Trim (Source : in String;
                         Side   : in Trim_End)
             return String;

          procedure Trim (Source  : in out String;
                          Side    : in Trim_End;
                          Justify : in Alignment := Left;
                          Pad     : in Character := Space);

          function Trim (Source : in String;
                         Left   : in Maps.Character_Set;
                         Right  : in Maps.Character_Set)
             return String;

          procedure Trim (Source  : in out String;
                          Left    : in Maps.Character_Set;
                          Right   : in Maps.Character_Set;
                          Justify : in Alignment := Strings.Left;
                          Pad     : in Character := Space);

          function Head (Source : in String;
                         Count  : in Natural;
                         Pad    : in Character := Space)
             return String;

          procedure Head (Source  : in out String;
                          Count   : in Natural;
                          Justify : in Alignment := Left;
                          Pad     : in Character := Space);

          function Tail (Source : in String;
                         Count  : in Natural;
                         Pad    : in Character := Space)
             return String;

          procedure Tail (Source  : in out String;
                          Count   : in Natural;
                          Justify : in Alignment := Left;
                          Pad     : in Character := Space);

       --String constructor functions

          function "*" (Left  : in Natural;
                        Right : in Character) return String;

          function "*" (Left  : in Natural;
                        Right : in String) return String;

       end Ada.Strings.Fixed;

The effects of the above subprograms are as follows.

    
       procedure Move (Source  : in  String;
                       Target  : out String;
                       Drop    : in  Truncation := Error;
                       Justify : in  Alignment  := Left;
                       Pad     : in  Character  := Space);
    
       function Index (Source   : in String;
                       Pattern  : in String;
                       Going    : in Direction := Forward;
                       Mapping  : in Maps.Character_Mapping
                                     := Maps.Identity)
          return Natural;

       function Index (Source   : in String;
                       Pattern  : in String;
                       Going    : in Direction := Forward;
                       Mapping  : in Maps.Character_Mapping_Function)
          return Natural;
    
       function Index (Source : in String;
                       Set    : in Maps.Character_Set;
                       Test   : in Membership := Inside;
                       Going  : in Direction  := Forward)
          return Natural;
    
       function Index_Non_Blank (Source : in String;
                                 Going  : in Direction := Forward)
          return Natural;
    
       function Count (Source   : in String;
                       Pattern  : in String;
                       Mapping  : in Maps.Character_Mapping
                                    := Maps.Identity)
          return Natural;

       function Count (Source   : in String;
                       Pattern  : in String;
                       Mapping  : in Maps.Character_Mapping_Function)
          return Natural;
    
       function Count (Source   : in String;
                       Set      : in Maps.Character_Set)
          return Natural;
    
       procedure Find_Token (Source : in String;
                             Set    : in Maps.Character_Set;
                             Test   : in Membership;
                             First  : out Positive;
                             Last   : out Natural);
    
       function Translate (Source  : in String;
                           Mapping : in Maps.Character_Mapping)
          return String;

       function Translate (Source  : in String;
                           Mapping : in Maps.Character_Mapping_Function)
          return String;
    
       procedure Translate (Source  : in out String;
                            Mapping : in Maps.Character_Mapping);

       procedure Translate (Source  : in out String;
                            Mapping : in Maps.Character_Mapping_Function);
    
       function Replace_Slice (Source   : in String;
                               Low      : in Positive;
                               High     : in Natural;
                               By       : in String)
          return String;
    
       procedure Replace_Slice (Source   : in out String;
                                Low      : in Positive;
                                High     : in Natural;
                                By       : in String;
                                Drop     : in Truncation := Error;
                                Justify  : in Alignment  := Left;
                                Pad      : in Character  := Space);
    
       function Insert (Source   : in String;
                        Before   : in Positive;
                        New_Item : in String)
          return String;
    
       procedure Insert (Source   : in out String;
                         Before   : in Positive;
                         New_Item : in String;
                         Drop     : in Truncation := Error);
    
       function Overwrite (Source   : in String;
                           Position : in Positive;
                           New_Item : in String)
          return String;
    
       procedure Overwrite (Source   : in out String;
                            Position : in Positive;
                            New_Item : in String;
                            Drop     : in Truncation := Right);
    
       function Delete (Source  : in String;
                        From    : in Positive;
                        Through : in Natural)
          return String;
    
       procedure Delete (Source  : in out String;
                         From    : in Positive;
                         Through : in Natural;
                         Justify : in Alignment := Left;
                         Pad     : in Character := Space);
    
       function Trim (Source : in String;
                      Side   : in Trim_End)
         return String;
    
       procedure Trim (Source  : in out String;
                       Side    : in Trim_End;
                       Justify : in Alignment := Left;
                       Pad     : in Character := Space);
    
       function Trim (Source : in String;
                      Left   : in Maps.Character_Set;
                      Right  : in Maps.Character_Set)
          return String;
    
       procedure Trim (Source  : in out String;
                       Left    : in Maps.Character_Set;
                       Right   : in Maps.Character_Set;
                       Justify : in Alignment := Strings.Left;
                       Pad     : in Character := Space);
    
       function Head (Source : in String;
                      Count  : in Natural;
                      Pad    : in Character := Space)
          return String;
    
       procedure Head (Source  : in out String;
                       Count   : in Natural;
                       Justify : in Alignment := Left;
                       Pad     : in Character := Space);
     
       function Tail (Source : in String;
                      Count  : in Natural;
                      Pad    : in Character := Space)
          return String;
     
       procedure Tail (Source  : in out String;
                       Count   : in Natural;
                       Justify : in Alignment := Left;
                       Pad     : in Character := Space);
     
       function "*" (Left  : in Natural;
                     Right : in Character) return String;

       function "*" (Left  : in Natural;
                     Right : in String) return String;

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