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