OSDN Git Service

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