1 ------------------------------------------------------------------------------
3 -- GNAT RUN-TIME COMPONENTS --
5 -- A D A . S T R I N G S . B O U N D E D --
9 -- Copyright (C) 1992-2020, Free Software Foundation, Inc. --
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. --
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. --
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. --
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/>. --
31 -- GNAT was originally developed by the GNAT team at New York University. --
32 -- Extensive contributions were provided by Ada Core Technologies Inc. --
34 ------------------------------------------------------------------------------
36 -- Preconditions in this unit are meant for analysis only, not for run-time
37 -- checking, so that the expected exceptions are raised. This is enforced by
38 -- setting the corresponding assertion policy to Ignore.
40 pragma Assertion_Policy (Pre => Ignore);
42 with Ada.Strings.Maps;
43 with Ada.Strings.Superbounded;
45 package Ada.Strings.Bounded is
50 -- Maximum length of a Bounded_String
52 package Generic_Bounded_Length with
53 Initial_Condition => Length (Null_Bounded_String) = 0
56 Max_Length : constant Positive := Max;
58 type Bounded_String is private;
59 pragma Preelaborable_Initialization (Bounded_String);
61 Null_Bounded_String : constant Bounded_String;
63 subtype Length_Range is Natural range 0 .. Max_Length;
65 function Length (Source : Bounded_String) return Length_Range with
68 --------------------------------------------------------
69 -- Conversion, Concatenation, and Selection Functions --
70 --------------------------------------------------------
72 function To_Bounded_String
74 Drop : Truncation := Error) return Bounded_String
76 Pre => (if Source'Length > Max_Length then Drop /= Error),
78 Length (To_Bounded_String'Result)
79 = Natural'Min (Max_Length, Source'Length),
82 function To_String (Source : Bounded_String) return String with
83 Post => To_String'Result'Length = Length (Source),
86 procedure Set_Bounded_String
87 (Target : out Bounded_String;
89 Drop : Truncation := Error)
91 Pre => (if Source'Length > Max_Length then Drop /= Error),
92 Post => Length (Target) = Natural'Min (Max_Length, Source'Length),
94 pragma Ada_05 (Set_Bounded_String);
97 (Left : Bounded_String;
98 Right : Bounded_String;
99 Drop : Truncation := Error) return Bounded_String
102 (if Length (Left) > Max_Length - Length (Right)
105 Length (Append'Result)
106 = Natural'Min (Max_Length, Length (Left) + Length (Right)),
110 (Left : Bounded_String;
112 Drop : Truncation := Error) return Bounded_String
115 (if Right'Length > Max_Length - Length (Left)
118 Length (Append'Result)
119 = Natural'Min (Max_Length, Length (Left) + Right'Length),
124 Right : Bounded_String;
125 Drop : Truncation := Error) return Bounded_String
128 (if Left'Length > Max_Length - Length (Right)
131 Length (Append'Result)
132 = Natural'Min (Max_Length, Left'Length + Length (Right)),
136 (Left : Bounded_String;
138 Drop : Truncation := Error) return Bounded_String
140 Pre => (if Length (Left) = Max_Length then Drop /= Error),
142 Length (Append'Result)
143 = Natural'Min (Max_Length, Length (Left) + 1),
148 Right : Bounded_String;
149 Drop : Truncation := Error) return Bounded_String
151 Pre => (if Length (Right) = Max_Length then Drop /= Error),
153 Length (Append'Result)
154 = Natural'Min (Max_Length, 1 + Length (Right)),
158 (Source : in out Bounded_String;
159 New_Item : Bounded_String;
160 Drop : Truncation := Error)
163 (if Length (Source) > Max_Length - Length (New_Item)
167 = Natural'Min (Max_Length, Length (Source)'Old + Length (New_Item)),
171 (Source : in out Bounded_String;
173 Drop : Truncation := Error)
176 (if New_Item'Length > Max_Length - Length (Source)
180 = Natural'Min (Max_Length, Length (Source)'Old + New_Item'Length),
184 (Source : in out Bounded_String;
185 New_Item : Character;
186 Drop : Truncation := Error)
188 Pre => (if Length (Source) = Max_Length then Drop /= Error),
191 = Natural'Min (Max_Length, Length (Source)'Old + 1),
195 (Left : Bounded_String;
196 Right : Bounded_String) return Bounded_String
198 Pre => Length (Left) <= Max_Length - Length (Right),
199 Post => Length ("&"'Result) = Length (Left) + Length (Right),
203 (Left : Bounded_String;
204 Right : String) return Bounded_String
206 Pre => Right'Length <= Max_Length - Length (Left),
207 Post => Length ("&"'Result) = Length (Left) + Right'Length,
212 Right : Bounded_String) return Bounded_String
214 Pre => Left'Length <= Max_Length - Length (Right),
215 Post => Length ("&"'Result) = Left'Length + Length (Right),
219 (Left : Bounded_String;
220 Right : Character) return Bounded_String
222 Pre => Length (Left) < Max_Length,
223 Post => Length ("&"'Result) = Length (Left) + 1,
228 Right : Bounded_String) return Bounded_String
230 Pre => Length (Right) < Max_Length,
231 Post => Length ("&"'Result) = 1 + Length (Right),
235 (Source : Bounded_String;
236 Index : Positive) return Character
238 Pre => Index <= Length (Source),
241 procedure Replace_Element
242 (Source : in out Bounded_String;
246 Pre => Index <= Length (Source),
247 Post => Length (Source) = Length (Source)'Old,
251 (Source : Bounded_String;
253 High : Natural) return String
255 Pre => Low - 1 <= Length (Source) and then High <= Length (Source),
256 Post => Slice'Result'Length = Natural'Max (0, High - Low + 1),
259 function Bounded_Slice
260 (Source : Bounded_String;
262 High : Natural) return Bounded_String
264 Pre => Low - 1 <= Length (Source) and then High <= Length (Source),
266 Length (Bounded_Slice'Result) = Natural'Max (0, High - Low + 1),
268 pragma Ada_05 (Bounded_Slice);
270 procedure Bounded_Slice
271 (Source : Bounded_String;
272 Target : out Bounded_String;
276 Pre => Low - 1 <= Length (Source) and then High <= Length (Source),
277 Post => Length (Target) = Natural'Max (0, High - Low + 1),
279 pragma Ada_05 (Bounded_Slice);
282 (Left : Bounded_String;
283 Right : Bounded_String) return Boolean
288 (Left : Bounded_String;
289 Right : String) return Boolean
295 Right : Bounded_String) return Boolean
300 (Left : Bounded_String;
301 Right : Bounded_String) return Boolean
306 (Left : Bounded_String;
307 Right : String) return Boolean
313 Right : Bounded_String) return Boolean
318 (Left : Bounded_String;
319 Right : Bounded_String) return Boolean
324 (Left : Bounded_String;
325 Right : String) return Boolean
331 Right : Bounded_String) return Boolean
336 (Left : Bounded_String;
337 Right : Bounded_String) return Boolean
342 (Left : Bounded_String;
343 Right : String) return Boolean
349 Right : Bounded_String) return Boolean
354 (Left : Bounded_String;
355 Right : Bounded_String) return Boolean
360 (Left : Bounded_String;
361 Right : String) return Boolean
367 Right : Bounded_String) return Boolean
371 ----------------------
372 -- Search Functions --
373 ----------------------
376 (Source : Bounded_String;
378 Going : Direction := Forward;
379 Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
381 Pre => Pattern'Length /= 0,
385 (Source : Bounded_String;
387 Going : Direction := Forward;
388 Mapping : Maps.Character_Mapping_Function) return Natural
390 Pre => Pattern'Length /= 0,
394 (Source : Bounded_String;
395 Set : Maps.Character_Set;
396 Test : Membership := Inside;
397 Going : Direction := Forward) return Natural
402 (Source : Bounded_String;
405 Going : Direction := Forward;
406 Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
409 (if Length (Source) /= 0
410 then From <= Length (Source))
411 and then Pattern'Length /= 0,
413 pragma Ada_05 (Index);
416 (Source : Bounded_String;
419 Going : Direction := Forward;
420 Mapping : Maps.Character_Mapping_Function) return Natural
423 (if Length (Source) /= 0
424 then From <= Length (Source))
425 and then Pattern'Length /= 0,
427 pragma Ada_05 (Index);
430 (Source : Bounded_String;
431 Set : Maps.Character_Set;
433 Test : Membership := Inside;
434 Going : Direction := Forward) return Natural
436 Pre => (if Length (Source) /= 0 then From <= Length (Source)),
438 pragma Ada_05 (Index);
440 function Index_Non_Blank
441 (Source : Bounded_String;
442 Going : Direction := Forward) return Natural
446 function Index_Non_Blank
447 (Source : Bounded_String;
449 Going : Direction := Forward) return Natural
451 Pre => (if Length (Source) /= 0 then From <= Length (Source)),
453 pragma Ada_05 (Index_Non_Blank);
456 (Source : Bounded_String;
458 Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
460 Pre => Pattern'Length /= 0,
464 (Source : Bounded_String;
466 Mapping : Maps.Character_Mapping_Function) return Natural
468 Pre => Pattern'Length /= 0,
472 (Source : Bounded_String;
473 Set : Maps.Character_Set) return Natural
478 (Source : Bounded_String;
479 Set : Maps.Character_Set;
482 First : out Positive;
485 Pre => (if Length (Source) /= 0 then From <= Length (Source)),
487 pragma Ada_2012 (Find_Token);
490 (Source : Bounded_String;
491 Set : Maps.Character_Set;
493 First : out Positive;
498 ------------------------------------
499 -- String Translation Subprograms --
500 ------------------------------------
503 (Source : Bounded_String;
504 Mapping : Maps.Character_Mapping) return Bounded_String
506 Post => Length (Translate'Result) = Length (Source),
510 (Source : in out Bounded_String;
511 Mapping : Maps.Character_Mapping)
513 Post => Length (Source) = Length (Source)'Old,
517 (Source : Bounded_String;
518 Mapping : Maps.Character_Mapping_Function) return Bounded_String
520 Post => Length (Translate'Result) = Length (Source),
524 (Source : in out Bounded_String;
525 Mapping : Maps.Character_Mapping_Function)
527 Post => Length (Source) = Length (Source)'Old,
530 ---------------------------------------
531 -- String Transformation Subprograms --
532 ---------------------------------------
534 function Replace_Slice
535 (Source : Bounded_String;
539 Drop : Truncation := Error) return Bounded_String
542 Low - 1 <= Length (Source)
547 <= Max_Length - By'Length
548 - Natural'Max (Length (Source) - High, 0)
549 else Length (Source) <= Max_Length - By'Length)),
552 Length (Replace_Slice'Result)
555 Low - 1 + By'Length + Natural'Max (Length (Source) - High,
558 Length (Replace_Slice'Result)
559 = Natural'Min (Max_Length, Length (Source) + By'Length)),
562 procedure Replace_Slice
563 (Source : in out Bounded_String;
567 Drop : Truncation := Error)
570 Low - 1 <= Length (Source)
575 <= Max_Length - By'Length
576 - Natural'Max (Length (Source) - High, 0)
577 else Length (Source) <= Max_Length - By'Length)),
583 Low - 1 + By'Length + Natural'Max (Length (Source)'Old - High,
587 = Natural'Min (Max_Length, Length (Source)'Old + By'Length)),
591 (Source : Bounded_String;
594 Drop : Truncation := Error) return Bounded_String
597 Before - 1 <= Length (Source)
598 and then (if New_Item'Length > Max_Length - Length (Source)
601 Length (Insert'Result)
602 = Natural'Min (Max_Length, Length (Source) + New_Item'Length),
606 (Source : in out Bounded_String;
609 Drop : Truncation := Error)
612 Before - 1 <= Length (Source)
613 and then (if New_Item'Length > Max_Length - Length (Source)
617 = Natural'Min (Max_Length, Length (Source)'Old + New_Item'Length),
621 (Source : Bounded_String;
624 Drop : Truncation := Error) return Bounded_String
627 Position - 1 <= Length (Source)
628 and then (if New_Item'Length > Max_Length - (Position - 1)
631 Length (Overwrite'Result)
634 Natural'Min (Max_Length, Position - 1 + New_Item'Length)),
638 (Source : in out Bounded_String;
641 Drop : Truncation := Error)
644 Position - 1 <= Length (Source)
645 and then (if New_Item'Length > Max_Length - (Position - 1)
650 (Length (Source)'Old,
651 Natural'Min (Max_Length, Position - 1 + New_Item'Length)),
655 (Source : Bounded_String;
657 Through : Natural) return Bounded_String
660 (if Through <= From then From - 1 <= Length (Source)),
663 Length (Delete'Result) = Length (Source) - (Through - From + 1),
665 Length (Delete'Result) = Length (Source)),
670 (Source : in out Bounded_String;
675 (if Through <= From then From - 1 <= Length (Source)),
678 Length (Source) = Length (Source)'Old - (Through - From + 1),
680 Length (Source) = Length (Source)'Old),
683 ---------------------------------
684 -- String Selector Subprograms --
685 ---------------------------------
688 (Source : Bounded_String;
689 Side : Trim_End) return Bounded_String
691 Post => Length (Trim'Result) <= Length (Source),
695 (Source : in out Bounded_String;
698 Post => Length (Source) <= Length (Source)'Old,
702 (Source : Bounded_String;
703 Left : Maps.Character_Set;
704 Right : Maps.Character_Set) return Bounded_String
706 Post => Length (Trim'Result) <= Length (Source),
710 (Source : in out Bounded_String;
711 Left : Maps.Character_Set;
712 Right : Maps.Character_Set)
714 Post => Length (Source) <= Length (Source)'Old,
718 (Source : Bounded_String;
720 Pad : Character := Space;
721 Drop : Truncation := Error) return Bounded_String
723 Pre => (if Count > Max_Length then Drop /= Error),
724 Post => Length (Head'Result) = Natural'Min (Max_Length, Count),
728 (Source : in out Bounded_String;
730 Pad : Character := Space;
731 Drop : Truncation := Error)
733 Pre => (if Count > Max_Length then Drop /= Error),
734 Post => Length (Source) = Natural'Min (Max_Length, Count),
738 (Source : Bounded_String;
740 Pad : Character := Space;
741 Drop : Truncation := Error) return Bounded_String
743 Pre => (if Count > Max_Length then Drop /= Error),
744 Post => Length (Tail'Result) = Natural'Min (Max_Length, Count),
748 (Source : in out Bounded_String;
750 Pad : Character := Space;
751 Drop : Truncation := Error)
753 Pre => (if Count > Max_Length then Drop /= Error),
754 Post => Length (Source) = Natural'Min (Max_Length, Count),
757 ------------------------------------
758 -- String Constructor Subprograms --
759 ------------------------------------
763 Right : Character) return Bounded_String
765 Pre => Left <= Max_Length,
766 Post => Length ("*"'Result) = Left,
771 Right : String) return Bounded_String
773 Pre => (if Left /= 0 then Right'Length <= Max_Length / Left),
774 Post => Length ("*"'Result) = Left * Right'Length,
779 Right : Bounded_String) return Bounded_String
781 Pre => (if Left /= 0 then Length (Right) <= Max_Length / Left),
782 Post => Length ("*"'Result) = Left * Length (Right),
788 Drop : Truncation := Error) return Bounded_String
790 Pre => (if Count > Max_Length then Drop /= Error),
792 Length (Replicate'Result)
793 = Natural'Min (Max_Length, Count),
799 Drop : Truncation := Error) return Bounded_String
803 and then Count > Max_Length / Item'Length
806 Length (Replicate'Result)
807 = Natural'Min (Max_Length, Count * Item'Length),
812 Item : Bounded_String;
813 Drop : Truncation := Error) return Bounded_String
816 (if Length (Item) /= 0
817 and then Count > Max_Length / Length (Item)
820 Length (Replicate'Result)
821 = Natural'Min (Max_Length, Count * Length (Item)),
825 -- Most of the implementation is in the separate non generic package
826 -- Ada.Strings.Superbounded. Type Bounded_String is derived from type
827 -- Superbounded.Super_String with the maximum length constraint. In
828 -- almost all cases, the routines in Superbounded can be called with
829 -- no requirement to pass the maximum length explicitly, since there
830 -- is at least one Bounded_String argument from which the maximum
831 -- length can be obtained. For all such routines, the implementation
832 -- in this private part is simply a renaming of the corresponding
833 -- routine in the superbounded package.
835 -- The five exceptions are the * and Replicate routines operating on
836 -- character values. For these cases, we have a routine in the body
837 -- that calls the superbounded routine passing the maximum length
838 -- explicitly as an extra parameter.
840 type Bounded_String is new Superbounded.Super_String (Max_Length);
841 -- Deriving Bounded_String from Superbounded.Super_String is the
842 -- real trick, it ensures that the type Bounded_String declared in
843 -- the generic instantiation is compatible with the Super_String
844 -- type declared in the Superbounded package.
846 function From_String (Source : String) return Bounded_String;
847 -- Private routine used only by Stream_Convert
849 pragma Stream_Convert (Bounded_String, From_String, To_String);
850 -- Provide stream routines without dragging in Ada.Streams
852 Null_Bounded_String : constant Bounded_String :=
853 (Max_Length => Max_Length,
856 (1 .. Max_Length => ASCII.NUL));
858 pragma Inline (To_Bounded_String);
860 procedure Set_Bounded_String
861 (Target : out Bounded_String;
863 Drop : Truncation := Error)
864 renames Set_Super_String;
867 (Source : Bounded_String) return Length_Range
868 renames Super_Length;
871 (Source : Bounded_String) return String
872 renames Super_To_String;
875 (Left : Bounded_String;
876 Right : Bounded_String;
877 Drop : Truncation := Error) return Bounded_String
878 renames Super_Append;
881 (Left : Bounded_String;
883 Drop : Truncation := Error) return Bounded_String
884 renames Super_Append;
888 Right : Bounded_String;
889 Drop : Truncation := Error) return Bounded_String
890 renames Super_Append;
893 (Left : Bounded_String;
895 Drop : Truncation := Error) return Bounded_String
896 renames Super_Append;
900 Right : Bounded_String;
901 Drop : Truncation := Error) return Bounded_String
902 renames Super_Append;
905 (Source : in out Bounded_String;
906 New_Item : Bounded_String;
907 Drop : Truncation := Error)
908 renames Super_Append;
911 (Source : in out Bounded_String;
913 Drop : Truncation := Error)
914 renames Super_Append;
917 (Source : in out Bounded_String;
918 New_Item : Character;
919 Drop : Truncation := Error)
920 renames Super_Append;
923 (Left : Bounded_String;
924 Right : Bounded_String) return Bounded_String
928 (Left : Bounded_String;
929 Right : String) return Bounded_String
934 Right : Bounded_String) return Bounded_String
938 (Left : Bounded_String;
939 Right : Character) return Bounded_String
944 Right : Bounded_String) return Bounded_String
948 (Source : Bounded_String;
949 Index : Positive) return Character
950 renames Super_Element;
952 procedure Replace_Element
953 (Source : in out Bounded_String;
956 renames Super_Replace_Element;
959 (Source : Bounded_String;
961 High : Natural) return String
964 function Bounded_Slice
965 (Source : Bounded_String;
967 High : Natural) return Bounded_String
970 procedure Bounded_Slice
971 (Source : Bounded_String;
972 Target : out Bounded_String;
977 overriding function "="
978 (Left : Bounded_String;
979 Right : Bounded_String) return Boolean
983 (Left : Bounded_String;
984 Right : String) return Boolean
989 Right : Bounded_String) return Boolean
993 (Left : Bounded_String;
994 Right : Bounded_String) return Boolean
998 (Left : Bounded_String;
999 Right : String) return Boolean
1004 Right : Bounded_String) return Boolean
1008 (Left : Bounded_String;
1009 Right : Bounded_String) return Boolean
1010 renames Less_Or_Equal;
1013 (Left : Bounded_String;
1014 Right : String) return Boolean
1015 renames Less_Or_Equal;
1019 Right : Bounded_String) return Boolean
1020 renames Less_Or_Equal;
1023 (Left : Bounded_String;
1024 Right : Bounded_String) return Boolean
1028 (Left : Bounded_String;
1029 Right : String) return Boolean
1034 Right : Bounded_String) return Boolean
1038 (Left : Bounded_String;
1039 Right : Bounded_String) return Boolean
1040 renames Greater_Or_Equal;
1043 (Left : Bounded_String;
1044 Right : String) return Boolean
1045 renames Greater_Or_Equal;
1049 Right : Bounded_String) return Boolean
1050 renames Greater_Or_Equal;
1053 (Source : Bounded_String;
1055 Going : Direction := Forward;
1056 Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
1057 renames Super_Index;
1060 (Source : Bounded_String;
1062 Going : Direction := Forward;
1063 Mapping : Maps.Character_Mapping_Function) return Natural
1064 renames Super_Index;
1067 (Source : Bounded_String;
1068 Set : Maps.Character_Set;
1069 Test : Membership := Inside;
1070 Going : Direction := Forward) return Natural
1071 renames Super_Index;
1074 (Source : Bounded_String;
1077 Going : Direction := Forward;
1078 Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
1079 renames Super_Index;
1082 (Source : Bounded_String;
1085 Going : Direction := Forward;
1086 Mapping : Maps.Character_Mapping_Function) return Natural
1087 renames Super_Index;
1090 (Source : Bounded_String;
1091 Set : Maps.Character_Set;
1093 Test : Membership := Inside;
1094 Going : Direction := Forward) return Natural
1095 renames Super_Index;
1097 function Index_Non_Blank
1098 (Source : Bounded_String;
1099 Going : Direction := Forward) return Natural
1100 renames Super_Index_Non_Blank;
1102 function Index_Non_Blank
1103 (Source : Bounded_String;
1105 Going : Direction := Forward) return Natural
1106 renames Super_Index_Non_Blank;
1109 (Source : Bounded_String;
1111 Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
1112 renames Super_Count;
1115 (Source : Bounded_String;
1117 Mapping : Maps.Character_Mapping_Function) return Natural
1118 renames Super_Count;
1121 (Source : Bounded_String;
1122 Set : Maps.Character_Set) return Natural
1123 renames Super_Count;
1125 procedure Find_Token
1126 (Source : Bounded_String;
1127 Set : Maps.Character_Set;
1130 First : out Positive;
1132 renames Super_Find_Token;
1134 procedure Find_Token
1135 (Source : Bounded_String;
1136 Set : Maps.Character_Set;
1138 First : out Positive;
1140 renames Super_Find_Token;
1143 (Source : Bounded_String;
1144 Mapping : Maps.Character_Mapping) return Bounded_String
1145 renames Super_Translate;
1148 (Source : in out Bounded_String;
1149 Mapping : Maps.Character_Mapping)
1150 renames Super_Translate;
1153 (Source : Bounded_String;
1154 Mapping : Maps.Character_Mapping_Function) return Bounded_String
1155 renames Super_Translate;
1158 (Source : in out Bounded_String;
1159 Mapping : Maps.Character_Mapping_Function)
1160 renames Super_Translate;
1162 function Replace_Slice
1163 (Source : Bounded_String;
1167 Drop : Truncation := Error) return Bounded_String
1168 renames Super_Replace_Slice;
1170 procedure Replace_Slice
1171 (Source : in out Bounded_String;
1175 Drop : Truncation := Error)
1176 renames Super_Replace_Slice;
1179 (Source : Bounded_String;
1182 Drop : Truncation := Error) return Bounded_String
1183 renames Super_Insert;
1186 (Source : in out Bounded_String;
1189 Drop : Truncation := Error)
1190 renames Super_Insert;
1193 (Source : Bounded_String;
1194 Position : Positive;
1196 Drop : Truncation := Error) return Bounded_String
1197 renames Super_Overwrite;
1200 (Source : in out Bounded_String;
1201 Position : Positive;
1203 Drop : Truncation := Error)
1204 renames Super_Overwrite;
1207 (Source : Bounded_String;
1209 Through : Natural) return Bounded_String
1210 renames Super_Delete;
1213 (Source : in out Bounded_String;
1216 renames Super_Delete;
1219 (Source : Bounded_String;
1220 Side : Trim_End) return Bounded_String
1224 (Source : in out Bounded_String;
1229 (Source : Bounded_String;
1230 Left : Maps.Character_Set;
1231 Right : Maps.Character_Set) return Bounded_String
1235 (Source : in out Bounded_String;
1236 Left : Maps.Character_Set;
1237 Right : Maps.Character_Set)
1241 (Source : Bounded_String;
1243 Pad : Character := Space;
1244 Drop : Truncation := Error) return Bounded_String
1248 (Source : in out Bounded_String;
1250 Pad : Character := Space;
1251 Drop : Truncation := Error)
1255 (Source : Bounded_String;
1257 Pad : Character := Space;
1258 Drop : Truncation := Error) return Bounded_String
1262 (Source : in out Bounded_String;
1264 Pad : Character := Space;
1265 Drop : Truncation := Error)
1270 Right : Bounded_String) return Bounded_String
1275 Item : Bounded_String;
1276 Drop : Truncation := Error) return Bounded_String
1277 renames Super_Replicate;
1279 end Generic_Bounded_Length;
1281 end Ada.Strings.Bounded;