1------------------------------------------------------------------------------ 2-- -- 3-- GNAT RUN-TIME COMPONENTS -- 4-- -- 5-- A D A . W I D E _ 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-2013, 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 32with Ada.Wide_Wide_Characters.Unicode; use Ada.Wide_Wide_Characters.Unicode; 33 34package body Ada.Wide_Wide_Characters.Handling is 35 36 --------------------- 37 -- Is_Alphanumeric -- 38 --------------------- 39 40 function Is_Alphanumeric (Item : Wide_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_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_Wide_Character) return Boolean 59 renames Ada.Wide_Wide_Characters.Unicode.Is_Digit; 60 61 ---------------- 62 -- Is_Graphic -- 63 ---------------- 64 65 function Is_Graphic (Item : Wide_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_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_Wide_Character) return Boolean 86 renames Ada.Wide_Wide_Characters.Unicode.Is_Letter; 87 88 ------------------------ 89 -- Is_Line_Terminator -- 90 ------------------------ 91 92 function Is_Line_Terminator (Item : Wide_Wide_Character) return Boolean 93 renames Ada.Wide_Wide_Characters.Unicode.Is_Line_Terminator; 94 95 -------------- 96 -- Is_Lower -- 97 -------------- 98 99 function Is_Lower (Item : Wide_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_Wide_Character) return Boolean 109 renames Ada.Wide_Wide_Characters.Unicode.Is_Mark; 110 111 --------------------- 112 -- Is_Other_Format -- 113 --------------------- 114 115 function Is_Other_Format (Item : Wide_Wide_Character) return Boolean 116 renames Ada.Wide_Wide_Characters.Unicode.Is_Other; 117 118 ------------------------------ 119 -- Is_Punctuation_Connector -- 120 ------------------------------ 121 122 function Is_Punctuation_Connector 123 (Item : Wide_Wide_Character) return Boolean 124 renames Ada.Wide_Wide_Characters.Unicode.Is_Punctuation; 125 126 -------------- 127 -- Is_Space -- 128 -------------- 129 130 function Is_Space (Item : Wide_Wide_Character) return Boolean 131 renames Ada.Wide_Wide_Characters.Unicode.Is_Space; 132 133 ---------------- 134 -- Is_Special -- 135 ---------------- 136 137 function Is_Special (Item : Wide_Wide_Character) return Boolean is 138 begin 139 return Is_Graphic (Item) and then not Is_Alphanumeric (Item); 140 end Is_Special; 141 142 -------------- 143 -- Is_Upper -- 144 -------------- 145 146 function Is_Upper (Item : Wide_Wide_Character) return Boolean is 147 begin 148 return Get_Category (Item) = Lu; 149 end Is_Upper; 150 151 -------------- 152 -- To_Lower -- 153 -------------- 154 155 function To_Lower (Item : Wide_Wide_Character) return Wide_Wide_Character 156 renames Ada.Wide_Wide_Characters.Unicode.To_Lower_Case; 157 158 function To_Lower (Item : Wide_Wide_String) return Wide_Wide_String is 159 Result : Wide_Wide_String (Item'Range); 160 161 begin 162 for J in Result'Range loop 163 Result (J) := To_Lower (Item (J)); 164 end loop; 165 166 return Result; 167 end To_Lower; 168 169 -------------- 170 -- To_Upper -- 171 -------------- 172 173 function To_Upper (Item : Wide_Wide_Character) return Wide_Wide_Character 174 renames Ada.Wide_Wide_Characters.Unicode.To_Upper_Case; 175 176 function To_Upper (Item : Wide_Wide_String) return Wide_Wide_String is 177 Result : Wide_Wide_String (Item'Range); 178 179 begin 180 for J in Result'Range loop 181 Result (J) := To_Upper (Item (J)); 182 end loop; 183 184 return Result; 185 end To_Upper; 186 187end Ada.Wide_Wide_Characters.Handling; 188