1------------------------------------------------------------------------------
2--                                                                          --
3--                         GNAT RUN-TIME COMPONENTS                         --
4--                                                                          --
5--                    A D A . S T R I N G S . F I X E D                     --
6--                                                                          --
7--                                 S p e c                                  --
8--                                                                          --
9-- This specification is derived from the Ada Reference Manual for use with --
10-- GNAT.  In accordance with the copyright of that document, you can freely --
11-- copy and modify this specification,  provided that if you redistribute a --
12-- modified version,  any changes that you have made are clearly indicated. --
13--                                                                          --
14------------------------------------------------------------------------------
15
16with Ada.Strings.Maps;
17
18package Ada.Strings.Fixed is
19   pragma Preelaborate;
20
21   --------------------------------------------------------------
22   -- Copy Procedure for Strings of Possibly Different Lengths --
23   --------------------------------------------------------------
24
25   procedure Move
26     (Source  : String;
27      Target  : out String;
28      Drop    : Truncation := Error;
29      Justify : Alignment  := Left;
30      Pad     : Character  := Space);
31
32   ------------------------
33   -- Search Subprograms --
34   ------------------------
35
36   function Index
37     (Source  : String;
38      Pattern : String;
39      Going   : Direction := Forward;
40      Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
41
42   function Index
43     (Source  : String;
44      Pattern : String;
45      Going   : Direction := Forward;
46      Mapping : Maps.Character_Mapping_Function) return Natural;
47
48   function Index
49     (Source : String;
50      Set    : Maps.Character_Set;
51      Test   : Membership := Inside;
52      Going  : Direction  := Forward) return Natural;
53
54   function Index
55     (Source  : String;
56      Pattern : String;
57      From    : Positive;
58      Going   : Direction := Forward;
59      Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
60   pragma Ada_05 (Index);
61
62   function Index
63     (Source  : String;
64      Pattern : String;
65      From    : Positive;
66      Going   : Direction := Forward;
67      Mapping : Maps.Character_Mapping_Function) return Natural;
68   pragma Ada_05 (Index);
69
70   function Index
71     (Source  : String;
72      Set     : Maps.Character_Set;
73      From    : Positive;
74      Test    : Membership := Inside;
75      Going   : Direction := Forward) return Natural;
76   pragma Ada_05 (Index);
77
78   function Index_Non_Blank
79     (Source : String;
80      Going  : Direction := Forward) return Natural;
81
82   function Index_Non_Blank
83     (Source : String;
84      From   : Positive;
85      Going  : Direction := Forward) return Natural;
86   pragma Ada_05 (Index_Non_Blank);
87
88   function Count
89     (Source  : String;
90      Pattern : String;
91      Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
92
93   function Count
94     (Source  : String;
95      Pattern : String;
96      Mapping : Maps.Character_Mapping_Function) return Natural;
97
98   function Count
99     (Source : String;
100      Set    : Maps.Character_Set) return Natural;
101
102   procedure Find_Token
103     (Source : String;
104      Set    : Maps.Character_Set;
105      From   : Positive;
106      Test   : Membership;
107      First  : out Positive;
108      Last   : out Natural);
109   pragma Ada_2012 (Find_Token);
110
111   procedure Find_Token
112     (Source : String;
113      Set    : Maps.Character_Set;
114      Test   : Membership;
115      First  : out Positive;
116      Last   : out Natural);
117
118   ------------------------------------
119   -- String Translation Subprograms --
120   ------------------------------------
121
122   function Translate
123     (Source  : String;
124      Mapping : Maps.Character_Mapping) return String;
125
126   procedure Translate
127     (Source  : in out String;
128      Mapping : Maps.Character_Mapping);
129
130   function Translate
131     (Source  : String;
132      Mapping : Maps.Character_Mapping_Function) return String;
133
134   procedure Translate
135     (Source  : in out String;
136      Mapping : Maps.Character_Mapping_Function);
137
138   ---------------------------------------
139   -- String Transformation Subprograms --
140   ---------------------------------------
141
142   function Replace_Slice
143     (Source : String;
144      Low    : Positive;
145      High   : Natural;
146      By     : String) return String;
147
148   procedure Replace_Slice
149     (Source  : in out String;
150      Low     : Positive;
151      High    : Natural;
152      By      : String;
153      Drop    : Truncation := Error;
154      Justify : Alignment  := Left;
155      Pad     : Character  := Space);
156
157   function Insert
158     (Source   : String;
159      Before   : Positive;
160      New_Item : String) return String;
161
162   procedure Insert
163     (Source   : in out String;
164      Before   : Positive;
165      New_Item : String;
166      Drop     : Truncation := Error);
167
168   function Overwrite
169     (Source   : String;
170      Position : Positive;
171      New_Item : String) return String;
172
173   procedure Overwrite
174     (Source   : in out String;
175      Position : Positive;
176      New_Item : String;
177      Drop     : Truncation := Right);
178
179   function Delete
180     (Source  : String;
181      From    : Positive;
182      Through : Natural) return String;
183
184   procedure Delete
185     (Source  : in out String;
186      From    : Positive;
187      Through : Natural;
188      Justify : Alignment := Left;
189      Pad     : Character := Space);
190
191   ---------------------------------
192   -- String Selector Subprograms --
193   ---------------------------------
194
195   function Trim
196     (Source : String;
197      Side   : Trim_End) return String;
198
199   procedure Trim
200     (Source  : in out String;
201      Side    : Trim_End;
202      Justify : Alignment := Left;
203      Pad     : Character := Space);
204
205   function Trim
206     (Source : String;
207      Left   : Maps.Character_Set;
208      Right  : Maps.Character_Set) return String;
209
210   procedure Trim
211     (Source  : in out String;
212      Left    : Maps.Character_Set;
213      Right   : Maps.Character_Set;
214      Justify : Alignment := Strings.Left;
215      Pad     : Character := Space);
216
217   function Head
218     (Source : String;
219      Count  : Natural;
220      Pad    : Character := Space) return String;
221
222   procedure Head
223     (Source  : in out String;
224      Count   : Natural;
225      Justify : Alignment := Left;
226      Pad     : Character := Space);
227
228   function Tail
229     (Source : String;
230      Count  : Natural;
231      Pad    : Character := Space) return String;
232
233   procedure Tail
234     (Source  : in out String;
235      Count   : Natural;
236      Justify : Alignment := Left;
237      Pad     : Character := Space);
238
239   ----------------------------------
240   -- String Constructor Functions --
241   ----------------------------------
242
243   function "*"
244     (Left  : Natural;
245      Right : Character) return String;
246
247   function "*"
248     (Left  : Natural;
249      Right : String) return String;
250
251end Ada.Strings.Fixed;
252