OSDN Git Service

2011-08-18 Tobias Burnus <burnus@net-b.de>
[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-2010, Free Software Foundation, Inc.         --
10 --                                                                          --
11 -- This specification is derived from the Ada Reference Manual for use with --
12 -- GNAT. The copyright notice above, and the license provisions that follow --
13 -- apply solely to the  contents of the part following the private keyword. --
14 --                                                                          --
15 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
16 -- terms of the  GNU General Public License as published  by the Free Soft- --
17 -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
18 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
19 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
20 -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
21 --                                                                          --
22 -- As a special exception under Section 7 of GPL version 3, you are granted --
23 -- additional permissions described in the GCC Runtime Library Exception,   --
24 -- version 3.1, as published by the Free Software Foundation.               --
25 --                                                                          --
26 -- You should have received a copy of the GNU General Public License and    --
27 -- a copy of the GCC Runtime Library Exception along with this program;     --
28 -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
29 -- <http://www.gnu.org/licenses/>.                                          --
30 --                                                                          --
31 -- GNAT was originally developed  by the GNAT team at  New York University. --
32 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
33 --                                                                          --
34 ------------------------------------------------------------------------------
35
36 with Ada.Strings.Wide_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          From   : Positive;
306          Test   : Membership;
307          First  : out Positive;
308          Last   : out Natural);
309       pragma Ada_2012 (Find_Token);
310
311       procedure Find_Token
312         (Source : Bounded_Wide_Wide_String;
313          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
314          Test   : Membership;
315          First  : out Positive;
316          Last   : out Natural);
317
318       ------------------------------------
319       -- String Translation Subprograms --
320       ------------------------------------
321
322       function Translate
323         (Source  : Bounded_Wide_Wide_String;
324          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
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);
330
331       function Translate
332         (Source  : Bounded_Wide_Wide_String;
333          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
334          return Bounded_Wide_Wide_String;
335
336       procedure Translate
337         (Source  : in out Bounded_Wide_Wide_String;
338          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function);
339
340       ---------------------------------------
341       -- String Transformation Subprograms --
342       ---------------------------------------
343
344       function Replace_Slice
345         (Source : Bounded_Wide_Wide_String;
346          Low    : Positive;
347          High   : Natural;
348          By     : Wide_Wide_String;
349          Drop   : Truncation := Error) return Bounded_Wide_Wide_String;
350
351       procedure Replace_Slice
352         (Source   : in out Bounded_Wide_Wide_String;
353          Low      : Positive;
354          High     : Natural;
355          By       : Wide_Wide_String;
356          Drop     : Truncation := Error);
357
358       function Insert
359         (Source   : Bounded_Wide_Wide_String;
360          Before   : Positive;
361          New_Item : Wide_Wide_String;
362          Drop     : Truncation := Error) return Bounded_Wide_Wide_String;
363
364       procedure Insert
365         (Source   : in out Bounded_Wide_Wide_String;
366          Before   : Positive;
367          New_Item : Wide_Wide_String;
368          Drop     : Truncation := Error);
369
370       function Overwrite
371         (Source   : Bounded_Wide_Wide_String;
372          Position : Positive;
373          New_Item : Wide_Wide_String;
374          Drop     : Truncation := Error) return Bounded_Wide_Wide_String;
375
376       procedure Overwrite
377         (Source    : in out Bounded_Wide_Wide_String;
378          Position  : Positive;
379          New_Item  : Wide_Wide_String;
380          Drop      : Truncation := Error);
381
382       function Delete
383         (Source  : Bounded_Wide_Wide_String;
384          From    : Positive;
385          Through : Natural) return Bounded_Wide_Wide_String;
386
387       procedure Delete
388         (Source  : in out Bounded_Wide_Wide_String;
389          From    : Positive;
390          Through : Natural);
391
392       ---------------------------------
393       -- String Selector Subprograms --
394       ---------------------------------
395
396       function Trim
397         (Source : Bounded_Wide_Wide_String;
398          Side   : Trim_End) return Bounded_Wide_Wide_String;
399
400       procedure Trim
401         (Source : in out Bounded_Wide_Wide_String;
402          Side   : Trim_End);
403
404       function Trim
405         (Source : Bounded_Wide_Wide_String;
406           Left  : Wide_Wide_Maps.Wide_Wide_Character_Set;
407           Right : Wide_Wide_Maps.Wide_Wide_Character_Set)
408           return Bounded_Wide_Wide_String;
409
410       procedure Trim
411         (Source : in out Bounded_Wide_Wide_String;
412          Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
413          Right  : Wide_Wide_Maps.Wide_Wide_Character_Set);
414
415       function Head
416         (Source : Bounded_Wide_Wide_String;
417          Count  : Natural;
418          Pad    : Wide_Wide_Character := Wide_Wide_Space;
419          Drop   : Truncation := Error) return Bounded_Wide_Wide_String;
420
421       procedure Head
422         (Source : in out Bounded_Wide_Wide_String;
423          Count  : Natural;
424          Pad    : Wide_Wide_Character  := Wide_Wide_Space;
425          Drop   : Truncation := Error);
426
427       function Tail
428         (Source : Bounded_Wide_Wide_String;
429          Count  : Natural;
430          Pad    : Wide_Wide_Character := Wide_Wide_Space;
431          Drop   : Truncation     := Error) return Bounded_Wide_Wide_String;
432
433       procedure Tail
434         (Source : in out Bounded_Wide_Wide_String;
435          Count  : Natural;
436          Pad    : Wide_Wide_Character := Wide_Wide_Space;
437          Drop   : Truncation     := Error);
438
439       ------------------------------------
440       -- String Constructor Subprograms --
441       ------------------------------------
442
443       function "*"
444         (Left  : Natural;
445          Right : Wide_Wide_Character) return Bounded_Wide_Wide_String;
446
447       function "*"
448         (Left  : Natural;
449          Right : Wide_Wide_String) return Bounded_Wide_Wide_String;
450
451       function "*"
452         (Left  : Natural;
453          Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String;
454
455       function Replicate
456         (Count : Natural;
457          Item  : Wide_Wide_Character;
458          Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
459
460       function Replicate
461         (Count : Natural;
462          Item  : Wide_Wide_String;
463          Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
464
465       function Replicate
466         (Count : Natural;
467          Item  : Bounded_Wide_Wide_String;
468          Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
469
470    private
471       --  Most of the implementation is in the separate non generic package
472       --  Ada.Strings.Wide_Wide_Superbounded. Type Bounded_Wide_Wide_String is
473       --  derived from type Wide_Wide_Superbounded.Super_String with the
474       --  maximum length constraint. In almost all cases, the routines in
475       --  Wide_Wide_Superbounded can be called with no requirement to pass the
476       --  maximum length explicitly, since there is at least one
477       --  Bounded_Wide_Wide_String argument from which the maximum length can
478       --  be obtained. For all such routines, the implementation in this
479       --  private part is simply renaming of the corresponding routine in the
480       --  super bouded package.
481
482       --  The five exceptions are the * and Replicate routines operating on
483       --  character values. For these cases, we have a routine in the body
484       --  that calls the superbounded routine passing the maximum length
485       --  explicitly as an extra parameter.
486
487       type Bounded_Wide_Wide_String is
488         new Wide_Wide_Superbounded.Super_String (Max_Length);
489       --  Deriving Bounded_Wide_Wide_String from
490       --  Wide_Wide_Superbounded.Super_String is the real trick, it ensures
491       --  that the type Bounded_Wide_Wide_String declared in the generic
492       --  instantiation is compatible with the Super_String type declared in
493       --  the Wide_Wide_Superbounded package.
494
495       Null_Bounded_Wide_Wide_String : constant Bounded_Wide_Wide_String :=
496                                    (Max_Length         => Max_Length,
497                                     Current_Length     => 0,
498                                     Data               =>
499                                       (1 .. Max_Length =>
500                                         Wide_Wide_Superbounded.Wide_Wide_NUL));
501
502       pragma Inline (To_Bounded_Wide_Wide_String);
503
504       procedure Set_Bounded_Wide_Wide_String
505         (Target : out Bounded_Wide_Wide_String;
506          Source : Wide_Wide_String;
507          Drop   : Truncation := Error)
508          renames Set_Super_String;
509
510       function Length
511         (Source : Bounded_Wide_Wide_String) return Length_Range
512          renames Super_Length;
513
514       function To_Wide_Wide_String
515         (Source : Bounded_Wide_Wide_String) return Wide_Wide_String
516          renames Super_To_String;
517
518       function Append
519         (Left  : Bounded_Wide_Wide_String;
520          Right : Bounded_Wide_Wide_String;
521          Drop  : Truncation  := Error) return Bounded_Wide_Wide_String
522          renames Super_Append;
523
524       function Append
525         (Left  : Bounded_Wide_Wide_String;
526          Right : Wide_Wide_String;
527          Drop  : Truncation := Error) return Bounded_Wide_Wide_String
528          renames Super_Append;
529
530       function Append
531         (Left  : Wide_Wide_String;
532          Right : Bounded_Wide_Wide_String;
533          Drop  : Truncation := Error) return Bounded_Wide_Wide_String
534          renames Super_Append;
535
536       function Append
537         (Left  : Bounded_Wide_Wide_String;
538          Right : Wide_Wide_Character;
539          Drop  : Truncation := Error) return Bounded_Wide_Wide_String
540          renames Super_Append;
541
542       function Append
543         (Left  : Wide_Wide_Character;
544          Right : Bounded_Wide_Wide_String;
545          Drop  : Truncation := Error) return Bounded_Wide_Wide_String
546          renames Super_Append;
547
548       procedure Append
549         (Source   : in out Bounded_Wide_Wide_String;
550          New_Item : Bounded_Wide_Wide_String;
551          Drop     : Truncation  := Error)
552          renames Super_Append;
553
554       procedure Append
555         (Source   : in out Bounded_Wide_Wide_String;
556          New_Item : Wide_Wide_String;
557          Drop     : Truncation  := Error)
558          renames Super_Append;
559
560       procedure Append
561         (Source   : in out Bounded_Wide_Wide_String;
562          New_Item : Wide_Wide_Character;
563          Drop     : Truncation  := Error)
564          renames Super_Append;
565
566       function "&"
567         (Left  : Bounded_Wide_Wide_String;
568          Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String
569          renames Concat;
570
571       function "&"
572         (Left  : Bounded_Wide_Wide_String;
573          Right : Wide_Wide_String) return Bounded_Wide_Wide_String
574          renames Concat;
575
576       function "&"
577         (Left  : Wide_Wide_String;
578          Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String
579          renames Concat;
580
581       function "&"
582         (Left  : Bounded_Wide_Wide_String;
583          Right : Wide_Wide_Character) return Bounded_Wide_Wide_String
584          renames Concat;
585
586       function "&"
587         (Left  : Wide_Wide_Character;
588          Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String
589          renames Concat;
590
591       function Element
592         (Source : Bounded_Wide_Wide_String;
593          Index  : Positive) return Wide_Wide_Character
594          renames Super_Element;
595
596       procedure Replace_Element
597         (Source : in out Bounded_Wide_Wide_String;
598          Index  : Positive;
599          By     : Wide_Wide_Character)
600          renames Super_Replace_Element;
601
602       function Slice
603         (Source : Bounded_Wide_Wide_String;
604          Low    : Positive;
605          High   : Natural) return Wide_Wide_String
606          renames Super_Slice;
607
608       function Bounded_Slice
609         (Source : Bounded_Wide_Wide_String;
610          Low    : Positive;
611          High   : Natural) return Bounded_Wide_Wide_String
612          renames Super_Slice;
613
614       procedure Bounded_Slice
615         (Source : Bounded_Wide_Wide_String;
616          Target : out Bounded_Wide_Wide_String;
617          Low    : Positive;
618          High   : Natural)
619          renames Super_Slice;
620
621       function "="
622         (Left  : Bounded_Wide_Wide_String;
623          Right : Bounded_Wide_Wide_String) return Boolean
624          renames Equal;
625
626       function "="
627         (Left  : Bounded_Wide_Wide_String;
628          Right : Wide_Wide_String) return Boolean
629          renames Equal;
630
631       function "="
632         (Left  : Wide_Wide_String;
633          Right : Bounded_Wide_Wide_String) return Boolean
634          renames Equal;
635
636       function "<"
637         (Left  : Bounded_Wide_Wide_String;
638          Right : Bounded_Wide_Wide_String) return Boolean
639          renames Less;
640
641       function "<"
642         (Left  : Bounded_Wide_Wide_String;
643          Right : Wide_Wide_String) return Boolean
644          renames Less;
645
646       function "<"
647         (Left  : Wide_Wide_String;
648          Right : Bounded_Wide_Wide_String) return Boolean
649          renames Less;
650
651       function "<="
652         (Left  : Bounded_Wide_Wide_String;
653          Right : Bounded_Wide_Wide_String) return Boolean
654          renames Less_Or_Equal;
655
656       function "<="
657         (Left  : Bounded_Wide_Wide_String;
658          Right : Wide_Wide_String) return Boolean
659          renames Less_Or_Equal;
660
661       function "<="
662         (Left  : Wide_Wide_String;
663          Right : Bounded_Wide_Wide_String) return Boolean
664          renames Less_Or_Equal;
665
666       function ">"
667         (Left  : Bounded_Wide_Wide_String;
668          Right : Bounded_Wide_Wide_String) return Boolean
669          renames Greater;
670
671       function ">"
672         (Left  : Bounded_Wide_Wide_String;
673          Right : Wide_Wide_String) return Boolean
674          renames Greater;
675
676       function ">"
677         (Left  : Wide_Wide_String;
678          Right : Bounded_Wide_Wide_String) return Boolean
679          renames Greater;
680
681       function ">="
682         (Left  : Bounded_Wide_Wide_String;
683          Right : Bounded_Wide_Wide_String) return Boolean
684          renames Greater_Or_Equal;
685
686       function ">="
687         (Left  : Bounded_Wide_Wide_String;
688          Right : Wide_Wide_String) return Boolean
689          renames Greater_Or_Equal;
690
691       function ">="
692         (Left  : Wide_Wide_String;
693          Right : Bounded_Wide_Wide_String) return Boolean
694          renames Greater_Or_Equal;
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 :=
701                      Wide_Wide_Maps.Identity)
702          return Natural
703          renames Super_Index;
704
705       function Index
706         (Source  : Bounded_Wide_Wide_String;
707          Pattern : Wide_Wide_String;
708          Going   : Direction := Forward;
709          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
710          return Natural
711          renames Super_Index;
712
713       function Index
714         (Source : Bounded_Wide_Wide_String;
715          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
716          Test   : Membership := Inside;
717          Going  : Direction  := Forward) return Natural
718          renames Super_Index;
719
720       function Index
721         (Source  : Bounded_Wide_Wide_String;
722          Pattern : Wide_Wide_String;
723          From    : Positive;
724          Going   : Direction := Forward;
725          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
726                      Wide_Wide_Maps.Identity)
727          return Natural
728          renames Super_Index;
729
730       function Index
731         (Source  : Bounded_Wide_Wide_String;
732          Pattern : Wide_Wide_String;
733          From    : Positive;
734          Going   : Direction := Forward;
735          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
736          return Natural
737       renames Super_Index;
738
739       function Index
740         (Source : Bounded_Wide_Wide_String;
741          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
742          From   : Positive;
743          Test   : Membership := Inside;
744          Going  : Direction := Forward) return Natural
745       renames Super_Index;
746
747       function Index_Non_Blank
748         (Source : Bounded_Wide_Wide_String;
749          Going  : Direction := Forward) return Natural
750          renames Super_Index_Non_Blank;
751
752       function Index_Non_Blank
753         (Source : Bounded_Wide_Wide_String;
754          From   : Positive;
755          Going  : Direction := Forward) return Natural
756          renames Super_Index_Non_Blank;
757
758       function Count
759         (Source  : Bounded_Wide_Wide_String;
760          Pattern : Wide_Wide_String;
761          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
762                      Wide_Wide_Maps.Identity)
763          return Natural
764          renames Super_Count;
765
766       function Count
767         (Source  : Bounded_Wide_Wide_String;
768          Pattern : Wide_Wide_String;
769          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
770          return Natural
771          renames Super_Count;
772
773       function Count
774         (Source : Bounded_Wide_Wide_String;
775          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural
776          renames Super_Count;
777
778       procedure Find_Token
779         (Source : Bounded_Wide_Wide_String;
780          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
781          From   : Positive;
782          Test   : Membership;
783          First  : out Positive;
784          Last   : out Natural)
785          renames Super_Find_Token;
786
787       procedure Find_Token
788         (Source : Bounded_Wide_Wide_String;
789          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
790          Test   : Membership;
791          First  : out Positive;
792          Last   : out Natural)
793          renames Super_Find_Token;
794
795       function Translate
796         (Source  : Bounded_Wide_Wide_String;
797          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
798          return Bounded_Wide_Wide_String
799          renames Super_Translate;
800
801       procedure Translate
802         (Source   : in out Bounded_Wide_Wide_String;
803          Mapping  : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
804          renames Super_Translate;
805
806       function Translate
807         (Source  : Bounded_Wide_Wide_String;
808          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
809          return Bounded_Wide_Wide_String
810          renames Super_Translate;
811
812       procedure Translate
813         (Source  : in out Bounded_Wide_Wide_String;
814          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
815          renames Super_Translate;
816
817       function Replace_Slice
818         (Source : Bounded_Wide_Wide_String;
819          Low    : Positive;
820          High   : Natural;
821          By     : Wide_Wide_String;
822          Drop   : Truncation := Error) return Bounded_Wide_Wide_String
823          renames Super_Replace_Slice;
824
825       procedure Replace_Slice
826         (Source   : in out Bounded_Wide_Wide_String;
827          Low      : Positive;
828          High     : Natural;
829          By       : Wide_Wide_String;
830          Drop     : Truncation := Error)
831          renames Super_Replace_Slice;
832
833       function Insert
834         (Source   : Bounded_Wide_Wide_String;
835          Before   : Positive;
836          New_Item : Wide_Wide_String;
837          Drop     : Truncation := Error) return Bounded_Wide_Wide_String
838          renames Super_Insert;
839
840       procedure Insert
841         (Source   : in out Bounded_Wide_Wide_String;
842          Before   : Positive;
843          New_Item : Wide_Wide_String;
844          Drop     : Truncation := Error)
845          renames Super_Insert;
846
847       function Overwrite
848         (Source   : Bounded_Wide_Wide_String;
849          Position : Positive;
850          New_Item : Wide_Wide_String;
851          Drop     : Truncation := Error) return Bounded_Wide_Wide_String
852          renames Super_Overwrite;
853
854       procedure Overwrite
855         (Source    : in out Bounded_Wide_Wide_String;
856          Position  : Positive;
857          New_Item  : Wide_Wide_String;
858          Drop      : Truncation := Error)
859          renames Super_Overwrite;
860
861       function Delete
862         (Source  : Bounded_Wide_Wide_String;
863          From    : Positive;
864          Through : Natural) return Bounded_Wide_Wide_String
865          renames Super_Delete;
866
867       procedure Delete
868         (Source  : in out Bounded_Wide_Wide_String;
869          From    : Positive;
870          Through : Natural)
871          renames Super_Delete;
872
873       function Trim
874         (Source : Bounded_Wide_Wide_String;
875          Side   : Trim_End) return Bounded_Wide_Wide_String
876          renames Super_Trim;
877
878       procedure Trim
879         (Source : in out Bounded_Wide_Wide_String;
880          Side   : Trim_End)
881          renames Super_Trim;
882
883       function Trim
884         (Source : Bounded_Wide_Wide_String;
885          Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
886          Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
887          return Bounded_Wide_Wide_String
888          renames Super_Trim;
889
890       procedure Trim
891         (Source : in out Bounded_Wide_Wide_String;
892          Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
893          Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
894          renames Super_Trim;
895
896       function Head
897         (Source : Bounded_Wide_Wide_String;
898          Count  : Natural;
899          Pad    : Wide_Wide_Character := Wide_Wide_Space;
900          Drop   : Truncation     := Error) return Bounded_Wide_Wide_String
901          renames Super_Head;
902
903       procedure Head
904         (Source : in out Bounded_Wide_Wide_String;
905          Count  : Natural;
906          Pad    : Wide_Wide_Character := Wide_Wide_Space;
907          Drop   : Truncation     := Error)
908          renames Super_Head;
909
910       function Tail
911         (Source : Bounded_Wide_Wide_String;
912          Count  : Natural;
913          Pad    : Wide_Wide_Character := Wide_Wide_Space;
914          Drop   : Truncation     := Error) return Bounded_Wide_Wide_String
915          renames Super_Tail;
916
917       procedure Tail
918         (Source : in out Bounded_Wide_Wide_String;
919          Count  : Natural;
920          Pad    : Wide_Wide_Character := Wide_Wide_Space;
921          Drop   : Truncation := Error)
922          renames Super_Tail;
923
924       function "*"
925         (Left  : Natural;
926          Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String
927          renames Times;
928
929       function Replicate
930         (Count : Natural;
931          Item  : Bounded_Wide_Wide_String;
932          Drop  : Truncation := Error) return Bounded_Wide_Wide_String
933          renames Super_Replicate;
934
935    end Generic_Bounded_Length;
936
937 end Ada.Strings.Wide_Wide_Bounded;