1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html#License
3 /**
4  *******************************************************************************
5  * Copyright (C) 2004-2016, International Business Machines Corporation and
6  * others. All Rights Reserved.
7  *******************************************************************************
8  */
9 
10 package com.ibm.icu.lang;
11 
12 /**
13  * A container for the different 'enumerated types' used by UCharacter.
14  * @stable ICU 3.0
15  */
16 public class UCharacterEnums {
17 
18     /** This is just a namespace, it is not instantiatable. */
19     ///CLOVER:OFF
UCharacterEnums()20     private UCharacterEnums() {}
21 
22     /**
23      * 'Enum' for the CharacterCategory constants.  These constants are
24      * compatible in name <b>but not in value</b> with those defined in
25      * {@link java.lang.Character}.
26      * @see UCharacterCategory
27      * @stable ICU 3.0
28      */
29     public static interface ECharacterCategory {
30         /**
31          * Unassigned character type
32          * @stable ICU 2.1
33          */
34         public static final byte UNASSIGNED              = 0;
35 
36         /**
37          * Character type Cn
38          * Not Assigned (no characters in [UnicodeData.txt] have this property)
39          * @stable ICU 2.6
40          */
41         public static final byte GENERAL_OTHER_TYPES     = 0;
42 
43         /**
44          * Character type Lu
45          * @stable ICU 2.1
46          */
47         public static final byte UPPERCASE_LETTER        = 1;
48 
49         /**
50          * Character type Ll
51          * @stable ICU 2.1
52          */
53         public static final byte LOWERCASE_LETTER        = 2;
54 
55         /**
56          * Character type Lt
57          * @stable ICU 2.1
58          */
59 
60         public static final byte TITLECASE_LETTER        = 3;
61 
62         /**
63          * Character type Lm
64          * @stable ICU 2.1
65          */
66         public static final byte MODIFIER_LETTER         = 4;
67 
68         /**
69          * Character type Lo
70          * @stable ICU 2.1
71          */
72         public static final byte OTHER_LETTER            = 5;
73 
74         /**
75          * Character type Mn
76          * @stable ICU 2.1
77          */
78         public static final byte NON_SPACING_MARK        = 6;
79 
80         /**
81          * Character type Me
82          * @stable ICU 2.1
83          */
84         public static final byte ENCLOSING_MARK          = 7;
85 
86         /**
87          * Character type Mc
88          * @stable ICU 2.1
89          */
90         public static final byte COMBINING_SPACING_MARK  = 8;
91 
92         /**
93          * Character type Nd
94          * @stable ICU 2.1
95          */
96         public static final byte DECIMAL_DIGIT_NUMBER    = 9;
97 
98         /**
99          * Character type Nl
100          * @stable ICU 2.1
101          */
102         public static final byte LETTER_NUMBER           = 10;
103 
104         /**
105          * Character type No
106          * @stable ICU 2.1
107          */
108         public static final byte OTHER_NUMBER            = 11;
109 
110         /**
111          * Character type Zs
112          * @stable ICU 2.1
113          */
114         public static final byte SPACE_SEPARATOR         = 12;
115 
116         /**
117          * Character type Zl
118          * @stable ICU 2.1
119          */
120         public static final byte LINE_SEPARATOR          = 13;
121 
122         /**
123          * Character type Zp
124          * @stable ICU 2.1
125          */
126         public static final byte PARAGRAPH_SEPARATOR     = 14;
127 
128         /**
129          * Character type Cc
130          * @stable ICU 2.1
131          */
132         public static final byte CONTROL                 = 15;
133 
134         /**
135          * Character type Cf
136          * @stable ICU 2.1
137          */
138         public static final byte FORMAT                  = 16;
139 
140         /**
141          * Character type Co
142          * @stable ICU 2.1
143          */
144         public static final byte PRIVATE_USE             = 17;
145 
146         /**
147          * Character type Cs
148          * @stable ICU 2.1
149          */
150         public static final byte SURROGATE               = 18;
151 
152         /**
153          * Character type Pd
154          * @stable ICU 2.1
155          */
156         public static final byte DASH_PUNCTUATION        = 19;
157 
158         /**
159          * Character type Ps
160          * @stable ICU 2.1
161          */
162         public static final byte START_PUNCTUATION       = 20;
163 
164         /**
165          * Character type Pe
166          * @stable ICU 2.1
167          */
168         public static final byte END_PUNCTUATION         = 21;
169 
170         /**
171          * Character type Pc
172          * @stable ICU 2.1
173          */
174         public static final byte CONNECTOR_PUNCTUATION   = 22;
175 
176         /**
177          * Character type Po
178          * @stable ICU 2.1
179          */
180         public static final byte OTHER_PUNCTUATION       = 23;
181 
182         /**
183          * Character type Sm
184          * @stable ICU 2.1
185          */
186         public static final byte MATH_SYMBOL             = 24;
187 
188         /**
189          * Character type Sc
190          * @stable ICU 2.1
191          */
192         public static final byte CURRENCY_SYMBOL         = 25;
193 
194         /**
195          * Character type Sk
196          * @stable ICU 2.1
197          */
198         public static final byte MODIFIER_SYMBOL         = 26;
199 
200         /**
201          * Character type So
202          * @stable ICU 2.1
203          */
204         public static final byte OTHER_SYMBOL            = 27;
205 
206         /**
207          * Character type Pi
208          * @see #INITIAL_QUOTE_PUNCTUATION
209          * @stable ICU 2.1
210          */
211         public static final byte INITIAL_PUNCTUATION     = 28;
212 
213         /**
214          * Character type Pi
215          * This name is compatible with java.lang.Character's name for this type.
216          * @see #INITIAL_PUNCTUATION
217          * @stable ICU 2.8
218          */
219         public static final byte INITIAL_QUOTE_PUNCTUATION = 28;
220 
221         /**
222          * Character type Pf
223          * @see #FINAL_QUOTE_PUNCTUATION
224          * @stable ICU 2.1
225          */
226         public static final byte FINAL_PUNCTUATION       = 29;
227 
228         /**
229          * Character type Pf
230          * This name is compatible with java.lang.Character's name for this type.
231          * @see #FINAL_PUNCTUATION
232          * @stable ICU 2.8
233          */
234         public static final byte FINAL_QUOTE_PUNCTUATION   = 29;
235 
236         /**
237          * One more than the highest normal ECharacterCategory value.
238          * This numeric value is stable (will not change), see
239          * http://www.unicode.org/policies/stability_policy.html#Property_Value
240          * @stable ICU 2.1
241          */
242         public static final byte CHAR_CATEGORY_COUNT     = 30;
243     }
244 
245     /**
246      * 'Enum' for the CharacterDirection constants. Some constants are
247      * compatible in name <b>but not in value</b> with those defined in
248      * {@link java.lang.Character}.
249      * @see UCharacterDirection
250      * @stable ICU 3.0
251      */
252     public static interface ECharacterDirection {
253         /**
254          * Directional type L
255          * @stable ICU 2.1
256          */
257         public static final int LEFT_TO_RIGHT              = 0;
258 
259         /**
260          * Equivalent to {@link
261          * java.lang.Character#DIRECTIONALITY_LEFT_TO_RIGHT}.
262          * Synonym of {@link #LEFT_TO_RIGHT}.
263          * @stable ICU 3.0
264          */
265         public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = (byte)LEFT_TO_RIGHT;
266 
267         /**
268          * Directional type R
269          * @stable ICU 2.1
270          */
271         public static final int RIGHT_TO_LEFT              = 1;
272 
273         /**
274          * Equivalent to {@link
275          * java.lang.Character#DIRECTIONALITY_RIGHT_TO_LEFT}.
276          * Synonym of {@link #RIGHT_TO_LEFT}.
277          * @stable ICU 3.0
278          */
279         public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = (byte)RIGHT_TO_LEFT;
280 
281         /**
282          * Directional type EN
283          * @stable ICU 2.1
284          */
285         public static final int EUROPEAN_NUMBER            = 2;
286 
287         /**
288          * Equivalent to {@link
289          * java.lang.Character#DIRECTIONALITY_EUROPEAN_NUMBER}.
290          * Synonym of {@link #EUROPEAN_NUMBER}.
291          * @stable ICU 3.0
292          */
293         public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = (byte)EUROPEAN_NUMBER;
294 
295         /**
296          * Directional type ES
297          * @stable ICU 2.1
298          */
299         public static final int EUROPEAN_NUMBER_SEPARATOR  = 3;
300 
301         /**
302          * Equivalent to {@link
303          * java.lang.Character#DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR}.
304          * Synonym of {@link #EUROPEAN_NUMBER_SEPARATOR}.
305          * @stable ICU 3.0
306          */
307         public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = (byte)EUROPEAN_NUMBER_SEPARATOR;
308 
309         /**
310          * Directional type ET
311          * @stable ICU 2.1
312          */
313         public static final int EUROPEAN_NUMBER_TERMINATOR = 4;
314 
315         /**
316          * Equivalent to {@link
317          * java.lang.Character#DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR}.
318          * Synonym of {@link #EUROPEAN_NUMBER_TERMINATOR}.
319          * @stable ICU 3.0
320          */
321         public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = (byte)EUROPEAN_NUMBER_TERMINATOR;
322 
323         /**
324          * Directional type AN
325          * @stable ICU 2.1
326          */
327         public static final int ARABIC_NUMBER              = 5;
328 
329         /**
330          * Equivalent to {@link
331          * java.lang.Character#DIRECTIONALITY_ARABIC_NUMBER}.
332          * Synonym of {@link #ARABIC_NUMBER}.
333          * @stable ICU 3.0
334          */
335         public static final byte DIRECTIONALITY_ARABIC_NUMBER = (byte)ARABIC_NUMBER;
336 
337         /**
338          * Directional type CS
339          * @stable ICU 2.1
340          */
341         public static final int COMMON_NUMBER_SEPARATOR    = 6;
342 
343         /**
344          * Equivalent to {@link
345          * java.lang.Character#DIRECTIONALITY_COMMON_NUMBER_SEPARATOR}.
346          * Synonym of {@link #COMMON_NUMBER_SEPARATOR}.
347          * @stable ICU 3.0
348          */
349         public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = (byte)COMMON_NUMBER_SEPARATOR;
350 
351         /**
352          * Directional type B
353          * @stable ICU 2.1
354          */
355         public static final int BLOCK_SEPARATOR            = 7;
356 
357         /**
358          * Equivalent to {@link
359          * java.lang.Character#DIRECTIONALITY_PARAGRAPH_SEPARATOR}.
360          * Synonym of {@link #BLOCK_SEPARATOR}.
361          * @stable ICU 3.0
362          */
363         public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = (byte)BLOCK_SEPARATOR;
364 
365         /**
366          * Directional type S
367          * @stable ICU 2.1
368          */
369         public static final int SEGMENT_SEPARATOR          = 8;
370 
371         /**
372          * Equivalent to {@link
373          * java.lang.Character#DIRECTIONALITY_SEGMENT_SEPARATOR}.
374          * Synonym of {@link #SEGMENT_SEPARATOR}.
375          * @stable ICU 3.0
376          */
377         public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = (byte)SEGMENT_SEPARATOR;
378 
379         /**
380          * Directional type WS
381          * @stable ICU 2.1
382          */
383         public static final int WHITE_SPACE_NEUTRAL        = 9;
384 
385         /**
386          * Equivalent to {@link java.lang.Character#DIRECTIONALITY_WHITESPACE}.
387          * Synonym of {@link #WHITE_SPACE_NEUTRAL}.
388          * @stable ICU 3.0
389          */
390         public static final byte DIRECTIONALITY_WHITESPACE = (byte)WHITE_SPACE_NEUTRAL;
391 
392         /**
393          * Directional type ON
394          * @stable ICU 2.1
395          */
396         public static final int OTHER_NEUTRAL              = 10;
397 
398         /**
399          * Equivalent to {@link java.lang.Character#DIRECTIONALITY_OTHER_NEUTRALS}.
400          * Synonym of {@link #OTHER_NEUTRAL}.
401          * @stable ICU 3.0
402          */
403         public static final byte DIRECTIONALITY_OTHER_NEUTRALS = (byte)OTHER_NEUTRAL;
404 
405         /**
406          * Directional type LRE
407          * @stable ICU 2.1
408          */
409         public static final int LEFT_TO_RIGHT_EMBEDDING    = 11;
410 
411         /**
412          * Equivalent to {@link
413          * java.lang.Character#DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING}.
414          * Synonym of {@link #LEFT_TO_RIGHT_EMBEDDING}.
415          * @stable ICU 3.0
416          */
417         public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = (byte)LEFT_TO_RIGHT_EMBEDDING;
418 
419         /**
420          * Directional type LRO
421          * @stable ICU 2.1
422          */
423         public static final int LEFT_TO_RIGHT_OVERRIDE     = 12;
424 
425         /**
426          * Equivalent to {@link
427          * java.lang.Character#DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE}.
428          * Synonym of {@link #LEFT_TO_RIGHT_OVERRIDE}.
429          * @stable ICU 3.0
430          */
431         public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = (byte)LEFT_TO_RIGHT_OVERRIDE;
432 
433         /**
434          * Directional type AL
435          * @stable ICU 2.1
436          */
437         public static final int RIGHT_TO_LEFT_ARABIC       = 13;
438 
439         /**
440          * Equivalent to {@link
441          * java.lang.Character#DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC}.
442          * Synonym of {@link #RIGHT_TO_LEFT_ARABIC}.
443          * @stable ICU 3.0
444          */
445         public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = (byte)RIGHT_TO_LEFT_ARABIC;
446 
447         /**
448          * Directional type RLE
449          * @stable ICU 2.1
450          */
451         public static final int RIGHT_TO_LEFT_EMBEDDING    = 14;
452 
453         /**
454          * Equivalent to {@link
455          * java.lang.Character#DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING}.
456          * Synonym of {@link #RIGHT_TO_LEFT_EMBEDDING}.
457          * @stable ICU 3.0
458          */
459         public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = (byte)RIGHT_TO_LEFT_EMBEDDING;
460 
461         /**
462          * Directional type RLO
463          * @stable ICU 2.1
464          */
465         public static final int RIGHT_TO_LEFT_OVERRIDE     = 15;
466 
467         /**
468          * Equivalent to {@link
469          * java.lang.Character#DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE}.
470          * Synonym of {@link #RIGHT_TO_LEFT_OVERRIDE}.
471          * @stable ICU 3.0
472          */
473         public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = (byte)RIGHT_TO_LEFT_OVERRIDE;
474 
475         /**
476          * Directional type PDF
477          * @stable ICU 2.1
478          */
479         public static final int POP_DIRECTIONAL_FORMAT     = 16;
480 
481         /**
482          * Equivalent to {@link
483          * java.lang.Character#DIRECTIONALITY_POP_DIRECTIONAL_FORMAT}.
484          * Synonym of {@link #POP_DIRECTIONAL_FORMAT}.
485          * @stable ICU 3.0
486          */
487         public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = (byte)POP_DIRECTIONAL_FORMAT;
488 
489         /**
490          * Directional type NSM
491          * @stable ICU 2.1
492          */
493         public static final int DIR_NON_SPACING_MARK       = 17;
494 
495         /**
496          * Equivalent to {@link
497          * java.lang.Character#DIRECTIONALITY_NONSPACING_MARK}.
498          * Synonym of {@link #DIR_NON_SPACING_MARK}.
499          * @stable ICU 3.0
500          */
501         public static final byte DIRECTIONALITY_NONSPACING_MARK = (byte)DIR_NON_SPACING_MARK;
502 
503         /**
504          * Directional type BN
505          * @stable ICU 2.1
506          */
507         public static final int BOUNDARY_NEUTRAL           = 18;
508 
509         /**
510          * Equivalent to {@link
511          * java.lang.Character#DIRECTIONALITY_BOUNDARY_NEUTRAL}.
512          * Synonym of {@link #BOUNDARY_NEUTRAL}.
513          * @stable ICU 3.0
514          */
515         public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = (byte)BOUNDARY_NEUTRAL;
516 
517         /**
518          * Directional type FSI
519          * @stable ICU 52
520          */
521         public static final byte FIRST_STRONG_ISOLATE        = 19;
522 
523         /**
524          * Directional type LRI
525          * @stable ICU 52
526          */
527         public static final byte LEFT_TO_RIGHT_ISOLATE       = 20;
528 
529         /**
530          * Directional type RLI
531          * @stable ICU 52
532          */
533         public static final byte RIGHT_TO_LEFT_ISOLATE       = 21;
534 
535         /**
536          * Directional type PDI
537          * @stable ICU 52
538          */
539         public static final byte POP_DIRECTIONAL_ISOLATE     = 22;
540 
541         /**
542          * One more than the highest normal ECharacterDirection value.
543          * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.BIDI_CLASS).
544          *
545          * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
546          */
547         @Deprecated
548         public static final int CHAR_DIRECTION_COUNT       = 23;
549 
550         /**
551          * Undefined bidirectional character type. Undefined <code>char</code>
552          * values have undefined directionality in the Unicode specification.
553          * @stable ICU 3.0
554          */
555         public static final byte DIRECTIONALITY_UNDEFINED = -1;
556     }
557 }
558