1/*
2 * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package sun.text;
27
28import sun.text.normalizer.NormalizerBase;
29import sun.text.normalizer.UCharacter;
30
31/**
32 * This Normalizer is for Unicode 3.2 support for IDNA only.
33 * Developers should not use this class.
34 *
35 * @since 1.6
36 */
37public final class Normalizer {
38
39    private Normalizer() {};
40
41    /**
42     * Option to select Unicode 3.2 (without corrigendum 4 corrections) for
43     * normalization.
44     */
45    public static final int UNICODE_3_2 = NormalizerBase.UNICODE_3_2_0_ORIGINAL;
46
47    /**
48     * Normalize a sequence of char values.
49     * The sequence will be normalized according to the specified normalization
50     * from.
51     * @param src        The sequence of char values to normalize.
52     * @param form       The normalization form; one of
53     *                   {@link java.text.Normalizer.Form#NFC},
54     *                   {@link java.text.Normalizer.Form#NFD},
55     *                   {@link java.text.Normalizer.Form#NFKC},
56     *                   {@link java.text.Normalizer.Form#NFKD}
57     * @param option     The normalization option;
58     *                   {@link sun.text.Normalizer#UNICODE_3_2}
59     * @return The normalized String
60     * @throws NullPointerException If <code>src</code> or <code>form</code>
61     * is null.
62     */
63    public static String normalize(CharSequence src,
64                                   java.text.Normalizer.Form form,
65                                   int option) {
66        return NormalizerBase.normalize(src.toString(), form, option);
67    };
68
69    /**
70     * Determines if the given sequence of char values is normalized.
71     * @param src        The sequence of char values to be checked.
72     * @param form       The normalization form; one of
73     *                   {@link java.text.Normalizer.Form#NFC},
74     *                   {@link java.text.Normalizer.Form#NFD},
75     *                   {@link java.text.Normalizer.Form#NFKC},
76     *                   {@link java.text.Normalizer.Form#NFKD}
77     * @param option     The normalization option;
78     *                   {@link sun.text.Normalizer#UNICODE_3_2}
79     * @return true if the sequence of char values is normalized;
80     * false otherwise.
81     * @throws NullPointerException If <code>src</code> or <code>form</code>
82     * is null.
83     */
84    public static boolean isNormalized(CharSequence src,
85                                       java.text.Normalizer.Form form,
86                                       int option) {
87        return NormalizerBase.isNormalized(src.toString(), form, option);
88    }
89
90    /**
91     * Returns the combining class of the given character
92     * @param ch character to retrieve combining class of
93     * @return combining class of the given character
94     */
95    public static final int getCombiningClass(int ch) {
96        return UCharacter.getCombiningClass(ch);
97    }
98}
99