OSDN Git Service

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