-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstrings_edit-utf8-categorization.ads
More file actions
135 lines (127 loc) · 5.58 KB
/
strings_edit-utf8-categorization.ads
File metadata and controls
135 lines (127 loc) · 5.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
-- --
-- package Copyright (c) Dmitry A. Kazakov --
-- Strings_Edit.UTF8.Categorization Luebeck --
-- Interface Spring, 2008 --
-- --
-- Last revision : 21:03 21 Apr 2009 --
-- --
-- This library is free software; you can redistribute it and/or --
-- modify it under the terms of the GNU General Public License as --
-- published by the Free Software Foundation; either version 2 of --
-- the License, or (at your option) any later version. This library --
-- is distributed in the hope that it will be useful, but WITHOUT --
-- ANY WARRANTY; without even the implied warranty of --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --
-- General Public License for more details. You should have --
-- received a copy of the GNU General Public License along with --
-- this library; if not, write to the Free Software Foundation, --
-- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
--____________________________________________________________________--
--
-- This package provides categorization of code points as defined by
-- UnicodeData file.
--
package Strings_Edit.UTF8.Categorization is
pragma Elaborate_Body (Strings_Edit.UTF8.Categorization);
--
-- General_Category of a code point according to the Unicode character
-- database. The names of the enumeration correspond to the names in the
-- database.
--
type General_Category is
( Lu, -- Letter, Uppercase
Ll, -- Lowercase
Lt, -- Titlecase
Lm, -- Modifier
Lo, -- Other
Mn, -- Mark, Nonspacing
Mc, -- Spacing Combining
Me, -- Enclosing
Nd, -- Number, Decimal Digit
Nl, -- Letter
No, -- Other
Pc, -- Punctuation, Connector
Pd, -- Dash
Ps, -- Open
Pe, -- Close
Pi, -- Initial quote
Pf, -- Final quote
Po, -- Other
Sm, -- Symbol, Math
Sc, -- Currency
Sk, -- Modifier
So, -- Other
Zs, -- Separator, Space
Zl, -- Line
Zp, -- Paragraph
Cc, -- Other, Control
Cf, -- Format
Cs, -- Surrogate
Co, -- Private Use
Cn -- Not Assigned
);
--
-- Classes of categories
--
subtype Letter is General_Category range Lu..Lo;
subtype Mark is General_Category range Mn..Me;
subtype Mumber is General_Category range Nd..No;
subtype Punctuation is General_Category range Pc..Po;
subtype Symbol is General_Category range Sm..So;
subtype Separator is General_Category range Zs..Zp;
subtype Other is General_Category range Cc..Cn;
--
-- Category -- Get category of a code point
--
-- Value - Code point
--
-- Returns :
--
-- The category of value
--
function Category (Value : UTF8_Code_Point) return General_Category;
--
-- Is_* -- Category tests
--
function Is_Alphanumeric (Value : in UTF8_Code_Point) return Boolean;
function Is_Digit (Value : in UTF8_Code_Point) return Boolean;
function Is_Control (Value : in UTF8_Code_Point) return Boolean;
function Is_ISO_646 (Value : in UTF8_Code_Point) return Boolean;
function Is_Letter (Value : in UTF8_Code_Point) return Boolean;
function Is_Lower (Value : in UTF8_Code_Point) return Boolean;
function Is_Other_Format (Value : in UTF8_Code_Point) return Boolean;
function Is_Space (Value : in UTF8_Code_Point) return Boolean;
function Is_Title (Value : in UTF8_Code_Point) return Boolean;
function Is_Upper (Value : in UTF8_Code_Point) return Boolean;
--
-- Special digits
--
function Is_Subscript_Digit (Value : in UTF8_Code_Point)
return Boolean;
function Is_Superscript_Digit (Value : in UTF8_Code_Point)
return Boolean;
--
-- Ada 2005 identifier sets
--
-- identifier_start, see ARM 2.3(3/2)
-- identifier_extend, see ARM 2.3(3.1/2)
--
function Is_Identifier_Start (Value : in UTF8_Code_Point)
return Boolean;
function Is_Identifier_Extend (Value : in UTF8_Code_Point)
return Boolean;
private
pragma Inline
( Is_Alphanumeric, Is_Control, Is_Digit, Is_ISO_646,
Is_Letter, Is_Lower, Is_Title, Is_Upper,
Is_Subscript_Digit, Is_Superscript_Digit,
Is_Identifier_Start, Is_Identifier_Extend
);
end Strings_Edit.UTF8.Categorization;