OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [ada/] [a-stzunb.ads] - Blame information for rev 706

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 706 jeremybenn
------------------------------------------------------------------------------
2
--                                                                          --
3
--                         GNAT RUN-TIME COMPONENTS                         --
4
--                                                                          --
5
--      A D A . S T R I N G S . W I D E _ W I D E _ U N B O U N D E D       --
6
--                                                                          --
7
--                                 S p e c                                  --
8
--                                                                          --
9
--          Copyright (C) 1992-2010, 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
------------------------------------------------------------------------------
35
 
36
with Ada.Strings.Wide_Wide_Maps;
37
with Ada.Finalization;
38
 
39
package Ada.Strings.Wide_Wide_Unbounded is
40
   pragma Preelaborate;
41
 
42
   type Unbounded_Wide_Wide_String is private;
43
   pragma Preelaborable_Initialization (Unbounded_Wide_Wide_String);
44
 
45
   Null_Unbounded_Wide_Wide_String : constant Unbounded_Wide_Wide_String;
46
 
47
   function Length (Source : Unbounded_Wide_Wide_String) return Natural;
48
 
49
   type Wide_Wide_String_Access is access all Wide_Wide_String;
50
 
51
   procedure Free (X : in out Wide_Wide_String_Access);
52
 
53
   --------------------------------------------------------
54
   -- Conversion, Concatenation, and Selection Functions --
55
   --------------------------------------------------------
56
 
57
   function To_Unbounded_Wide_Wide_String
58
     (Source : Wide_Wide_String) return Unbounded_Wide_Wide_String;
59
 
60
   function To_Unbounded_Wide_Wide_String
61
     (Length : Natural) return Unbounded_Wide_Wide_String;
62
 
63
   function To_Wide_Wide_String
64
     (Source : Unbounded_Wide_Wide_String) return Wide_Wide_String;
65
 
66
   procedure Set_Unbounded_Wide_Wide_String
67
     (Target : out Unbounded_Wide_Wide_String;
68
      Source : Wide_Wide_String);
69
   pragma Ada_05 (Set_Unbounded_Wide_Wide_String);
70
 
71
   procedure Append
72
     (Source   : in out Unbounded_Wide_Wide_String;
73
      New_Item : Unbounded_Wide_Wide_String);
74
 
75
   procedure Append
76
     (Source   : in out Unbounded_Wide_Wide_String;
77
      New_Item : Wide_Wide_String);
78
 
79
   procedure Append
80
     (Source   : in out Unbounded_Wide_Wide_String;
81
      New_Item : Wide_Wide_Character);
82
 
83
   function "&"
