OSDN Git Service

2011-10-16 Tristan Gingold <gingold@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-2010, 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          From   : Positive;
300          Test   : Membership;
301          First  : out Positive;
302          Last   : out Natural);
303       pragma Ada_2012 (Find_Token);
304
305       procedure Find_Token
306         (Source : Bounded_Wide_String;
307          Set    : Wide_Maps.Wide_Character_Set;
308          Test   : Membership;
309          First  : out Positive;
310          Last   : out Natural);
311
312       ------------------------------------
313       -- String Translation Subprograms --
314       ------------------------------------
315
316       function Translate
317         (Source  : Bounded_Wide_String;
318          Mapping : Wide_Maps.Wide_Character_Mapping)
319          return Bounded_Wide_String;
320
321       procedure Translate
322         (Source  : in out Bounded_Wide_String;
323          Mapping : Wide_Maps.Wide_Character_Mapping);
324
325       function Translate
326         (Source  : Bounded_Wide_String;
327          Mapping : Wide_Maps.Wide_Character_Mapping_Function)
328          return Bounded_Wide_String;
329
330       procedure Translate
331         (Source  : in out Bounded_Wide_String;
332          Mapping : Wide_Maps.Wide_Character_Mapping_Function);
333
334       ---------------------------------------
335       -- String Transformation Subprograms --
336       ---------------------------------------
337
338       function Replace_Slice
339         (Source : Bounded_Wide_String;
340          Low    : Positive;
341          High   : Natural;
342          By     : Wide_String;
343          Drop   : Truncation := Error) return Bounded_Wide_String;
344
345       procedure Replace_Slice
346         (Source   : in out Bounded_Wide_String;
347          Low      : Positive;
348          High     : Natural;
349          By       : Wide_String;
350          Drop     : Truncation := Error);
351
352       function Insert
353         (Source   : Bounded_Wide_String;
354          Before   : Positive;
355          New_Item : Wide_String;
356          Drop     : Truncation := Error) return Bounded_Wide_String;
357
358       procedure Insert
359         (Source   : in out Bounded_Wide_String;
360          Before   : Positive;
361          New_Item : Wide_String;
362          Drop     : Truncation := Error);
363
364       function Overwrite
365         (Source   : Bounded_Wide_String;
366          Position : Positive;
367          New_Item : Wide_String;
368          Drop     : Truncation := Error) return Bounded_Wide_String;
369
370       procedure Overwrite
371         (Source    : in out Bounded_Wide_String;
372          Position  : Positive;
373          New_Item  : Wide_String;
374          Drop      : Truncation := Error);
375
376       function Delete
377         (Source  : Bounded_Wide_String;
378          From    : Positive;
379          Through : Natural) return Bounded_Wide_String;
380
381       procedure Delete
382         (Source  : in out Bounded_Wide_String;
383          From    : Positive;
384          Through : Natural);
385
386       ---------------------------------
387       -- String Selector Subprograms --
388       ---------------------------------
389
390       function Trim
391         (Source : Bounded_Wide_String;
392          Side   : Trim_End) return Bounded_Wide_String;
393
394       procedure Trim
395         (Source : in out Bounded_Wide_String;
396          Side   : Trim_End);
397
398       function Trim
399         (Source : Bounded_Wide_String;
400           Left  : Wide_Maps.Wide_Character_Set;
401           Right : Wide_Maps.Wide_Character_Set) return Bounded_Wide_String;
402
403       procedure Trim
404         (Source : in out Bounded_Wide_String;
405          Left   : Wide_Maps.Wide_Character_Set;
406          Right  : Wide_Maps.Wide_Character_Set);
407
408       function Head
409         (Source : Bounded_Wide_String;
410          Count  : Natural;
411          Pad    : Wide_Character := Wide_Space;
412          Drop   : Truncation := Error) return Bounded_Wide_String;
413
414       procedure Head
415         (Source : in out Bounded_Wide_String;
416          Count  : Natural;
417          Pad    : Wide_Character  := Wide_Space;
418          Drop   : Truncation := Error);
419
420       function Tail
421         (Source : Bounded_Wide_String;
422          Count  : Natural;
423          Pad    : Wide_Character := Wide_Space;
424          Drop   : Truncation     := Error) return Bounded_Wide_String;
425
426       procedure Tail
427         (Source : in out Bounded_Wide_String;
428          Count  : Natural;
429          Pad    : Wide_Character := Wide_Space;
430          Drop   : Truncation     := Error);
431
432       ------------------------------------
433       -- String Constructor Subprograms --
434       ------------------------------------
435
436       function "*"
437         (Left  : Natural;
438          Right : Wide_Character) return Bounded_Wide_String;
439
440       function "*"
441         (Left  : Natural;
442          Right : Wide_String) return Bounded_Wide_String;
443
444       function "*"
445         (Left  : Natural;
446          Right : Bounded_Wide_String) return Bounded_Wide_String;
447
448       function Replicate
449         (Count : Natural;
450          Item  : Wide_Character;
451          Drop  : Truncation := Error) return Bounded_Wide_String;
452
453       function Replicate
454         (Count : Natural;
455          Item  : Wide_String;
456          Drop  : Truncation := Error) return Bounded_Wide_String;
457
458       function Replicate
459         (Count : Natural;
460          Item  : Bounded_Wide_String;
461          Drop  : Truncation := Error) return Bounded_Wide_String;
462
463    private
464       --  Most of the implementation is in the separate non generic package
465       --  Ada.Strings.Wide_Superbounded. Type Bounded_Wide_String is derived
466       --  from type Wide_Superbounded.Super_String with the maximum length
467       --  constraint. In almost all cases, the routines in Wide_Superbounded
468       --  can be called with no requirement to pass the maximum length
469       --  explicitly, since there is at least one Bounded_Wide_String argument
470       --  from which the maximum length can be obtained. For all such
471       --  routines, the implementation in this private part is simply a
472       --  renaming of the corresponding routine in the super bouded package.
473
474       --  The five exceptions are the * and Replicate routines operating on
475       --  character values. For these cases, we have a routine in the body
476       --  that calls the superbounded routine passing the maximum length
477       --  explicitly as an extra parameter.
478
479       type Bounded_Wide_String is
480         new Wide_Superbounded.Super_String (Max_Length);
481       --  Deriving Bounded_Wide_String from Wide_Superbounded.Super_String is
482       --  the real trick, it ensures that the type Bounded_Wide_String
483       --  declared in the generic instantiation is compatible with the
484       --  Super_String type declared in the Wide_Superbounded package.
485
486       Null_Bounded_Wide_String : constant Bounded_Wide_String :=
487                                    (Max_Length         => Max_Length,
488                                     Current_Length     => 0,
489                                     Data               =>
490                                       (1 .. Max_Length =>
491                                          Wide_Superbounded.Wide_NUL));
492
493       pragma Inline (To_Bounded_Wide_String);
494
495       procedure Set_Bounded_Wide_String
496         (Target : out Bounded_Wide_String;
497          Source : Wide_String;
498          Drop   : Truncation := Error)
499          renames Set_Super_String;
500
501       function Length
502         (Source : Bounded_Wide_String) return Length_Range
503          renames Super_Length;
504
505       function To_Wide_String
506         (Source : Bounded_Wide_String) return Wide_String
507          renames Super_To_String;
508
509       function Append
510         (Left  : Bounded_Wide_String;
511          Right : Bounded_Wide_String;
512          Drop  : Truncation  := Error) return Bounded_Wide_String
513          renames Super_Append;
514
515       function Append
516         (Left  : Bounded_Wide_String;
517          Right : Wide_String;
518          Drop  : Truncation := Error) return Bounded_Wide_String
519          renames Super_Append;
520
521       function Append
522         (Left  : Wide_String;
523          Right : Bounded_Wide_String;
524          Drop  : Truncation := Error) return Bounded_Wide_String
525          renames Super_Append;
526
527       function Append
528         (Left  : Bounded_Wide_String;
529          Right : Wide_Character;
530          Drop  : Truncation := Error) return Bounded_Wide_String
531          renames Super_Append;
532
533       function Append
534         (Left  : Wide_Character;
535          Right : Bounded_Wide_String;
536          Drop  : Truncation := Error) return Bounded_Wide_String
537          renames Super_Append;
538
539       procedure Append
540         (Source   : in out Bounded_Wide_String;
541          New_Item : Bounded_Wide_String;
542          Drop     : Truncation  := Error)
543          renames Super_Append;
544
545       procedure Append
546         (Source   : in out Bounded_Wide_String;
547          New_Item : Wide_String;
548          Drop     : Truncation  := Error)
549          renames Super_Append;
550
551       procedure Append
552         (Source   : in out Bounded_Wide_String;
553          New_Item : Wide_Character;
554          Drop     : Truncation  := Error)
555          renames Super_Append;
556
557       function "&"
558         (Left  : Bounded_Wide_String;
559          Right : Bounded_Wide_String) return Bounded_Wide_String
560          renames Concat;
561
562       function "&"
563         (Left  : Bounded_Wide_String;
564          Right : Wide_String) return Bounded_Wide_String
565          renames Concat;
566
567       function "&"
568         (Left  : Wide_String;
569          Right : Bounded_Wide_String) return Bounded_Wide_String
570          renames Concat;
571
572       function "&"
573         (Left  : Bounded_Wide_String;
574          Right : Wide_Character) return Bounded_Wide_String
575          renames Concat;
576
577       function "&"
578         (Left  : Wide_Character;
579          Right : Bounded_Wide_String) return Bounded_Wide_String
580          renames Concat;
581
582       function Element
583         (Source : Bounded_Wide_String;
584          Index  : Positive) return Wide_Character
585          renames Super_Element;
586
587       procedure Replace_Element
588         (Source : in out Bounded_Wide_String;
589          Index  : Positive;
590          By     : Wide_Character)
591          renames Super_Replace_Element;
592
593       function Slice
594         (Source : Bounded_Wide_String;
595          Low    : Positive;
596          High   : Natural) return Wide_String
597          renames Super_Slice;
598
599       function Bounded_Slice
600         (Source : Bounded_Wide_String;
601          Low    : Positive;
602          High   : Natural) return Bounded_Wide_String
603          renames Super_Slice;
604
605       procedure Bounded_Slice
606         (Source : Bounded_Wide_String;
607          Target : out Bounded_Wide_String;
608          Low    : Positive;
609          High   : Natural)
610          renames Super_Slice;
611
612       function "="
613         (Left  : Bounded_Wide_String;
614          Right : Bounded_Wide_String) return Boolean
615          renames Equal;
616
617       function "="
618         (Left  : Bounded_Wide_String;
619          Right : Wide_String) return Boolean
620          renames Equal;
621
622       function "="
623         (Left  : Wide_String;
624          Right : Bounded_Wide_String) return Boolean
625          renames Equal;
626
627       function "<"
628         (Left  : Bounded_Wide_String;
629          Right : Bounded_Wide_String) return Boolean
630          renames Less;
631
632       function "<"
633         (Left  : Bounded_Wide_String;
634          Right : Wide_String) return Boolean
635          renames Less;
636
637       function "<"
638         (Left  : Wide_String;
639          Right : Bounded_Wide_String) return Boolean
640          renames Less;
641
642       function "<="
643         (Left  : Bounded_Wide_String;
644          Right : Bounded_Wide_String) return Boolean
645          renames Less_Or_Equal;
646
647       function "<="
648         (Left  : Bounded_Wide_String;
649          Right : Wide_String) return Boolean
650          renames Less_Or_Equal;
651
652       function "<="
653         (Left  : Wide_String;
654          Right : Bounded_Wide_String) return Boolean
655          renames Less_Or_Equal;
656
657       function ">"
658         (Left  : Bounded_Wide_String;
659          Right : Bounded_Wide_String) return Boolean
660          renames Greater;
661
662       function ">"
663         (Left  : Bounded_Wide_String;
664          Right : Wide_String) return Boolean
665          renames Greater;
666
667       function ">"
668         (Left  : Wide_String;
669          Right : Bounded_Wide_String) return Boolean
670          renames Greater;
671
672       function ">="
673         (Left  : Bounded_Wide_String;
674          Right : Bounded_Wide_String) return Boolean
675          renames Greater_Or_Equal;
676
677       function ">="
678         (Left  : Bounded_Wide_String;
679          Right : Wide_String) return Boolean
680          renames Greater_Or_Equal;
681
682       function ">="
683         (Left  : Wide_String;
684          Right : Bounded_Wide_String) return Boolean
685          renames Greater_Or_Equal;
686
687       function Index
688         (Source  : Bounded_Wide_String;
689          Pattern : Wide_String;
690          Going   : Direction := Forward;
691          Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
692          return Natural
693          renames Super_Index;
694
695       function Index
696         (Source  : Bounded_Wide_String;
697          Pattern : Wide_String;
698          Going   : Direction := Forward;
699          Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
700          renames Super_Index;
701
702       function Index
703         (Source : Bounded_Wide_String;
704          Set    : Wide_Maps.Wide_Character_Set;
705          Test   : Membership := Inside;
706          Going  : Direction  := Forward) 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 := Wide_Maps.Identity)
715          return Natural
716          renames Super_Index;
717
718       function Index
719         (Source  : Bounded_Wide_String;
720          Pattern : Wide_String;
721          From    : Positive;
722          Going   : Direction := Forward;
723          Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
724       renames Super_Index;
725
726       function Index
727         (Source  : Bounded_Wide_String;
728          Set     : Wide_Maps.Wide_Character_Set;
729          From    : Positive;
730          Test    : Membership := Inside;
731          Going   : Direction := Forward) return Natural
732       renames Super_Index;
733
734       function Index_Non_Blank
735         (Source : Bounded_Wide_String;
736          Going  : Direction := Forward) return Natural
737          renames Super_Index_Non_Blank;
738
739       function Index_Non_Blank
740         (Source : Bounded_Wide_String;
741          From   : Positive;
742          Going  : Direction := Forward) return Natural
743          renames Super_Index_Non_Blank;
744
745       function Count
746         (Source  : Bounded_Wide_String;
747          Pattern : Wide_String;
748          Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
749          return Natural
750          renames Super_Count;
751
752       function Count
753         (Source  : Bounded_Wide_String;
754          Pattern : Wide_String;
755          Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
756          renames Super_Count;
757
758       function Count
759         (Source : Bounded_Wide_String;
760          Set    : Wide_Maps.Wide_Character_Set) return Natural
761          renames Super_Count;
762
763       procedure Find_Token
764         (Source : Bounded_Wide_String;
765          Set    : Wide_Maps.Wide_Character_Set;
766          From   : Positive;
767          Test   : Membership;
768          First  : out Positive;
769          Last   : out Natural)
770          renames Super_Find_Token;
771
772       procedure Find_Token
773         (Source : Bounded_Wide_String;
774          Set    : Wide_Maps.Wide_Character_Set;
775          Test   : Membership;
776          First  : out Positive;
777          Last   : out Natural)
778          renames Super_Find_Token;
779
780       function Translate
781         (Source  : Bounded_Wide_String;
782          Mapping : Wide_Maps.Wide_Character_Mapping)
783          return Bounded_Wide_String
784          renames Super_Translate;
785
786       procedure Translate
787         (Source   : in out Bounded_Wide_String;
788          Mapping  : Wide_Maps.Wide_Character_Mapping)
789          renames Super_Translate;
790
791       function Translate
792         (Source  : Bounded_Wide_String;
793          Mapping : Wide_Maps.Wide_Character_Mapping_Function)
794          return Bounded_Wide_String
795          renames Super_Translate;
796
797       procedure Translate
798         (Source  : in out Bounded_Wide_String;
799          Mapping : Wide_Maps.Wide_Character_Mapping_Function)
800          renames Super_Translate;
801
802       function Replace_Slice
803         (Source : Bounded_Wide_String;
804          Low    : Positive;
805          High   : Natural;
806          By     : Wide_String;
807          Drop   : Truncation := Error) return Bounded_Wide_String
808          renames Super_Replace_Slice;
809
810       procedure Replace_Slice
811         (Source   : in out Bounded_Wide_String;
812          Low      : Positive;
813          High     : Natural;
814          By       : Wide_String;
815          Drop     : Truncation := Error)
816          renames Super_Replace_Slice;
817
818       function Insert
819         (Source   : Bounded_Wide_String;
820          Before   : Positive;
821          New_Item : Wide_String;
822          Drop     : Truncation := Error) return Bounded_Wide_String
823          renames Super_Insert;
824
825       procedure Insert
826         (Source   : in out Bounded_Wide_String;
827          Before   : Positive;
828          New_Item : Wide_String;
829          Drop     : Truncation := Error)
830          renames Super_Insert;
831
832       function Overwrite
833         (Source   : Bounded_Wide_String;
834          Position : Positive;
835          New_Item : Wide_String;
836          Drop     : Truncation := Error) return Bounded_Wide_String
837          renames Super_Overwrite;
838
839       procedure Overwrite
840         (Source    : in out Bounded_Wide_String;
841          Position  : Positive;
842          New_Item  : Wide_String;
843          Drop      : Truncation := Error)
844          renames Super_Overwrite;
845
846       function Delete
847         (Source  : Bounded_Wide_String;
848          From    : Positive;
849          Through : Natural) return Bounded_Wide_String
850          renames Super_Delete;
851
852       procedure Delete
853         (Source  : in out Bounded_Wide_String;
854          From    : Positive;
855          Through : Natural)
856          renames Super_Delete;
857
858       function Trim
859         (Source : Bounded_Wide_String;
860          Side   : Trim_End) return Bounded_Wide_String
861          renames Super_Trim;
862
863       procedure Trim
864         (Source : in out Bounded_Wide_String;
865          Side   : Trim_End)
866          renames Super_Trim;
867
868       function Trim
869         (Source : Bounded_Wide_String;
870          Left   : Wide_Maps.Wide_Character_Set;
871          Right  : Wide_Maps.Wide_Character_Set) return Bounded_Wide_String
872          renames Super_Trim;
873
874       procedure Trim
875         (Source : in out Bounded_Wide_String;
876          Left   : Wide_Maps.Wide_Character_Set;
877          Right  : Wide_Maps.Wide_Character_Set)
878          renames Super_Trim;
879
880       function Head
881         (Source : Bounded_Wide_String;
882          Count  : Natural;
883          Pad    : Wide_Character := Wide_Space;
884          Drop   : Truncation     := Error) return Bounded_Wide_String
885          renames Super_Head;
886
887       procedure Head
888         (Source : in out Bounded_Wide_String;
889          Count  : Natural;
890          Pad    : Wide_Character := Wide_Space;
891          Drop   : Truncation     := Error)
892          renames Super_Head;
893
894       function Tail
895         (Source : Bounded_Wide_String;
896          Count  : Natural;
897          Pad    : Wide_Character := Wide_Space;
898          Drop   : Truncation     := Error) return Bounded_Wide_String
899          renames Super_Tail;
900
901       procedure Tail
902         (Source : in out Bounded_Wide_String;
903          Count  : Natural;
904          Pad    : Wide_Character := Wide_Space;
905          Drop   : Truncation := Error)
906          renames Super_Tail;
907
908       function "*"
909         (Left  : Natural;
910          Right : Bounded_Wide_String) return Bounded_Wide_String
911          renames Times;
912
913       function Replicate
914         (Count : Natural;
915          Item  : Bounded_Wide_String;
916          Drop  : Truncation := Error) return Bounded_Wide_String
917          renames Super_Replicate;
918
919    end Generic_Bounded_Length;
920
921 end Ada.Strings.Wide_Bounded;