1 ------------------------------------------------------------------------------
3 -- GNAT RUN-TIME COMPONENTS --
5 -- S Y S T E M . B O U N D E D _ S T R I N G S --
9 -- Copyright (C) 2016, AdaCore --
11 -- GNAT is free software; you can redistribute it and/or modify it under --
12 -- terms of the GNU General Public License as published by the Free Soft- --
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE. --
18 -- As a special exception under Section 7 of GPL version 3, you are granted --
19 -- additional permissions described in the GCC Runtime Library Exception, --
20 -- version 3.1, as published by the Free Software Foundation. --
22 -- You should have received a copy of the GNU General Public License and --
23 -- a copy of the GCC Runtime Library Exception along with this program; --
24 -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
25 -- <http://www.gnu.org/licenses/>. --
27 -- GNAT was originally developed by the GNAT team at New York University. --
28 -- Extensive contributions were provided by Ada Core Technologies Inc. --
30 ------------------------------------------------------------------------------
32 with System
.Storage_Elements
;
34 package body System
.Bounded_Strings
is
40 procedure Append
(X
: in out Bounded_String
; C
: Character) is
42 -- If we have too many characters to fit, simply drop them
44 if X
.Length
< X
.Max_Length
then
45 X
.Length
:= X
.Length
+ 1;
46 X
.Chars
(X
.Length
) := C
;
50 procedure Append
(X
: in out Bounded_String
; S
: String) is
61 procedure Append_Address
(X
: in out Bounded_String
; A
: Address
)
65 use System
.Storage_Elements
;
68 H
: constant array (Integer range 0 .. 15) of Character :=
74 S
(P
) := H
(Integer (N
mod 16));
83 Append
(X
, S
(P
- 1 .. S
'Last));
90 function Is_Full
(X
: Bounded_String
) return Boolean is
92 return X
.Length
>= X
.Max_Length
;
99 function To_String
(X
: Bounded_String
) return String is
101 return X
.Chars
(1 .. X
.Length
);
104 end System
.Bounded_Strings
;