84
     (Left  : Unbounded_Wide_Wide_String;
85
      Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String;
86
 
87
   function "&"
88
     (Left  : Unbounded_Wide_Wide_String;
89
      Right : Wide_Wide_String) return Unbounded_Wide_Wide_String;
90
 
91
   function "&"
92
     (Left  : Wide_Wide_String;
93
      Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String;
94
 
95
   function "&"
96
     (Left  : Unbounded_Wide_Wide_String;
97
      Right : Wide_Wide_Character) return Unbounded_Wide_Wide_String;
98
 
99
   function "&"
100
     (Left  : Wide_Wide_Character;
101
      Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String;
102
 
103
   function Element
104
     (Source : Unbounded_Wide_Wide_String;
105
      Index  : Positive) return Wide_Wide_Character;
106
 
107
   procedure Replace_Element
108
     (Source : in out Unbounded_Wide_Wide_String;
109
      Index  : Positive;
110
      By     : Wide_Wide_Character);
111
 
112
   function Slice
113
     (Source : Unbounded_Wide_Wide_String;
114
      Low    : Positive;
115
      High   : Natural) return Wide_Wide_String;
116
 
117
   function Unbounded_Slice
118
     (Source : Unbounded_Wide_Wide_String;
119
      Low    : Positive;
120
      High   : Natural) return Unbounded_Wide_Wide_String;
121
      pragma Ada_05 (Unbounded_Slice);
122
 
123
   procedure Unbounded_Slice
124
     (Source : Unbounded_Wide_Wide_String;
125
      Target : out Unbounded_Wide_Wide_String;
126
      Low    : Positive;
127
      High   : Natural);
128
      pragma Ada_05 (Unbounded_Slice);
129
 
130
   function "="
131
     (Left  : Unbounded_Wide_Wide_String;
132
      Right : Unbounded_Wide_Wide_String) return Boolean;
133
 
134
   function "="
135
     (Left  : Unbounded_Wide_Wide_String;
136
      Right : Wide_Wide_String) return Boolean;
137
 
138
   function "="
139
     (Left  : Wide_Wide_String;
140
      Right : Unbounded_Wide_Wide_String) return Boolean;
141
 
142
   function "<"
143
     (Left  : Unbounded_Wide_Wide_String;
144
      Right : Unbounded_Wide_Wide_String) return Boolean;
145
 
146
   function "<"
147
     (Left  : Unbounded_Wide_Wide_String;
148
      Right : Wide_Wide_String) return Boolean;
149
 
150
   function "<"
151
     (Left  : Wide_Wide_String;
152
      Right : Unbounded_Wide_Wide_String) return Boolean;
153
 
154
   function "<="
155
     (Left  : Unbounded_Wide_Wide_String;
156
      Right : Unbounded_Wide_Wide_String) return Boolean;
157
 
158
   function "<="
159
     (Left  : Unbounded_Wide_Wide_String;
160
      Right : Wide_Wide_String) return Boolean;
161
 
162
   function "<="
163
     (Left  : Wide_Wide_String;
164
      Right : Unbounded_Wide_Wide_String) return Boolean;
165
 
166
   function ">"
167
     (Left  : Unbounded_Wide_Wide_String;
168
      Right : Unbounded_Wide_Wide_String) return Boolean;
169
 
170
   function ">"
171
     (Left  : Unbounded_Wide_Wide_String;
172
      Right : Wide_Wide_String) return Boolean;
173
 
174
   function ">"
175
     (Left  : Wide_Wide_String;
176
      Right : Unbounded_Wide_Wide_String) return Boolean;
177
 
178
   function ">="
179
     (Left  : Unbounded_Wide_Wide_String;
180
      Right : Unbounded_Wide_Wide_String) return Boolean;
181
 
182
   function ">="
183
     (Left  : Unbounded_Wide_Wide_String;
184
      Right : Wide_Wide_String) return Boolean;
185
 
186
   function ">="
187
     (Left  : Wide_Wide_String;
188
      Right : Unbounded_Wide_Wide_String) return Boolean;
189
 
190
   ------------------------
191
   -- Search Subprograms --
192
   ------------------------
193
 
194
   function Index
195
     (Source  : Unbounded_Wide_Wide_String;
196
      Pattern : Wide_Wide_String;
197
      Going   : Direction := Forward;
198
      Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
199
                  Wide_Wide_Maps.Identity)
200
      return Natural;
201
 
202
   function Index
203
     (Source  : Unbounded_Wide_Wide_String;
204
      Pattern : Wide_Wide_String;
205
      Going   : Direction := Forward;
206
      Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
207
      return Natural;
208
 
209
   function Index
210
     (Source : Unbounded_Wide_Wide_String;
211
      Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
212
      Test   : Membership := Inside;
213
      Going  : Direction  := Forward) return Natural;
214
 
215
   function Index
216
     (Source  : Unbounded_Wide_Wide_String;
217
      Pattern : Wide_Wide_String;
218
      From    : Positive;
219
      Going   : Direction := Forward;
220
      Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
221
                  Wide_Wide_Maps.Identity)
222
      return Natural;
223
   pragma Ada_05 (Index);
224
 
225
   function Index
226
     (Source  : Unbounded_Wide_Wide_String;
227
      Pattern : Wide_Wide_String;
228
      From    : Positive;
229
      Going   : Direction := Forward;
230
      Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
231
      return Natural;
232
   pragma Ada_05 (Index);
233
 
234
   function Index
235
     (Source : Unbounded_Wide_Wide_String;
236
      Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
237
      From   : Positive;
238
      Test   : Membership := Inside;
239
      Going  : Direction := Forward) return Natural;
240
   pragma Ada_05 (Index);
241
 
242
   function Index_Non_Blank
243
     (Source : Unbounded_Wide_Wide_String;
244
      Going  : Direction := Forward) return Natural;
245
 
246
   function Index_Non_Blank
247
     (Source : Unbounded_Wide_Wide_String;
248
      From   : Positive;
249
      Going  : Direction := Forward) return Natural;
250
   pragma Ada_05 (Index_Non_Blank);
251
 
252
   function Count
253
     (Source  : Unbounded_Wide_Wide_String;
254
      Pattern : Wide_Wide_String;
255
      Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
256
                  Wide_Wide_Maps.Identity)
257
      return Natural;
258
 
259
   function Count
260
     (Source  : Unbounded_Wide_Wide_String;
261
      Pattern : Wide_Wide_String;
262
      Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
263
      return Natural;
264
 
265
   function Count
266
     (Source : Unbounded_Wide_Wide_String;
267
      Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural;
268
 
269
   procedure Find_Token
270
     (Source : Unbounded_Wide_Wide_String;
271
      Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
272
      From   : Positive;
273
      Test   : Membership;
274
      First  : out Positive;
275
      Last   : out Natural);
276
   pragma Ada_2012 (Find_Token);
277
 
278
   procedure Find_Token
279
     (Source : Unbounded_Wide_Wide_String;
280
      Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
281
      Test   : Membership;
282
      First  : out Positive;
283
      Last   : out Natural);
284
 
285
   ------------------------------------
286
   -- String Translation Subprograms --
287
   ------------------------------------
288
 
289
   function Translate
290
     (Source  : Unbounded_Wide_Wide_String;
291
      Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
292
      return Unbounded_Wide_Wide_String;
293
 
294
   procedure Translate
295
     (Source  : in out Unbounded_Wide_Wide_String;
296
      Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping);
297
 
298
   function Translate
299
     (Source  : Unbounded_Wide_Wide_String;
300
      Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
301
      return Unbounded_Wide_Wide_String;
302
 
303
   procedure Translate
304
     (Source  : in out Unbounded_Wide_Wide_String;
305
      Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function);
306
 
307
   ---------------------------------------
308
   -- String Transformation Subprograms --
309
   ---------------------------------------
310
 
311
   function Replace_Slice
312
     (Source : Unbounded_Wide_Wide_String;
313
      Low    : Positive;
314
      High   : Natural;
315
      By     : Wide_Wide_String) return Unbounded_Wide_Wide_String;
316
 
317
   procedure Replace_Slice
318
     (Source : in out Unbounded_Wide_Wide_String;
319
      Low    : Positive;
320
      High   : Natural;
321
      By     : Wide_Wide_String);
322
 
323
   function Insert
324
     (Source   : Unbounded_Wide_Wide_String;
325
      Before   : Positive;
326
      New_Item : Wide_Wide_String) return Unbounded_Wide_Wide_String;
327
 
328
   procedure Insert
329
     (Source   : in out Unbounded_Wide_Wide_String;
330
      Before   : Positive;
331
      New_Item : Wide_Wide_String);
332
 
333
   function Overwrite
334
     (Source   : Unbounded_Wide_Wide_String;
335
      Position : Positive;
336
      New_Item : Wide_Wide_String) return Unbounded_Wide_Wide_String;
337
 
338
   procedure Overwrite
339
     (Source   : in out Unbounded_Wide_Wide_String;
340
      Position : Positive;
341
      New_Item : Wide_Wide_String);
342
 
343
   function Delete
344
     (Source  : Unbounded_Wide_Wide_String;
345
      From    : Positive;
346
      Through : Natural) return Unbounded_Wide_Wide_String;
347
 
348
   procedure Delete
349
     (Source  : in out Unbounded_Wide_Wide_String;
350
      From    : Positive;
351
      Through : Natural);
352
 
353
   function Trim
354
     (Source : Unbounded_Wide_Wide_String;
355
      Side   : Trim_End) return Unbounded_Wide_Wide_String;
356
 
357
   procedure Trim
358
     (Source : in out Unbounded_Wide_Wide_String;
359
      Side   : Trim_End);
360
 
361
   function Trim
362
     (Source : Unbounded_Wide_Wide_String;
363
      Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
364
      Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
365
      return Unbounded_Wide_Wide_String;
366
 
367
   procedure Trim
368
     (Source : in out Unbounded_Wide_Wide_String;
369
      Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
370
      Right  : Wide_Wide_Maps.Wide_Wide_Character_Set);
371
 
372
   function Head
373
     (Source : Unbounded_Wide_Wide_String;
374
      Count  : Natural;
375
      Pad    : Wide_Wide_Character := Wide_Wide_Space)
376
      return Unbounded_Wide_Wide_String;
377
 
378
   procedure Head
379
     (Source : in out Unbounded_Wide_Wide_String;
380
      Count  : Natural;
381
      Pad    : Wide_Wide_Character := Wide_Wide_Space);
382
 
383
   function Tail
384
     (Source : Unbounded_Wide_Wide_String;
385
      Count  : Natural;
386
      Pad    : Wide_Wide_Character := Wide_Wide_Space)
387
      return Unbounded_Wide_Wide_String;
388
 
389
   procedure Tail
390
     (Source : in out Unbounded_Wide_Wide_String;
391
      Count  : Natural;
392
      Pad    : Wide_Wide_Character := Wide_Wide_Space);
393
 
394
   function "*"
395
     (Left  : Natural;
396
      Right : Wide_Wide_Character) return Unbounded_Wide_Wide_String;
397
 
398
   function "*"
399
     (Left  : Natural;
400
      Right : Wide_Wide_String) return Unbounded_Wide_Wide_String;
401
 
402
   function "*"
403
     (Left  : Natural;
404
      Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String;
405
 
406
private
407
   pragma Inline (Length);
408
 
409
   package AF renames Ada.Finalization;
410
 
411
   Null_Wide_Wide_String : aliased Wide_Wide_String := "";
412
 
413
   function To_Unbounded_Wide
414
     (S : Wide_Wide_String) return Unbounded_Wide_Wide_String
415
     renames To_Unbounded_Wide_Wide_String;
416
 
417
   type Unbounded_Wide_Wide_String is new AF.Controlled with record
418
      Reference : Wide_Wide_String_Access := Null_Wide_Wide_String'Access;
419
      Last      : Natural            := 0;
420
   end record;
421
 
422
   --  The Unbounded_Wide_Wide_String is using a buffered implementation to
423
   --  increase speed of the Append/Delete/Insert procedures. The Reference
424
   --  string pointer above contains the current string value and extra room
425
   --  at the end to be used by the next Append routine. Last is the index of
426
   --  the string ending character. So the current string value is really
427
   --  Reference (1 .. Last).
428
 
429
   pragma Stream_Convert
430
     (Unbounded_Wide_Wide_String, To_Unbounded_Wide, To_Wide_Wide_String);
431
 
432
   pragma Finalize_Storage_Only (Unbounded_Wide_Wide_String);
433
   --  Finalization is required only for freeing storage
434
 
435
   procedure Initialize (Object : in out Unbounded_Wide_Wide_String);
436
   procedure Adjust     (Object : in out Unbounded_Wide_Wide_String);
437
   procedure Finalize   (Object : in out Unbounded_Wide_Wide_String);
438
   procedure Realloc_For_Chunk
439
     (Source     : in out Unbounded_Wide_Wide_String;
440
      Chunk_Size : Natural);
441
   --  Adjust the size allocated for the string. Add at least Chunk_Size so it
442
   --  is safe to add a string of this size at the end of the current content.
443
   --  The real size allocated for the string is Chunk_Size + x of the current
444
   --  string size. This buffered handling makes the Append unbounded string
445
   --  routines very fast.
446
 
447
   Null_Unbounded_Wide_Wide_String : constant Unbounded_Wide_Wide_String :=
448
                                       (AF.Controlled with
449
                                          Reference =>
450
                                            Null_Wide_Wide_String'Access,
451
                                          Last => 0);
452
end Ada.Strings.Wide_Wide_Unbounded;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.