diff options
author | Elliott Hughes <enh@google.com> | 2010-03-01 16:28:05 -0800 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2010-03-01 16:30:39 -0800 |
commit | a656b24ce0513b5f6115c40e6bb9181c5cea93d6 (patch) | |
tree | b8a7f302a5d2fcbc633978eb360a2567c6b7d4b3 /icu/src/main/java | |
parent | 63c166c5b299f008ee39378dc008de21af70d85a (diff) | |
download | libcore-a656b24ce0513b5f6115c40e6bb9181c5cea93d6.zip libcore-a656b24ce0513b5f6115c40e6bb9181c5cea93d6.tar.gz libcore-a656b24ce0513b5f6115c40e6bb9181c5cea93d6.tar.bz2 |
Implement (but @hide) java.text.Normalizer from Java 6.
Based on https://android-git.corp.google.com/g/42516.
Includes the harmony tests from their Java 6 branch.
Bug: 719001
Diffstat (limited to 'icu/src/main/java')
-rw-r--r-- | icu/src/main/java/com/ibm/icu4jni/text/NativeNormalizer.java | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/icu/src/main/java/com/ibm/icu4jni/text/NativeNormalizer.java b/icu/src/main/java/com/ibm/icu4jni/text/NativeNormalizer.java new file mode 100644 index 0000000..f14b6c1 --- /dev/null +++ b/icu/src/main/java/com/ibm/icu4jni/text/NativeNormalizer.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.ibm.icu4jni.text; + +import java.text.Normalizer.Form; + +public final class NativeNormalizer { + public static boolean isNormalized(CharSequence src, Form form) { + return isNormalizedImpl(src.toString(), toUNormalizationMode(form)); + } + + public static String normalize(CharSequence src, Form form) { + return normalizeImpl(src.toString(), toUNormalizationMode(form)); + } + + private static int toUNormalizationMode(Form form) { + // Translates Java enum constants to ICU int constants. + // See UNormalizationMode in "unicode/unorm.h". Stable API since ICU 2.0. + switch (form) { + case NFC: return 4; + case NFD: return 2; + case NFKC: return 5; + case NFKD: return 3; + } + throw new AssertionError("unknown Normalizer.Form " + form); + } + + private static native String normalizeImpl(String src, int form); + + private static native boolean isNormalizedImpl(String src, int form); + + private NativeNormalizer() {} +} |