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
10package com.ibm.icu.lang;
11
12/**
13 * A container for the different 'enumerated types' used by UCharacter.
14 * @stable ICU 3.0
15 */
16public class UCharacterEnums {
17
18    /** This is just a namespace, it is not instantiatable. */
19    ///CLOVER:OFF
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