File : a-strbou.ads


   1 ------------------------------------------------------------------------------
   2 --                                                                          --
   3 --                         GNAT RUN-TIME COMPONENTS                         --
   4 --                                                                          --
   5 --                  A D A . S T R I N G S . B O U N D E D                   --
   6 --                                                                          --
   7 --                                 S p e c                                  --
   8 --                                                                          --
   9 --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  10 --                                                                          --
  11 -- This specification is derived from the Ada Reference Manual for use with --
  12 -- GNAT. The copyright notice above, and the license provisions that follow --
  13 -- apply solely to the  contents of the part following the private keyword. --
  14 --                                                                          --
  15 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  16 -- terms of the  GNU General Public License as published  by the Free Soft- --
  17 -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  18 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  19 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  20 -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
  21 --                                                                          --
  22 --                                                                          --
  23 --                                                                          --
  24 --                                                                          --
  25 --                                                                          --
  26 -- You should have received a copy of the GNU General Public License and    --
  27 -- a copy of the GCC Runtime Library Exception along with this program;     --
  28 -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
  29 -- <http://www.gnu.org/licenses/>.                                          --
  30 --                                                                          --
  31 -- GNAT was originally developed  by the GNAT team at  New York University. --
  32 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  33 --                                                                          --
  34 ------------------------------------------------------------------------------
  35 
  36 with Ada.Strings.Maps;
  37 with Ada.Strings.Superbounded;
  38 
  39 package Ada.Strings.Bounded is
  40    pragma Preelaborate;
  41 
  42    generic
  43       Max : Positive;
  44       --  Maximum length of a Bounded_String
  45 
  46    package Generic_Bounded_Length is
  47 
  48       Max_Length : constant Positive := Max;
  49 
  50       type Bounded_String is private;
  51       pragma Preelaborable_Initialization (Bounded_String);
  52 
  53       Null_Bounded_String : constant Bounded_String;
  54 
  55       subtype Length_Range is Natural range 0 .. Max_Length;
  56 
  57       function Length (Source : Bounded_String) return Length_Range;
  58 
  59       --------------------------------------------------------
  60       -- Conversion, Concatenation, and Selection Functions --
  61       --------------------------------------------------------
  62 
  63       function To_Bounded_String
  64         (Source : String;
  65          Drop   : Truncation := Error) return Bounded_String;
  66 
  67       function To_String (Source : Bounded_String) return String;
  68 
  69       procedure Set_Bounded_String
  70         (Target : out Bounded_String;
  71          Source : String;
  72          Drop   : Truncation := Error);
  73       pragma Ada_05 (Set_Bounded_String);
  74 
  75       function Append
  76         (Left  : Bounded_String;
  77          Right : Bounded_String;
  78          Drop  : Truncation  := Error) return Bounded_String;
  79 
  80       function Append
  81         (Left  : Bounded_String;
  82          Right : String;
  83          Drop  : Truncation := Error) return Bounded_String;
  84 
  85       function Append
  86         (Left  : String;
  87          Right : Bounded_String;
  88          Drop  : Truncation := Error) return Bounded_String;
  89 
  90       function Append
  91         (Left  : Bounded_String;
  92          Right : Character;
  93          Drop  : Truncation := Error) return Bounded_String;
  94 
  95       function Append
  96         (Left  : Character;
  97          Right : Bounded_String;
  98          Drop  : Truncation := Error) return Bounded_String;
  99 
 100       procedure Append
 101         (Source   : in out Bounded_String;
 102          New_Item : Bounded_String;
 103          Drop     : Truncation  := Error);
 104 
 105       procedure Append
 106         (Source   : in out Bounded_String;
 107          New_Item : String;
 108          Drop     : Truncation  := Error);
 109 
 110       procedure Append
 111         (Source   : in out Bounded_String;
 112          New_Item : Character;
 113          Drop     : Truncation  := Error);
 114 
 115       function "&"
 116         (Left  : Bounded_String;
 117          Right : Bounded_String) return Bounded_String;
 118 
 119       function "&"
 120         (Left  : Bounded_String;
 121          Right : String) return Bounded_String;
 122 
 123       function "&"
 124         (Left  : String;
 125          Right : Bounded_String) return Bounded_String;
 126 
 127       function "&"
 128         (Left  : Bounded_String;
 129          Right : Character) return Bounded_String;
 130 
 131       function "&"
 132         (Left  : Character;
 133          Right : Bounded_String) return Bounded_String;
 134 
 135       function Element
 136         (Source : Bounded_String;
 137          Index  : Positive) return Character;
 138 
 139       procedure Replace_Element
 140         (Source : in out Bounded_String;
 141          Index  : Positive;
 142          By     : Character);
 143 
 144       function Slice
 145         (Source : Bounded_String;
 146          Low    : Positive;
 147          High   : Natural) return String;
 148 
 149       function Bounded_Slice
 150         (Source : Bounded_String;
 151          Low    : Positive;
 152          High   : Natural) return Bounded_String;
 153       pragma Ada_05 (Bounded_Slice);
 154 
 155       procedure Bounded_Slice
 156         (Source : Bounded_String;
 157          Target : out Bounded_String;
 158          Low    : Positive;
 159          High   : Natural);
 160       pragma Ada_05 (Bounded_Slice);
 161 
 162       function "="
 163         (Left  : Bounded_String;
 164          Right : Bounded_String) return Boolean;
 165 
 166       function "="
 167         (Left  : Bounded_String;
 168          Right : String) return Boolean;
 169 
 170       function "="
 171         (Left  : String;
 172          Right : Bounded_String) return Boolean;
 173 
 174       function "<"
 175         (Left  : Bounded_String;
 176          Right : Bounded_String) return Boolean;
 177 
 178       function "<"
 179         (Left  : Bounded_String;
 180          Right : String) return Boolean;
 181 
 182       function "<"
 183         (Left  : String;
 184          Right : Bounded_String) return Boolean;
 185 
 186       function "<="
 187         (Left  : Bounded_String;
 188          Right : Bounded_String) return Boolean;
 189 
 190       function "<="
 191         (Left  : Bounded_String;
 192          Right : String) return Boolean;
 193 
 194       function "<="
 195         (Left  : String;
 196          Right : Bounded_String) return Boolean;
 197 
 198       function ">"
 199         (Left  : Bounded_String;
 200          Right : Bounded_String) return Boolean;
 201 
 202       function ">"
 203         (Left  : Bounded_String;
 204          Right : String) return Boolean;
 205 
 206       function ">"
 207         (Left  : String;
 208          Right : Bounded_String) return Boolean;
 209 
 210       function ">="
 211         (Left  : Bounded_String;
 212          Right : Bounded_String) return Boolean;
 213 
 214       function ">="
 215         (Left  : Bounded_String;
 216          Right : String) return Boolean;
 217 
 218       function ">="
 219         (Left  : String;
 220          Right : Bounded_String) return Boolean;
 221 
 222       ----------------------
 223       -- Search Functions --
 224       ----------------------
 225 
 226       function Index
 227         (Source  : Bounded_String;
 228          Pattern : String;
 229          Going   : Direction := Forward;
 230          Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
 231 
 232       function Index
 233         (Source  : Bounded_String;
 234          Pattern : String;
 235          Going   : Direction := Forward;
 236          Mapping : Maps.Character_Mapping_Function) return Natural;
 237 
 238       function Index
 239         (Source : Bounded_String;
 240          Set    : Maps.Character_Set;
 241          Test   : Membership := Inside;
 242          Going  : Direction  := Forward) return Natural;
 243 
 244       function Index
 245         (Source  : Bounded_String;
 246          Pattern : String;
 247          From    : Positive;
 248          Going   : Direction := Forward;
 249          Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
 250       pragma Ada_05 (Index);
 251 
 252       function Index
 253         (Source  : Bounded_String;
 254          Pattern : String;
 255          From    : Positive;
 256          Going   : Direction := Forward;
 257          Mapping : Maps.Character_Mapping_Function) return Natural;
 258       pragma Ada_05 (Index);
 259 
 260       function Index
 261         (Source  : Bounded_String;
 262          Set     : Maps.Character_Set;
 263          From    : Positive;
 264          Test    : Membership := Inside;
 265          Going   : Direction := Forward) return Natural;
 266       pragma Ada_05 (Index);
 267 
 268       function Index_Non_Blank
 269         (Source : Bounded_String;
 270          Going  : Direction := Forward) return Natural;
 271 
 272       function Index_Non_Blank
 273         (Source : Bounded_String;
 274          From   : Positive;
 275          Going  : Direction := Forward) return Natural;
 276       pragma Ada_05 (Index_Non_Blank);
 277 
 278       function Count
 279         (Source  : Bounded_String;
 280          Pattern : String;
 281          Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
 282 
 283       function Count
 284         (Source  : Bounded_String;
 285          Pattern : String;
 286          Mapping : Maps.Character_Mapping_Function) return Natural;
 287 
 288       function Count
 289         (Source : Bounded_String;
 290          Set    : Maps.Character_Set) return Natural;
 291 
 292       procedure Find_Token
 293         (Source : Bounded_String;
 294          Set    : Maps.Character_Set;
 295          From   : Positive;
 296          Test   : Membership;
 297          First  : out Positive;
 298          Last   : out Natural);
 299       pragma Ada_2012 (Find_Token);
 300 
 301       procedure Find_Token
 302         (Source : Bounded_String;
 303          Set    : Maps.Character_Set;
 304          Test   : Membership;
 305          First  : out Positive;
 306          Last   : out Natural);
 307 
 308       ------------------------------------
 309       -- String Translation Subprograms --
 310       ------------------------------------
 311 
 312       function Translate
 313         (Source  : Bounded_String;
 314          Mapping : Maps.Character_Mapping) return Bounded_String;
 315 
 316       procedure Translate
 317         (Source   : in out Bounded_String;
 318          Mapping  : Maps.Character_Mapping);
 319 
 320       function Translate
 321         (Source  : Bounded_String;
 322          Mapping : Maps.Character_Mapping_Function) return Bounded_String;
 323 
 324       procedure Translate
 325         (Source  : in out Bounded_String;
 326          Mapping : Maps.Character_Mapping_Function);
 327 
 328       ---------------------------------------
 329       -- String Transformation Subprograms --
 330       ---------------------------------------
 331 
 332       function Replace_Slice
 333         (Source : Bounded_String;
 334          Low    : Positive;
 335          High   : Natural;
 336          By     : String;
 337          Drop   : Truncation := Error) return Bounded_String;
 338 
 339       procedure Replace_Slice
 340         (Source   : in out Bounded_String;
 341          Low      : Positive;
 342          High     : Natural;
 343          By       : String;
 344          Drop     : Truncation := Error);
 345 
 346       function Insert
 347         (Source   : Bounded_String;
 348          Before   : Positive;
 349          New_Item : String;
 350          Drop     : Truncation := Error) return Bounded_String;
 351 
 352       procedure Insert
 353         (Source   : in out Bounded_String;
 354          Before   : Positive;
 355          New_Item : String;
 356          Drop     : Truncation := Error);
 357 
 358       function Overwrite
 359         (Source   : Bounded_String;
 360          Position : Positive;
 361          New_Item : String;
 362          Drop     : Truncation := Error) return Bounded_String;
 363 
 364       procedure Overwrite
 365         (Source    : in out Bounded_String;
 366          Position  : Positive;
 367          New_Item  : String;
 368          Drop      : Truncation := Error);
 369 
 370       function Delete
 371         (Source  : Bounded_String;
 372          From    : Positive;
 373          Through : Natural) return Bounded_String;
 374 
 375       procedure Delete
 376         (Source  : in out Bounded_String;
 377          From    : Positive;
 378          Through : Natural);
 379 
 380       ---------------------------------
 381       -- String Selector Subprograms --
 382       ---------------------------------
 383 
 384       function Trim
 385         (Source : Bounded_String;
 386          Side   : Trim_End) return Bounded_String;
 387 
 388       procedure Trim
 389         (Source : in out Bounded_String;
 390          Side   : Trim_End);
 391 
 392       function Trim
 393         (Source : Bounded_String;
 394           Left  : Maps.Character_Set;
 395           Right : Maps.Character_Set) return Bounded_String;
 396 
 397       procedure Trim
 398         (Source : in out Bounded_String;
 399          Left   : Maps.Character_Set;
 400          Right  : Maps.Character_Set);
 401 
 402       function Head
 403         (Source : Bounded_String;
 404          Count  : Natural;
 405          Pad    : Character := Space;
 406          Drop   : Truncation := Error) return Bounded_String;
 407 
 408       procedure Head
 409         (Source : in out Bounded_String;
 410          Count  : Natural;
 411          Pad    : Character  := Space;
 412          Drop   : Truncation := Error);
 413 
 414       function Tail
 415         (Source : Bounded_String;
 416          Count  : Natural;
 417          Pad    : Character  := Space;
 418          Drop   : Truncation := Error) return Bounded_String;
 419 
 420       procedure Tail
 421         (Source : in out Bounded_String;
 422          Count  : Natural;
 423          Pad    : Character  := Space;
 424          Drop   : Truncation := Error);
 425 
 426       ------------------------------------
 427       -- String Constructor Subprograms --
 428       ------------------------------------
 429 
 430       function "*"
 431         (Left  : Natural;
 432          Right : Character) return Bounded_String;
 433 
 434       function "*"
 435         (Left  : Natural;
 436          Right : String) return Bounded_String;
 437 
 438       function "*"
 439         (Left  : Natural;
 440          Right : Bounded_String) return Bounded_String;
 441 
 442       function Replicate
 443         (Count : Natural;
 444          Item  : Character;
 445          Drop  : Truncation := Error) return Bounded_String;
 446 
 447       function Replicate
 448         (Count : Natural;
 449          Item  : String;
 450          Drop  : Truncation := Error) return Bounded_String;
 451 
 452       function Replicate
 453         (Count : Natural;
 454          Item  : Bounded_String;
 455          Drop  : Truncation := Error) return Bounded_String;
 456 
 457    private
 458       --  Most of the implementation is in the separate non generic package
 459       --  Ada.Strings.Superbounded. Type Bounded_String is derived from type
 460       --  Superbounded.Super_String with the maximum length constraint. In
 461       --  almost all cases, the routines in Superbounded can be called with
 462       --  no requirement to pass the maximum length explicitly, since there
 463       --  is at least one Bounded_String argument from which the maximum
 464       --  length can be obtained. For all such routines, the implementation
 465       --  in this private part is simply a renaming of the corresponding
 466       --  routine in the superbounded package.
 467 
 468       --  The five exceptions are the * and Replicate routines operating on
 469       --  character values. For these cases, we have a routine in the body
 470       --  that calls the superbounded routine passing the maximum length
 471       --  explicitly as an extra parameter.
 472 
 473       type Bounded_String is new Superbounded.Super_String (Max_Length);
 474       --  Deriving Bounded_String from Superbounded.Super_String is the
 475       --  real trick, it ensures that the type Bounded_String declared in
 476       --  the generic instantiation is compatible with the Super_String
 477       --  type declared in the Superbounded package.
 478 
 479       function From_String (Source : String) return Bounded_String;
 480       --  Private routine used only by Stream_Convert
 481 
 482       pragma Stream_Convert (Bounded_String, From_String, To_String);
 483       --  Provide stream routines without dragging in Ada.Streams
 484 
 485       Null_Bounded_String : constant Bounded_String :=
 486                               (Max_Length     => Max_Length,
 487                                Current_Length => 0,
 488                                Data           =>
 489                                  (1 .. Max_Length => ASCII.NUL));
 490 
 491       pragma Inline (To_Bounded_String);
 492 
 493       procedure Set_Bounded_String
 494         (Target : out Bounded_String;
 495          Source : String;
 496          Drop   : Truncation := Error)
 497          renames Set_Super_String;
 498 
 499       function Length
 500         (Source : Bounded_String) return Length_Range
 501          renames Super_Length;
 502 
 503       function To_String
 504         (Source : Bounded_String) return String
 505          renames Super_To_String;
 506 
 507       function Append
 508         (Left  : Bounded_String;
 509          Right : Bounded_String;
 510          Drop  : Truncation  := Error) return Bounded_String
 511          renames Super_Append;
 512 
 513       function Append
 514         (Left  : Bounded_String;
 515          Right : String;
 516          Drop  : Truncation := Error) return Bounded_String
 517          renames Super_Append;
 518 
 519       function Append
 520         (Left  : String;
 521          Right : Bounded_String;
 522          Drop  : Truncation := Error) return Bounded_String
 523          renames Super_Append;
 524 
 525       function Append
 526         (Left  : Bounded_String;
 527          Right : Character;
 528          Drop  : Truncation := Error) return Bounded_String
 529          renames Super_Append;
 530 
 531       function Append
 532         (Left  : Character;
 533          Right : Bounded_String;
 534          Drop  : Truncation := Error) return Bounded_String
 535          renames Super_Append;
 536 
 537       procedure Append
 538         (Source   : in out Bounded_String;
 539          New_Item : Bounded_String;
 540          Drop     : Truncation  := Error)
 541          renames Super_Append;
 542 
 543       procedure Append
 544         (Source   : in out Bounded_String;
 545          New_Item : String;
 546          Drop     : Truncation  := Error)
 547          renames Super_Append;
 548 
 549       procedure Append
 550         (Source   : in out Bounded_String;
 551          New_Item : Character;
 552          Drop     : Truncation  := Error)
 553          renames Super_Append;
 554 
 555       function "&"
 556         (Left  : Bounded_String;
 557          Right : Bounded_String) return Bounded_String
 558          renames Concat;
 559 
 560       function "&"
 561         (Left  : Bounded_String;
 562          Right : String) return Bounded_String
 563          renames Concat;
 564 
 565       function "&"
 566         (Left  : String;
 567          Right : Bounded_String) return Bounded_String
 568          renames Concat;
 569 
 570       function "&"
 571         (Left  : Bounded_String;
 572          Right : Character) return Bounded_String
 573          renames Concat;
 574 
 575       function "&"
 576         (Left  : Character;
 577          Right : Bounded_String) return Bounded_String
 578          renames Concat;
 579 
 580       function Element
 581         (Source : Bounded_String;
 582          Index  : Positive) return Character
 583          renames Super_Element;
 584 
 585       procedure Replace_Element
 586         (Source : in out Bounded_String;
 587          Index  : Positive;
 588          By     : Character)
 589          renames Super_Replace_Element;
 590 
 591       function Slice
 592         (Source : Bounded_String;
 593          Low    : Positive;
 594          High   : Natural) return String
 595          renames Super_Slice;
 596 
 597       function Bounded_Slice
 598         (Source : Bounded_String;
 599          Low    : Positive;
 600          High   : Natural) return Bounded_String
 601          renames Super_Slice;
 602 
 603       procedure Bounded_Slice
 604         (Source : Bounded_String;
 605          Target : out Bounded_String;
 606          Low    : Positive;
 607          High   : Natural)
 608          renames Super_Slice;
 609 
 610       overriding function "="
 611         (Left  : Bounded_String;
 612          Right : Bounded_String) return Boolean
 613          renames Equal;
 614 
 615       function "="
 616         (Left  : Bounded_String;
 617          Right : String) return Boolean
 618          renames Equal;
 619 
 620       function "="
 621         (Left  : String;
 622          Right : Bounded_String) return Boolean
 623          renames Equal;
 624 
 625       function "<"
 626         (Left  : Bounded_String;
 627          Right : Bounded_String) return Boolean
 628          renames Less;
 629 
 630       function "<"
 631         (Left  : Bounded_String;
 632          Right : String) return Boolean
 633          renames Less;
 634 
 635       function "<"
 636         (Left  : String;
 637          Right : Bounded_String) return Boolean
 638          renames Less;
 639 
 640       function "<="
 641         (Left  : Bounded_String;
 642          Right : Bounded_String) return Boolean
 643          renames Less_Or_Equal;
 644 
 645       function "<="
 646         (Left  : Bounded_String;
 647          Right : String) return Boolean
 648          renames Less_Or_Equal;
 649 
 650       function "<="
 651         (Left  : String;
 652          Right : Bounded_String) return Boolean
 653          renames Less_Or_Equal;
 654 
 655       function ">"
 656         (Left  : Bounded_String;
 657          Right : Bounded_String) return Boolean
 658          renames Greater;
 659 
 660       function ">"
 661         (Left  : Bounded_String;
 662          Right : String) return Boolean
 663          renames Greater;
 664 
 665       function ">"
 666         (Left  : String;
 667          Right : Bounded_String) return Boolean
 668          renames Greater;
 669 
 670       function ">="
 671         (Left  : Bounded_String;
 672          Right : Bounded_String) return Boolean
 673          renames Greater_Or_Equal;
 674 
 675       function ">="
 676         (Left  : Bounded_String;
 677          Right : String) return Boolean
 678          renames Greater_Or_Equal;
 679 
 680       function ">="
 681         (Left  : String;
 682          Right : Bounded_String) return Boolean
 683          renames Greater_Or_Equal;
 684 
 685       function Index
 686         (Source  : Bounded_String;
 687          Pattern : String;
 688          Going   : Direction := Forward;
 689          Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
 690          renames Super_Index;
 691 
 692       function Index
 693         (Source  : Bounded_String;
 694          Pattern : String;
 695          Going   : Direction := Forward;
 696          Mapping : Maps.Character_Mapping_Function) return Natural
 697          renames Super_Index;
 698 
 699       function Index
 700         (Source : Bounded_String;
 701          Set    : Maps.Character_Set;
 702          Test   : Membership := Inside;
 703          Going  : Direction  := Forward) return Natural
 704          renames Super_Index;
 705 
 706       function Index
 707         (Source  : Bounded_String;
 708          Pattern : String;
 709          From    : Positive;
 710          Going   : Direction := Forward;
 711          Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
 712          renames Super_Index;
 713 
 714       function Index
 715         (Source  : Bounded_String;
 716          Pattern : String;
 717          From    : Positive;
 718          Going   : Direction := Forward;
 719          Mapping : Maps.Character_Mapping_Function) return Natural
 720       renames Super_Index;
 721 
 722       function Index
 723         (Source  : Bounded_String;
 724          Set     : Maps.Character_Set;
 725          From    : Positive;
 726          Test    : Membership := Inside;
 727          Going   : Direction := Forward) return Natural
 728       renames Super_Index;
 729 
 730       function Index_Non_Blank
 731         (Source : Bounded_String;
 732          Going  : Direction := Forward) return Natural
 733          renames Super_Index_Non_Blank;
 734 
 735       function Index_Non_Blank
 736         (Source : Bounded_String;
 737          From   : Positive;
 738          Going  : Direction := Forward) return Natural
 739          renames Super_Index_Non_Blank;
 740 
 741       function Count
 742         (Source  : Bounded_String;
 743          Pattern : String;
 744          Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
 745          renames Super_Count;
 746 
 747       function Count
 748         (Source  : Bounded_String;
 749          Pattern : String;
 750          Mapping : Maps.Character_Mapping_Function) return Natural
 751          renames Super_Count;
 752 
 753       function Count
 754         (Source : Bounded_String;
 755          Set    : Maps.Character_Set) return Natural
 756          renames Super_Count;
 757 
 758       procedure Find_Token
 759         (Source : Bounded_String;
 760          Set    : Maps.Character_Set;
 761          From   : Positive;
 762          Test   : Membership;
 763          First  : out Positive;
 764          Last   : out Natural)
 765          renames Super_Find_Token;
 766 
 767       procedure Find_Token
 768         (Source : Bounded_String;
 769          Set    : Maps.Character_Set;
 770          Test   : Membership;
 771          First  : out Positive;
 772          Last   : out Natural)
 773          renames Super_Find_Token;
 774 
 775       function Translate
 776         (Source  : Bounded_String;
 777          Mapping : Maps.Character_Mapping) return Bounded_String
 778          renames Super_Translate;
 779 
 780       procedure Translate
 781         (Source   : in out Bounded_String;
 782          Mapping  : Maps.Character_Mapping)
 783          renames Super_Translate;
 784 
 785       function Translate
 786         (Source  : Bounded_String;
 787          Mapping : Maps.Character_Mapping_Function) return Bounded_String
 788          renames Super_Translate;
 789 
 790       procedure Translate
 791         (Source  : in out Bounded_String;
 792          Mapping : Maps.Character_Mapping_Function)
 793          renames Super_Translate;
 794 
 795       function Replace_Slice
 796         (Source : Bounded_String;
 797          Low    : Positive;
 798          High   : Natural;
 799          By     : String;
 800          Drop   : Truncation := Error) return Bounded_String
 801          renames Super_Replace_Slice;
 802 
 803       procedure Replace_Slice
 804         (Source   : in out Bounded_String;
 805          Low      : Positive;
 806          High     : Natural;
 807          By       : String;
 808          Drop     : Truncation := Error)
 809          renames Super_Replace_Slice;
 810 
 811       function Insert
 812         (Source   : Bounded_String;
 813          Before   : Positive;
 814          New_Item : String;
 815          Drop     : Truncation := Error) return Bounded_String
 816          renames Super_Insert;
 817 
 818       procedure Insert
 819         (Source   : in out Bounded_String;
 820          Before   : Positive;
 821          New_Item : String;
 822          Drop     : Truncation := Error)
 823          renames Super_Insert;
 824 
 825       function Overwrite
 826         (Source   : Bounded_String;
 827          Position : Positive;
 828          New_Item : String;
 829          Drop     : Truncation := Error) return Bounded_String
 830          renames Super_Overwrite;
 831 
 832       procedure Overwrite
 833         (Source    : in out Bounded_String;
 834          Position  : Positive;
 835          New_Item  : String;
 836          Drop      : Truncation := Error)
 837          renames Super_Overwrite;
 838 
 839       function Delete
 840         (Source  : Bounded_String;
 841          From    : Positive;
 842          Through : Natural) return Bounded_String
 843          renames Super_Delete;
 844 
 845       procedure Delete
 846         (Source  : in out Bounded_String;
 847          From    : Positive;
 848          Through : Natural)
 849          renames Super_Delete;
 850 
 851       function Trim
 852         (Source : Bounded_String;
 853          Side   : Trim_End) return Bounded_String
 854          renames Super_Trim;
 855 
 856       procedure Trim
 857         (Source : in out Bounded_String;
 858          Side   : Trim_End)
 859          renames Super_Trim;
 860 
 861       function Trim
 862         (Source : Bounded_String;
 863          Left   : Maps.Character_Set;
 864          Right  : Maps.Character_Set) return Bounded_String
 865          renames Super_Trim;
 866 
 867       procedure Trim
 868         (Source : in out Bounded_String;
 869          Left   : Maps.Character_Set;
 870          Right  : Maps.Character_Set)
 871          renames Super_Trim;
 872 
 873       function Head
 874         (Source : Bounded_String;
 875          Count  : Natural;
 876          Pad    : Character := Space;
 877          Drop   : Truncation := Error) return Bounded_String
 878          renames Super_Head;
 879 
 880       procedure Head
 881         (Source : in out Bounded_String;
 882          Count  : Natural;
 883          Pad    : Character  := Space;
 884          Drop   : Truncation := Error)
 885          renames Super_Head;
 886 
 887       function Tail
 888         (Source : Bounded_String;
 889          Count  : Natural;
 890          Pad    : Character  := Space;
 891          Drop   : Truncation := Error) return Bounded_String
 892          renames Super_Tail;
 893 
 894       procedure Tail
 895         (Source : in out Bounded_String;
 896          Count  : Natural;
 897          Pad    : Character  := Space;
 898          Drop   : Truncation := Error)
 899          renames Super_Tail;
 900 
 901       function "*"
 902         (Left  : Natural;
 903          Right : Bounded_String) return Bounded_String
 904          renames Times;
 905 
 906       function Replicate
 907         (Count : Natural;
 908          Item  : Bounded_String;
 909          Drop  : Truncation := Error) return Bounded_String
 910          renames Super_Replicate;
 911 
 912    end Generic_Bounded_Length;
 913 
 914 end Ada.Strings.Bounded;