OSDN Git Service

Daily bump.
[pf3gnuchains/gcc-fork.git] / gcc / ada / a-wichha.adb
1 ------------------------------------------------------------------------------
2 --                                                                          --
3 --                         GNAT RUN-TIME COMPONENTS                         --
4 --                                                                          --
5 --         A D A . W I D E _ C H A R A C T E R S . H A N D L I N G          --
6 --                                                                          --
7 --                                 B o d y                                  --
8 --                                                                          --
9 --            Copyright (C) 2010, Free Software Foundation, Inc.            --
10 --                                                                          --
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.                                     --
17 --                                                                          --
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.               --
21 --                                                                          --
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/>.                                          --
26 --                                                                          --
27 -- GNAT was originally developed  by the GNAT team at  New York University. --
28 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
29 --                                                                          --
30 ------------------------------------------------------------------------------
31
32 with Ada.Wide_Characters.Unicode; use Ada.Wide_Characters.Unicode;
33
34 package body Ada.Wide_Characters.Handling is
35
36    ---------------------
37    -- Is_Alphanumeric --
38    ---------------------
39
40    function Is_Alphanumeric (Item : Wide_Character) return Boolean is
41    begin
42       return Is_Letter (Item) or else Is_Digit (Item);
43    end Is_Alphanumeric;
44
45    ----------------
46    -- Is_Control --
47    ----------------
48
49    function Is_Control (Item : Wide_Character) return Boolean is
50    begin
51       return Get_Category (Item) = Cc;
52    end Is_Control;
53
54    --------------
55    -- Is_Digit --
56    --------------
57
58    function Is_Digit (Item : Wide_Character) return Boolean
59      renames Ada.Wide_Characters.Unicode.Is_Digit;
60
61    ----------------
62    -- Is_Graphic --
63    ----------------
64
65    function Is_Graphic (Item : Wide_Character) return Boolean is
66    begin
67       return not Is_Non_Graphic (Item);
68    end Is_Graphic;
69
70    --------------------------
71    -- Is_Hexadecimal_Digit --
72    --------------------------
73
74    function Is_Hexadecimal_Digit (Item : Wide_Character) return Boolean is
75    begin
76       return Is_Digit (Item)
77         or else Item in 'A' .. 'F'
78         or else Item in 'a' .. 'f';
79    end Is_Hexadecimal_Digit;
80
81    ---------------
82    -- Is_Letter --
83    ---------------
84
85    function Is_Letter (Item : Wide_Character) return Boolean
86      renames Ada.Wide_Characters.Unicode.Is_Letter;
87
88    ------------------------
89    -- Is_Line_Terminator --
90    ------------------------
91
92    function Is_Line_Terminator (Item : Wide_Character) return Boolean
93      renames Ada.Wide_Characters.Unicode.Is_Line_Terminator;
94
95    --------------
96    -- Is_Lower --
97    --------------
98
99    function Is_Lower (Item : Wide_Character) return Boolean is
100    begin
101       return Get_Category (Item) = Ll;
102    end Is_Lower;
103
104    -------------
105    -- Is_Mark --
106    -------------
107
108    function Is_Mark (Item : Wide_Character) return Boolean
109      renames Ada.Wide_Characters.Unicode.Is_Mark;
110
111    --------------
112    -- Is_Other --
113    --------------
114
115    function Is_Other (Item : Wide_Character) return Boolean
116      renames Ada.Wide_Characters.Unicode.Is_Other;
117
118    --------------------
119    -- Is_Punctuation --
120    --------------------
121
122    function Is_Punctuation (Item : Wide_Character) return Boolean
123      renames Ada.Wide_Characters.Unicode.Is_Punctuation;
124
125    --------------
126    -- Is_Space --
127    --------------
128
129    function Is_Space (Item : Wide_Character) return Boolean
130      renames Ada.Wide_Characters.Unicode.Is_Space;
131
132    ----------------
133    -- Is_Special --
134    ----------------
135
136    function Is_Special (Item : Wide_Character) return Boolean is
137    begin
138       return Is_Graphic (Item) and then not Is_Alphanumeric (Item);
139    end Is_Special;
140
141    --------------
142    -- Is_Upper --
143    --------------
144
145    function Is_Upper (Item : Wide_Character) return Boolean is
146    begin
147       return Get_Category (Item) = Lu;
148    end Is_Upper;
149
150    --------------
151    -- To_Lower --
152    --------------
153
154    function To_Lower (Item : Wide_Character) return Wide_Character
155      renames Ada.Wide_Characters.Unicode.To_Lower_Case;
156
157    function To_Lower (Item : Wide_String) return Wide_String is
158       Result : Wide_String (Item'Range);
159
160    begin
161       for J in Result'Range loop
162          Result (J) := To_Lower (Item (J));
163       end loop;
164
165       return Result;
166    end To_Lower;
167
168    --------------
169    -- To_Upper --
170    --------------
171
172    function To_Upper (Item : Wide_Character) return Wide_Character
173      renames Ada.Wide_Characters.Unicode.To_Upper_Case;
174
175    function To_Upper (Item : Wide_String) return Wide_String is
176       Result : Wide_String (Item'Range);
177
178    begin
179       for J in Result'Range loop
180          Result (J) := To_Upper (Item (J));
181       end loop;
182
183       return Result;
184    end To_Upper;
185
186 end Ada.Wide_Characters.Handling;