1/*
2 * Copyright (C) 2008 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.ibm.icu4jni.lang;
18
19import java.lang.Character.UnicodeBlock;
20
21public class UCharacter {
22
23    public static native boolean isDefined(int codePoint);
24    public static native boolean isDigit(int codePoint);
25    public static native boolean isIdentifierIgnorable(int codePoint);
26    public static native boolean isLetter(int codePoint);
27    public static native boolean isLetterOrDigit(int codePoint);
28    public static native boolean isLowerCase(int codePoint);
29    public static native boolean isMirrored(int codePoint);
30    public static native boolean isSpaceChar(int codePoint);
31    public static native boolean isTitleCase(int codePoint);
32    public static native boolean isUnicodeIdentifierPart(int codePoint);
33    public static native boolean isUnicodeIdentifierStart(int codePoint);
34    public static native boolean isUpperCase(int codePoint);
35    public static native boolean isWhitespace(int codePoint);
36    public static native byte getDirectionality(int codePoint);
37    public static native int digit(int codePoint, int radix);
38    public static native int forName(String blockName);
39    public static native int getNumericValue(int codePoint);
40    public static native int getType(int codePoint);
41    public static native int of(int codePoint);
42    public static native int toLowerCase(int codePoint);
43    public static native int toTitleCase(int codePoint);
44    public static native int toUpperCase(int codePoint);
45
46    public static UnicodeBlock[] getBlockTable() {
47        /**
48         * The indices of the entries of this table correspond with the value
49         * of the ICU enum UBlockCode. When updating ICU it's necessary
50         * to check if there where any changes for the properties
51         * used by java.lang.Character.
52         * The enum is defined in common/unicode/uchar.h
53         */
54        UnicodeBlock[] result = new UnicodeBlock[] { null,
55                UnicodeBlock.BASIC_LATIN,
56                UnicodeBlock.LATIN_1_SUPPLEMENT,
57                UnicodeBlock.LATIN_EXTENDED_A,
58                UnicodeBlock.LATIN_EXTENDED_B,
59                UnicodeBlock.IPA_EXTENSIONS,
60                UnicodeBlock.SPACING_MODIFIER_LETTERS,
61                UnicodeBlock.COMBINING_DIACRITICAL_MARKS,
62                UnicodeBlock.GREEK,
63                UnicodeBlock.CYRILLIC,
64                UnicodeBlock.ARMENIAN,
65                UnicodeBlock.HEBREW,
66                UnicodeBlock.ARABIC,
67                UnicodeBlock.SYRIAC,
68                UnicodeBlock.THAANA,
69                UnicodeBlock.DEVANAGARI,
70                UnicodeBlock.BENGALI,
71                UnicodeBlock.GURMUKHI,
72                UnicodeBlock.GUJARATI,
73                UnicodeBlock.ORIYA,
74                UnicodeBlock.TAMIL,
75                UnicodeBlock.TELUGU,
76                UnicodeBlock.KANNADA,
77                UnicodeBlock.MALAYALAM,
78                UnicodeBlock.SINHALA,
79                UnicodeBlock.THAI,
80                UnicodeBlock.LAO,
81                UnicodeBlock.TIBETAN,
82                UnicodeBlock.MYANMAR,
83                UnicodeBlock.GEORGIAN,
84                UnicodeBlock.HANGUL_JAMO,
85                UnicodeBlock.ETHIOPIC,
86                UnicodeBlock.CHEROKEE,
87                UnicodeBlock.UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS,
88                UnicodeBlock.OGHAM,
89                UnicodeBlock.RUNIC,
90                UnicodeBlock.KHMER,
91                UnicodeBlock.MONGOLIAN,
92                UnicodeBlock.LATIN_EXTENDED_ADDITIONAL,
93                UnicodeBlock.GREEK_EXTENDED,
94                UnicodeBlock.GENERAL_PUNCTUATION,
95                UnicodeBlock.SUPERSCRIPTS_AND_SUBSCRIPTS,
96                UnicodeBlock.CURRENCY_SYMBOLS,
97                UnicodeBlock.COMBINING_MARKS_FOR_SYMBOLS,
98                UnicodeBlock.LETTERLIKE_SYMBOLS,
99                UnicodeBlock.NUMBER_FORMS,
100                UnicodeBlock.ARROWS,
101                UnicodeBlock.MATHEMATICAL_OPERATORS,
102                UnicodeBlock.MISCELLANEOUS_TECHNICAL,
103                UnicodeBlock.CONTROL_PICTURES,
104                UnicodeBlock.OPTICAL_CHARACTER_RECOGNITION,
105                UnicodeBlock.ENCLOSED_ALPHANUMERICS,
106                UnicodeBlock.BOX_DRAWING,
107                UnicodeBlock.BLOCK_ELEMENTS,
108                UnicodeBlock.GEOMETRIC_SHAPES,
109                UnicodeBlock.MISCELLANEOUS_SYMBOLS,
110                UnicodeBlock.DINGBATS,
111                UnicodeBlock.BRAILLE_PATTERNS,
112                UnicodeBlock.CJK_RADICALS_SUPPLEMENT,
113                UnicodeBlock.KANGXI_RADICALS,
114                UnicodeBlock.IDEOGRAPHIC_DESCRIPTION_CHARACTERS,
115                UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION,
116                UnicodeBlock.HIRAGANA,
117                UnicodeBlock.KATAKANA,
118                UnicodeBlock.BOPOMOFO,
119                UnicodeBlock.HANGUL_COMPATIBILITY_JAMO,
120                UnicodeBlock.KANBUN,
121                UnicodeBlock.BOPOMOFO_EXTENDED,
122                UnicodeBlock.ENCLOSED_CJK_LETTERS_AND_MONTHS,
123                UnicodeBlock.CJK_COMPATIBILITY,
124                UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A,
125                UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS,
126                UnicodeBlock.YI_SYLLABLES,
127                UnicodeBlock.YI_RADICALS,
128                UnicodeBlock.HANGUL_SYLLABLES,
129                UnicodeBlock.HIGH_SURROGATES,
130                UnicodeBlock.HIGH_PRIVATE_USE_SURROGATES,
131                UnicodeBlock.LOW_SURROGATES,
132                UnicodeBlock.PRIVATE_USE_AREA,
133                UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS,
134                UnicodeBlock.ALPHABETIC_PRESENTATION_FORMS,
135                UnicodeBlock.ARABIC_PRESENTATION_FORMS_A,
136                UnicodeBlock.COMBINING_HALF_MARKS,
137                UnicodeBlock.CJK_COMPATIBILITY_FORMS,
138                UnicodeBlock.SMALL_FORM_VARIANTS,
139                UnicodeBlock.ARABIC_PRESENTATION_FORMS_B,
140                UnicodeBlock.SPECIALS,
141                UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS,
142                UnicodeBlock.OLD_ITALIC,
143                UnicodeBlock.GOTHIC,
144                UnicodeBlock.DESERET,
145                UnicodeBlock.BYZANTINE_MUSICAL_SYMBOLS,
146                UnicodeBlock.MUSICAL_SYMBOLS,
147                UnicodeBlock.MATHEMATICAL_ALPHANUMERIC_SYMBOLS,
148                UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B,
149                UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT,
150                UnicodeBlock.TAGS,
151                UnicodeBlock.CYRILLIC_SUPPLEMENTARY,
152                UnicodeBlock.TAGALOG,
153                UnicodeBlock.HANUNOO,
154                UnicodeBlock.BUHID,
155                UnicodeBlock.TAGBANWA,
156                UnicodeBlock.MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A,
157                UnicodeBlock.SUPPLEMENTAL_ARROWS_A,
158                UnicodeBlock.SUPPLEMENTAL_ARROWS_B,
159                UnicodeBlock.MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B,
160                UnicodeBlock.SUPPLEMENTAL_MATHEMATICAL_OPERATORS,
161                UnicodeBlock.KATAKANA_PHONETIC_EXTENSIONS,
162                UnicodeBlock.VARIATION_SELECTORS,
163                UnicodeBlock.SUPPLEMENTARY_PRIVATE_USE_AREA_A,
164                UnicodeBlock.SUPPLEMENTARY_PRIVATE_USE_AREA_B,
165                UnicodeBlock.LIMBU,
166                UnicodeBlock.TAI_LE,
167                UnicodeBlock.KHMER_SYMBOLS,
168                UnicodeBlock.PHONETIC_EXTENSIONS,
169                UnicodeBlock.MISCELLANEOUS_SYMBOLS_AND_ARROWS,
170                UnicodeBlock.YIJING_HEXAGRAM_SYMBOLS,
171                UnicodeBlock.LINEAR_B_SYLLABARY,
172                UnicodeBlock.LINEAR_B_IDEOGRAMS,
173                UnicodeBlock.AEGEAN_NUMBERS,
174                UnicodeBlock.UGARITIC,
175                UnicodeBlock.SHAVIAN,
176                UnicodeBlock.OSMANYA,
177                UnicodeBlock.CYPRIOT_SYLLABARY,
178                UnicodeBlock.TAI_XUAN_JING_SYMBOLS,
179                UnicodeBlock.VARIATION_SELECTORS_SUPPLEMENT
180        };
181        return result;
182    }
183}
184