1 /* 2 * Copyright (C) 2009 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 17 #ifndef _ANDROID_PHONETIC_STRING_UTILS_H 18 #define _ANDROID_PHONETIC_STRING_UTILS_H 19 20 #include <string.h> // For size_t. 21 #include <utils/String8.h> 22 23 namespace android { 24 25 // Returns codepoint which is "normalized", whose definition depends on each 26 // Locale. Note that currently this function normalizes only Japanese; the 27 // other characters are remained as is. 28 // The variable "next_is_consumed" is set to true if "next_codepoint" 29 // is "consumed" (e.g. Japanese halfwidth katakana's voiced mark is consumed 30 // when previous "codepoint" is appropriate, like half-width "ka"). 31 // 32 // In Japanese, "normalized" means that half-width and full-width katakana is 33 // appropriately converted to hiragana. 34 int GetNormalizedCodePoint(char32_t codepoint, 35 char32_t next_codepoint, 36 bool *next_is_consumed); 37 38 // Pushes Utf8 expression of "codepoint" to "dst". Returns true when successful. 39 // If input is invalid or the length of the destination is not enough, 40 // returns false. 41 bool GetUtf8FromCodePoint(int codepoint, char *dst, size_t len, size_t *index); 42 43 // Creates a "phonetically sortable" Utf8 string and push it into "dst". 44 // *dst must be freed after being used outside. 45 // If "src" is NULL or its length is 0, "dst" is set to \uFFFF. 46 // 47 // Note that currently this function considers only Japanese. 48 bool GetPhoneticallySortableString(const char *src, char **dst, size_t *len); 49 50 // Creates a "normalized" Utf8 string and push it into "dst". *dst must be 51 // freed after being used outside. 52 // If "src" is NULL or its length is 0, "dst" is set to \uFFFF. 53 // 54 // Note that currently this function considers only Japanese. 55 bool GetNormalizedString(const char *src, char **dst, size_t *len); 56 57 } // namespace android 58 59 #endif 60