OSDN Git Service

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