OSDN Git Service

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