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#define NJ_VERSION "iWnn Version 1.1.2" 18053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 19053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef _NJ_LIB_H_ 20053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define _NJ_LIB_H_ 21053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 22053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef signed char NJ_INT8; 23053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef unsigned char NJ_UINT8; 24053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef signed short NJ_INT16; 25053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef unsigned short NJ_UINT16; 26053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef signed long NJ_INT32; 27053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef unsigned long NJ_UINT32; 28053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 29053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef unsigned short NJ_CHAR; 30053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 31053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CHAR_NUL 0x0000 32053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 33053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_TERM_LEN 1 34053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_TERM_SIZE (NJ_TERM_LEN) 35053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 36053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NULL 37053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NULL 0 38053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 39053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 40053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifdef NJ_STACK_CHECK_FILE 41053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef NJ_VOID VOID; 42053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 43053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 44053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_CHAR_WAVE_DASH_BIG 45053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CHAR_WAVE_DASH_BIG 0xFF5E 46053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 47053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_CHAR_WAVE_DASH_SMALL 48053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CHAR_WAVE_DASH_SMALL 0x007E 49053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 50053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 51053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef NJ_INT16 NJ_HINDO; 52053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 53053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_INDEX_SIZE 2 54053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 55053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_LEARN_DIC_HEADER_SIZE 72 56053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 57053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_MAX_DIC 58053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_MAX_DIC 20 59053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 60053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 61053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_MAX_CHARSET 62053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_MAX_CHARSET 200 63053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 64053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 65053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_SEARCH_CACHE_SIZE 66053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_SEARCH_CACHE_SIZE 200 67053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 68053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 69053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_CACHE_VIEW_CNT 70053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CACHE_VIEW_CNT 2 71053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 72053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 73053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 74053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_MAX_RESULT_LEN 75053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_MAX_RESULT_LEN 50 76053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 77053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 78053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_MAX_LEN 79053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_MAX_LEN 50 80053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 81053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 82053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_MAX_KEYWORD 83053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_MAX_KEYWORD (NJ_MAX_RESULT_LEN + NJ_TERM_LEN) 84053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 85053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 86053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_MAX_PHRASE 87053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_MAX_PHRASE NJ_MAX_LEN 88053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 89053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 90053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_MAX_PHR_CONNECT 91053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_MAX_PHR_CONNECT 5 92053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 93053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 94053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_MAX_USER_LEN 95053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_MAX_USER_LEN 50 96053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 97053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 98053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_MAX_USER_KOUHO_LEN 99053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_MAX_USER_KOUHO_LEN 50 100053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 101053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 102053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#ifndef NJ_MAX_USER_COUNT 103053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_MAX_USER_COUNT 100 104053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 105053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 106053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_USER_QUE_SIZE (((NJ_MAX_USER_LEN + NJ_MAX_USER_KOUHO_LEN) * sizeof(NJ_CHAR)) + 5) 107053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_USER_DIC_SIZE ((NJ_USER_QUE_SIZE + NJ_INDEX_SIZE + NJ_INDEX_SIZE) * NJ_MAX_USER_COUNT + NJ_INDEX_SIZE + NJ_INDEX_SIZE + NJ_LEARN_DIC_HEADER_SIZE + 4) 108053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 109053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef NJ_UINT8 * NJ_DIC_HANDLE; 110053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 111053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 112053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 base; 113053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 high; 114053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_DIC_FREQ; 115053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 116053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 117053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT32 current; 118053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT32 top; 119053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT32 bottom; 120053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 *node; 121053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 *now; 122053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 idx_no; 123053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_CACHE_INFO; 124053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 125053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 126053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 statusFlg; 127053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_STATUSFLG_CACHEOVER ((NJ_UINT8)0x01) 128053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_STATUSFLG_AIMAI ((NJ_UINT8)0x02) 129053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_STATUSFLG_HINDO ((NJ_UINT8)0x04) 130053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 viewCnt; 131053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 keyPtr[NJ_MAX_KEYWORD]; 132053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CACHE_INFO storebuff[NJ_SEARCH_CACHE_SIZE]; 133053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_SEARCH_CACHE; 134053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 135053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_GET_CACHEOVER_FROM_SCACHE(s) ((s)->statusFlg & NJ_STATUSFLG_CACHEOVER) 136053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_GET_AIMAI_FROM_SCACHE(s) ((s)->statusFlg & NJ_STATUSFLG_AIMAI) 137053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_SET_CACHEOVER_TO_SCACHE(s) ((s)->statusFlg |= NJ_STATUSFLG_CACHEOVER) 138053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_SET_AIMAI_TO_SCACHE(s) ((s)->statusFlg |= NJ_STATUSFLG_AIMAI) 139053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_UNSET_CACHEOVER_TO_SCACHE(s) ((s)->statusFlg &= ~NJ_STATUSFLG_CACHEOVER) 140053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_UNSET_AIMAI_TO_SCACHE(s) ((s)->statusFlg &= ~NJ_STATUSFLG_AIMAI) 141053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 142053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 143053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 144053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 type; 145053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_DIC_H_TYPE_NORMAL 0x00 146053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 limit; 147053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 148053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_DIC_HANDLE handle; 149053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 150053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_MODE_TYPE_MAX 1 151053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 152053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_DIC_FREQ dic_freq[NJ_MODE_TYPE_MAX]; 153053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_MODE_TYPE_HENKAN 0 154053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 155053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_SEARCH_CACHE * srhCache; 156053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_DIC_INFO; 157053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 158053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 159053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 160053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_DIC_INFO dic[NJ_MAX_DIC]; 161053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_DIC_HANDLE rHandle[NJ_MODE_TYPE_MAX]; 162053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 163053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 164053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 mode; 165053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CACHE_MODE_NONE 0x0000 166053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CACHE_MODE_VALID 0x0001 167053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 168053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 169053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR keyword[NJ_MAX_KEYWORD]; 170053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_DIC_SET; 171053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 172053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 173053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 charset_count; 174053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR *from[NJ_MAX_CHARSET]; 175053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR *to[NJ_MAX_CHARSET]; 176053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_CHARSET; 177053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 178053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 179053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 180053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 181053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 operation; 182053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CUR_OP_COMP 0 183053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CUR_OP_FORE 1 184053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CUR_OP_LINK 2 185053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 186053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 mode; 187053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CUR_MODE_FREQ 0 188053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_CUR_MODE_YOMI 1 189053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 190053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_DIC_SET *ds; 191053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 192053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project struct { 193053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 *fore; 194053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 foreSize; 195053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 foreFlag; 196053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 *rear; 197053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 rearSize; 198053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 rearFlag; 199053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 *yominasi_fore; 200053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } hinsi; 201053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 202053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR *yomi; 203053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 ylen; 204053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 yclen; 205053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR *kanji; 206053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 207053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHARSET *charset; 208053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 209053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_SEARCH_CONDITION; 210053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 211053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 212053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_DIC_HANDLE handle; 213053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT32 current; 214053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT32 top; 215053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT32 bottom; 216053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT32 relation[NJ_MAX_PHR_CONNECT]; 217053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 current_cache; 218053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 current_info; 219053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 status; 220053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 type; 221053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_SEARCH_LOCATION; 222053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 223053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 224053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_HINDO cache_freq; 225053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_DIC_FREQ dic_freq; 226053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_SEARCH_LOCATION loct; 227053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_SEARCH_LOCATION_SET; 228053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 229053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 230053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_SEARCH_CONDITION cond; 231053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_SEARCH_LOCATION_SET loctset[NJ_MAX_DIC]; 232053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_CURSOR; 233053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 234053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 235053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 236053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 hinsi_group; 237053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_HINSI_MEISI 0 238053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_HINSI_JINMEI 1 239053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_HINSI_MEISI_NO_CONJ 2 240053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_HINSI_CHIMEI 2 241053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_HINSI_KIGOU 3 242053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 243053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR yomi[NJ_MAX_LEN + NJ_TERM_LEN]; 244053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR kouho[NJ_MAX_RESULT_LEN + NJ_TERM_LEN]; 245053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 246053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 247053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project struct { 248053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 yomi_len; 249053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 kouho_len; 250053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT32 hinsi; 251053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT32 attr; 252053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_INT16 freq; 253053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } stem; 254053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 255053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 256053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project struct { 257053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 yomi_len; 258053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 kouho_len; 259053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT32 hinsi; 260053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_INT16 freq; 261053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } fzk; 262053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 263053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_INT16 connect; 264053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 265053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_WORD_INFO; 266053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 267053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 268053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR *yomi; 269053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 270053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 271053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project struct NJ_STEM { 272053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 info1; 273053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 info2; 274053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_HINDO hindo; 275053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_SEARCH_LOCATION loc; 276053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 type; 277053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } stem; 278053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 279053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 280053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project struct NJ_FZK { 281053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 info1; 282053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 info2; 283053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_HINDO hindo; 284053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } fzk; 285053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_WORD; 286053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 287053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_GET_FPOS_FROM_STEM(s) ((NJ_UINT16)((s)->stem.info1 >> 7)) 288053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_GET_BPOS_FROM_STEM(s) ((NJ_UINT16)((s)->stem.info2 >> 7)) 289053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 290053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 291053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_SET_FPOS_TO_STEM(s,v) ((s)->stem.info1 = ((s)->stem.info1 & 0x007F) | (NJ_UINT16)((v) << 7)) 292053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_GET_YLEN_FROM_STEM(s) ((NJ_UINT8)((s)->stem.info1 & 0x7F)) 293053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_GET_KLEN_FROM_STEM(s) ((NJ_UINT8)((s)->stem.info2 & 0x7F)) 294053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_SET_YLEN_TO_STEM(s,v) ((s)->stem.info1 = ((s)->stem.info1 & 0xFF80) | (NJ_UINT16)((v) & 0x7F)) 295053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_SET_BPOS_TO_STEM(s,v) ((s)->stem.info2 = ((s)->stem.info2 & 0x007F) | (NJ_UINT16)((v) << 7)) 296053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_SET_KLEN_TO_STEM(s,v) ((s)->stem.info2 = ((s)->stem.info2 & 0xFF80) | (NJ_UINT16)((v) & 0x7F)) 297053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 298053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_GET_YLEN_FROM_FZK(f) ((NJ_UINT8)((f)->fzk.info1 & 0x7F)) 299053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_GET_BPOS_FROM_FZK(f) ((NJ_UINT16)((f)->fzk.info2 >> 7)) 300053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 301053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 302053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 303053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 operation_id; 304053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_OP_MASK 0x000f 305053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_GET_RESULT_OP(id) ((id) & NJ_OP_MASK) 306053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_OP_SEARCH 0x0000 307053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 308053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_FUNC_MASK 0x00f0 309053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_GET_RESULT_FUNC(id) ((id) & NJ_FUNC_MASK) 310053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_FUNC_SEARCH 0x0000 311053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 312053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_DIC_MASK 0xf000 313053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_GET_RESULT_DIC(id) ((id) & 0xF000) 314053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_DIC_STATIC 0x1000 315053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_DIC_CUSTOMIZE 0x2000 316053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_DIC_LEARN 0x3000 317053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_DIC_USER 0x4000 318053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 319053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 320053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_WORD word; 321053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_RESULT; 322053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 323053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projecttypedef struct { 324053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 mode; 325053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_DEFAULT_MODE (NJ_NO_RENBUN|NJ_NO_TANBUN|NJ_RELATION_ON|NJ_YOMINASI_ON) 326053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 forecast_learn_limit; 327053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_DEFAULT_FORECAST_LEARN_LIMIT 30 328053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 forecast_limit; 329053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_DEFAULT_FORECAST_LIMIT 100 330053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 char_min; 331053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_DEFAULT_CHAR_MIN 0 332053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 char_max; 333053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_DEFAULT_CHAR_MAX NJ_MAX_LEN 334053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} NJ_ANALYZE_OPTION; 335053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 336053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_STATE_MAX_FREQ 1000 337053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_STATE_MIN_FREQ 0 338053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 339053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#include "njx_lib.h" 340053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 341053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#define NJ_EXTERN extern 342053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 343053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_get_stroke(NJ_CLASS *iwnn, NJ_RESULT *result, NJ_CHAR *buf, NJ_UINT16 buf_size); 344053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_get_candidate(NJ_CLASS *iwnn, NJ_RESULT *result, NJ_CHAR *buf, NJ_UINT16 buf_size); 345053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_search_word(NJ_CLASS *iwnn, NJ_CURSOR *cursor); 346053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_get_word(NJ_CLASS *iwnn, NJ_CURSOR *cursor, NJ_RESULT *result); 347053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_check_dic(NJ_CLASS *iwnn, NJ_DIC_HANDLE handle, NJ_UINT8 restore, NJ_UINT32 size); 348053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_add_word(NJ_CLASS *iwnn, NJ_WORD_INFO *word, NJ_UINT8 type, NJ_UINT8 connect); 349053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_delete_word(NJ_CLASS *iwnn, NJ_RESULT *result); 350053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_create_dic(NJ_CLASS *iwnn, NJ_DIC_HANDLE handle, NJ_INT8 type, NJ_UINT32 size); 351053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 352053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_init(NJ_CLASS *iwnn); 353053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_select(NJ_CLASS *iwnn, NJ_RESULT *r_result); 354053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 355053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif 356