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--                                 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
16package Ada.Wide_Characters.Handling is
17   pragma Pure;
18   --  This package is clearly intended to be Pure, by analogy with the
19   --  base Ada.Characters.Handling package. The version in the RM does
20   --  not yet have this pragma, but that is a clear omission. This will
21   --  be fixed in a future version of AI05-0266-1.
22
23   function Is_Control (Item : Wide_Character) return Boolean;
24   pragma Inline (Is_Control);
25   --  Returns True if the Wide_Character designated by Item is categorized as
26   --  other_control, otherwise returns false.
27
28   function Is_Letter (Item : Wide_Character) return Boolean;
29   pragma Inline (Is_Letter);
30   --  Returns True if the Wide_Character designated by Item is categorized as
31   --  letter_uppercase, letter_lowercase, letter_titlecase, letter_modifier,
32   --  letter_other, or number_letter. Otherwise returns false.
33
34   function Is_Lower (Item : Wide_Character) return Boolean;
35   pragma Inline (Is_Lower);
36   --  Returns True if the Wide_Character designated by Item is categorized as
37   --  letter_lowercase, otherwise returns false.
38
39   function Is_Upper (Item : Wide_Character) return Boolean;
40   pragma Inline (Is_Upper);
41   --  Returns True if the Wide_Character designated by Item is categorized as
42   --  letter_uppercase, otherwise returns false.
43
44   function Is_Digit (Item : Wide_Character) return Boolean;
45   pragma Inline (Is_Digit);
46   --  Returns True if the Wide_Character designated by Item is categorized as
47   --  number_decimal, otherwise returns false.
48
49   function Is_Decimal_Digit (Item : Wide_Character) return Boolean
50     renames Is_Digit;
51
52   function Is_Hexadecimal_Digit (Item : Wide_Character) return Boolean;
53   --  Returns True if the Wide_Character designated by Item is categorized as
54   --  number_decimal, or is in the range 'A' .. 'F' or 'a' .. 'f', otherwise
55   --  returns false.
56
57   function Is_Alphanumeric (Item : Wide_Character) return Boolean;
58   pragma Inline (Is_Alphanumeric);
59   --  Returns True if the Wide_Character designated by Item is categorized as
60   --  number_decimal, or is in the range 'A' .. 'F' or 'a' .. 'f', otherwise
61   --  returns false.
62
63   function Is_Special (Item : Wide_Character) return Boolean;
64   pragma Inline (Is_Special);
65   --  Returns True if the Wide_Character designated by Item is categorized
66   --  as graphic_character, but not categorized as letter_uppercase,
67   --  letter_lowercase, letter_titlecase, letter_modifier, letter_other,
68   --  number_letter, or number_decimal. Otherwise returns false.
69
70   function Is_Line_Terminator (Item : Wide_Character) return Boolean;
71   pragma Inline (Is_Line_Terminator);
72   --  Returns True if the Wide_Character designated by Item is categorized as
73   --  separator_line or separator_paragraph, or if Item is a conventional line
74   --  terminator character (CR, LF, VT, or FF). Otherwise returns false.
75
76   function Is_Mark (Item : Wide_Character) return Boolean;
77   pragma Inline (Is_Mark);
78   --  Returns True if the Wide_Character designated by Item is categorized as
79   --  mark_non_spacing or mark_spacing_combining, otherwise returns false.
80
81   function Is_Other (Item : Wide_Character) return Boolean;
82   pragma Inline (Is_Other);
83   --  Returns True if the Wide_Character designated by Item is categorized as
84   --  other_format, otherwise returns false.
85
86   function Is_Punctuation (Item : Wide_Character) return Boolean;
87   pragma Inline (Is_Punctuation);
88   --  Returns True if the Wide_Character designated by Item is categorized as
89   --  punctuation_connector, otherwise returns false.
90
91   function Is_Space (Item : Wide_Character) return Boolean;
92   pragma Inline (Is_Space);
93   --  Returns True if the Wide_Character designated by Item is categorized as
94   --  separator_space, otherwise returns false.
95
96   function Is_Graphic (Item : Wide_Character) return Boolean;
97   pragma Inline (Is_Graphic);
98   --  Returns True if the Wide_Character designated by Item is categorized as
99   --  graphic_character, otherwise returns false.
100
101   function To_Lower (Item : Wide_Character) return Wide_Character;
102   pragma Inline (To_Lower);
103   --  Returns the Simple Lowercase Mapping of the Wide_Character designated by
104   --  Item. If the Simple Lowercase Mapping does not exist for the
105   --  Wide_Character designated by Item, then the value of Item is returned.
106
107   function To_Lower (Item : Wide_String) return Wide_String;
108   --  Returns the result of applying the To_Lower Wide_Character to
109   --  Wide_Character conversion to each element of the Wide_String designated
110   --  by Item. The result is the null Wide_String if the value of the formal
111   --  parameter is the null Wide_String.
112
113   function To_Upper (Item : Wide_Character) return Wide_Character;
114   pragma Inline (To_Upper);
115   --  Returns the Simple Uppercase Mapping of the Wide_Character designated by
116   --  Item. If the Simple Uppercase Mapping does not exist for the
117   --  Wide_Character designated by Item, then the value of Item is returned.
118
119   function To_Upper (Item : Wide_String) return Wide_String;
120   --  Returns the result of applying the To_Upper Wide_Character to
121   --  Wide_Character conversion to each element of the Wide_String designated
122   --  by Item. The result is the null Wide_String if the value of the formal
123   --  parameter is the null Wide_String.
124
125end Ada.Wide_Characters.Handling;
126