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