OSDN Git Service

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