OSDN Git Service

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