1053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project/* 259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. 3053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 4053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * you may not use this file except in compliance with the License. 6053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * You may obtain a copy of the License at 7053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 8053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 10053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * See the License for the specific language governing permissions and 14053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * limitations under the License. 15053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 16053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 17053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef _NJ_EXTERN_H_ 18053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define _NJ_EXTERN_H_ 19053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 20053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 21053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_MAX_CHAR_LEN 2 22053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 23053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CHAR_IS_EQUAL(a, b) \ 24053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ( (((NJ_UINT8*)(a))[0] == ((NJ_UINT8*)(b))[0]) && (((NJ_UINT8*)(a))[1] == ((NJ_UINT8*)(b))[1]) ) 25053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 26053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CHAR_IS_LESSEQ(a, b) \ 27053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ( (((NJ_UINT8*)(a))[0] < ((NJ_UINT8*)(b))[0]) || \ 28053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((((NJ_UINT8*)(a))[0] == ((NJ_UINT8*)(b))[0]) && (((NJ_UINT8*)(a))[1] <= ((NJ_UINT8*)(b))[1])) ) 29053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 30053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CHAR_IS_MOREEQ(a, b) \ 31053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ( (((NJ_UINT8*)(a))[0] > ((NJ_UINT8*)(b))[0]) || \ 32053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((((NJ_UINT8*)(a))[0] == ((NJ_UINT8*)(b))[0]) && (((NJ_UINT8*)(a))[1] >= ((NJ_UINT8*)(b))[1])) ) 33053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 34053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CHAR_DIFF(a, b) \ 35053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((NJ_INT16) \ 36053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ( (((NJ_UINT8*)(a))[0] == ((NJ_UINT8*)(b))[0]) \ 37053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ? (((NJ_UINT8*)(a))[1] - ((NJ_UINT8*)(b))[1]) \ 38053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project : (((NJ_UINT8*)(a))[0] - ((NJ_UINT8*)(b))[0]) ) \ 39053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ) 40053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 41053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CHAR_COPY(dst, src) \ 42053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project { \ 43053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((NJ_UINT8*)(dst))[0] = ((NJ_UINT8*)(src))[0]; \ 44053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((NJ_UINT8*)(dst))[1] = ((NJ_UINT8*)(src))[1]; \ 45053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 46053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 47053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CHAR_STRLEN_IS_0(c) (*(c) == NJ_CHAR_NUL) 48053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 49053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CHAR_ILLEGAL_DIC_YINDEX(size) ((size) != 2) 50053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 51053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 52053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CHAR_LEN(s) \ 53053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ( (NJ_CHAR_IS_MOREEQ((s), "\xD8\x00") && NJ_CHAR_IS_LESSEQ((s), "\xDB\xFF")) \ 54053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ? ( (*((s)+1) == NJ_CHAR_NUL) ? 1 : 2) \ 55053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project : 1) 56053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 57053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define UTL_CHAR(s) 1 58053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 59053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 60053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_GET_DIC_INFO(dicinfo) ((NJ_UINT8)((dicinfo)->type)) 61053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 62053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_GET_DIC_TYPE_EX(type, handle) \ 63053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_GET_DIC_TYPE((handle)) 64053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 65053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 66053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define GET_BITFIELD_16(data, pos, width) \ 67053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((NJ_UINT16)(((NJ_UINT16)(data) >> (16 - (pos) - (width))) & \ 68053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((NJ_UINT16)0xffff >> (16 - (width) )))) 69053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 70053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define GET_BITFIELD_32(data, pos, width) \ 71053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((NJ_UINT32)(((NJ_UINT32)(data) >> (32 - (pos) - (width))) & ((NJ_UINT32)0xffffffff >> (32 - (width))))) 72053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 73053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define GET_BIT_TO_BYTE(bit) ((NJ_UINT8)(((bit) + 7) >> 3)) 74053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 75053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 76053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define INIT_KEYWORD_IN_NJ_DIC_SET(x) \ 77053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project { (x)->keyword[0] = NJ_CHAR_NUL; (x)->keyword[1] = NJ_CHAR_NUL; } 78053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 79053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define GET_ERR_FUNCVAL(errval) \ 80053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((NJ_UINT16)(((NJ_UINT16)(errval) & 0x007F) << 8)) 81053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 82053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 83053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_get_word_data(NJ_CLASS *iwnn, NJ_DIC_SET *dicset, NJ_SEARCH_LOCATION_SET *loctset, NJ_UINT16 dic_idx, NJ_WORD *word); 84053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_get_stroke(NJ_CLASS *iwnn, NJ_RESULT *result, 85053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR *stroke, NJ_UINT16 size); 86053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_get_candidate(NJ_CLASS *iwnn, NJ_RESULT *result, 87053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR *candidate, NJ_UINT16 size); 88053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_init_search_location_set(NJ_SEARCH_LOCATION_SET* loctset); 89053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_init_word(NJ_WORD* word); 90053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 91053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_b_search_word(NJ_SEARCH_CONDITION *con, 92053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_SEARCH_LOCATION_SET *loctset); 93053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_b_get_word(NJ_SEARCH_LOCATION_SET *loctset, NJ_WORD *word); 94053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_b_get_candidate(NJ_WORD *word, NJ_CHAR *candidate, 95053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 size); 96053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_b_get_stroke(NJ_WORD *word, NJ_CHAR *stroke, NJ_UINT16 size); 97053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 98053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_f_search_word(NJ_SEARCH_CONDITION *con, 99053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_SEARCH_LOCATION_SET *loctset); 100053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_f_get_word(NJ_SEARCH_LOCATION_SET *loctset, NJ_WORD *word); 101053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_f_get_stroke(NJ_WORD *word, NJ_CHAR *stroke, 102053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 size); 103053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_f_get_candidate(NJ_WORD *word, NJ_CHAR *candidate, 104053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 size); 105053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 106053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_search_word(NJ_CLASS *iwnn, NJ_SEARCH_CONDITION *con, 107053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_SEARCH_LOCATION_SET *loctset, NJ_UINT8 comp_flg); 108053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_add_word(NJ_CLASS *iwnn, NJ_LEARN_WORD_INFO *word, 109053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 connect, NJ_UINT8 type, 110053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 undo, NJ_UINT8 dictype); 111053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 112053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_delete_word(NJ_CLASS *iwnn, NJ_SEARCH_LOCATION *loc); 113053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_get_word(NJ_CLASS *iwnn, NJ_SEARCH_LOCATION_SET *loctset, NJ_WORD *word); 114053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_get_stroke(NJ_CLASS *iwnn, NJ_WORD *word, 115053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR *stroke, NJ_UINT16 size); 116053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_get_candidate(NJ_CLASS *iwnn, NJ_WORD *word, 117053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR *candidate, NJ_UINT16 size); 118053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_undo_learn(NJ_CLASS *iwnn, NJ_UINT16 undo_count); 119053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_check_dic(NJ_CLASS *iwnn, NJ_DIC_HANDLE handle); 120053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_init_area(NJ_DIC_HANDLE handle); 121053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_make_space(NJ_CLASS *iwnn, NJ_UINT16 count, NJ_UINT8 mode); 122053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_get_relational_word(NJ_CLASS *iwnn, NJ_SEARCH_LOCATION *loc, 123053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_WORD *word, NJ_DIC_FREQ *mdic_freq); 124053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_check_word_connect(NJ_CLASS *iwnn, NJ_WORD *word); 125053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_get_ext_word_data(NJ_CLASS *iwnn, NJ_WORD *word, NJ_UINT16 *hinsi, NJ_UINT8 *len); 126053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_mld_op_commit(NJ_CLASS *iwnn, NJ_DIC_HANDLE handle); 127053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_mld_op_commit_to_top(NJ_CLASS *iwnn, NJ_DIC_HANDLE handle); 128053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_mld_op_commit_cancel(NJ_CLASS *iwnn, NJ_DIC_HANDLE handle); 129053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_l_mld_op_get_space(NJ_CLASS *iwnn, NJ_DIC_HANDLE handle); 130053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 131053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_r_get_hinsi(NJ_DIC_HANDLE rule, NJ_UINT8 type); 132053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_r_get_connect(NJ_DIC_HANDLE rule, 133053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 hinsi, NJ_UINT8 type, 134053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 **connect); 135053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_r_get_count(NJ_DIC_HANDLE rule, 136053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 *fcount, NJ_UINT16 *rcount); 137053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 138053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_UINT16 nje_check_string(NJ_CHAR *s, NJ_UINT16 max_len); 139053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_UINT8 nje_get_top_char_type(NJ_CHAR *s); 140053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 nje_convert_kata_to_hira(NJ_CHAR *kata, NJ_CHAR *hira, NJ_UINT16 len, NJ_UINT16 max_len, NJ_UINT8 type); 141053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 nje_convert_hira_to_kata(NJ_CHAR *hira, NJ_CHAR *kata, NJ_UINT16 len); 142053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 143053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 njd_connect_test(NJ_SEARCH_CONDITION *con, NJ_UINT16 hinsiF, NJ_UINT16 hinsiR); 144053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 145053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_CHAR *nj_strcpy(NJ_CHAR *dst, NJ_CHAR *src); 146053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_CHAR *nj_strncpy(NJ_CHAR *dst, NJ_CHAR *src, NJ_UINT16 n); 147053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_UINT16 nj_strlen(NJ_CHAR *c); 148053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 nj_strcmp(NJ_CHAR *s1, NJ_CHAR *s2); 149053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 nj_strncmp(NJ_CHAR *s1, NJ_CHAR *s2, NJ_UINT16 n); 150053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_UINT16 nj_charlen(NJ_CHAR *c); 151053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_INT16 nj_charncmp(NJ_CHAR *s1, NJ_CHAR *s2, NJ_UINT16 n); 152053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_CHAR *nj_charncpy(NJ_CHAR *dst, NJ_CHAR *src, NJ_UINT16 n); 153053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectextern NJ_UINT8 *nj_memcpy(NJ_UINT8 *dst, NJ_UINT8 *src, NJ_UINT16 n); 154053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 155053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 156053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 157