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