OSDN Git Service

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