aboutsummaryrefslogtreecommitdiffstats
path: root/src/virtualkeyboard/3rdparty/openwnn/wnnDictionary/include/nj_lib.h
blob: 3334d1fc4cc2ebeb215137194a8748729287c822 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
/*
 * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#define NJ_VERSION "iWnn Version 1.1.2"

#ifndef _NJ_LIB_H_
#define _NJ_LIB_H_

typedef signed char    NJ_INT8;
typedef unsigned char  NJ_UINT8;
typedef signed short   NJ_INT16;
typedef unsigned short NJ_UINT16;
typedef signed long    NJ_INT32;
typedef unsigned long  NJ_UINT32;

typedef unsigned short   NJ_CHAR;

#define NJ_CHAR_NUL  0x0000

#define NJ_TERM_LEN  1
#define NJ_TERM_SIZE (NJ_TERM_LEN)

#ifndef NULL
#define NULL 0
#endif

#ifdef NJ_STACK_CHECK_FILE
typedef NJ_VOID VOID;
#endif 

#ifndef NJ_CHAR_WAVE_DASH_BIG
#define NJ_CHAR_WAVE_DASH_BIG   0xFF5E 
#endif 
#ifndef NJ_CHAR_WAVE_DASH_SMALL
#define NJ_CHAR_WAVE_DASH_SMALL 0x007E 
#endif 

typedef NJ_INT16 NJ_HINDO;      

#define NJ_INDEX_SIZE      2

#define NJ_LEARN_DIC_HEADER_SIZE   72

#ifndef NJ_MAX_DIC
#define NJ_MAX_DIC 20
#endif 

#ifndef NJ_MAX_CHARSET
#define NJ_MAX_CHARSET 200
#endif 

#ifndef NJ_SEARCH_CACHE_SIZE
#define NJ_SEARCH_CACHE_SIZE   200
#endif 
 
#ifndef NJ_CACHE_VIEW_CNT
#define NJ_CACHE_VIEW_CNT       2
#endif 


#ifndef NJ_MAX_RESULT_LEN
#define NJ_MAX_RESULT_LEN  50
#endif 

#ifndef NJ_MAX_LEN
#define NJ_MAX_LEN          50
#endif 

#ifndef NJ_MAX_KEYWORD
#define NJ_MAX_KEYWORD (NJ_MAX_RESULT_LEN + NJ_TERM_LEN)
#endif 

#ifndef NJ_MAX_PHRASE
#define NJ_MAX_PHRASE       NJ_MAX_LEN
#endif 

#ifndef NJ_MAX_PHR_CONNECT
#define NJ_MAX_PHR_CONNECT      5
#endif 

#ifndef NJ_MAX_USER_LEN
#define NJ_MAX_USER_LEN         50
#endif 

#ifndef NJ_MAX_USER_KOUHO_LEN
#define NJ_MAX_USER_KOUHO_LEN   50
#endif 

#ifndef NJ_MAX_USER_COUNT
#define NJ_MAX_USER_COUNT       100
#endif 

#define NJ_USER_QUE_SIZE        (((NJ_MAX_USER_LEN + NJ_MAX_USER_KOUHO_LEN) * sizeof(NJ_CHAR)) + 5)
#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)

typedef NJ_UINT8 * NJ_DIC_HANDLE;

typedef struct {
    NJ_UINT16 base;         
    NJ_UINT16 high;         
} NJ_DIC_FREQ;

typedef struct {
    NJ_UINT32  current;     
    NJ_UINT32  top;         
    NJ_UINT32  bottom;      
    NJ_UINT8  *node;        
    NJ_UINT8  *now;         
    NJ_UINT16  idx_no;      
} NJ_CACHE_INFO;

typedef struct {
    NJ_UINT8      statusFlg;                        
#define NJ_STATUSFLG_CACHEOVER ((NJ_UINT8)0x01)     
#define NJ_STATUSFLG_AIMAI     ((NJ_UINT8)0x02)     
#define NJ_STATUSFLG_HINDO     ((NJ_UINT8)0x04)     
    NJ_UINT8      viewCnt;                          
    NJ_UINT16     keyPtr[NJ_MAX_KEYWORD];           
    NJ_CACHE_INFO storebuff[NJ_SEARCH_CACHE_SIZE];  
} NJ_SEARCH_CACHE;

#define NJ_GET_CACHEOVER_FROM_SCACHE(s) ((s)->statusFlg & NJ_STATUSFLG_CACHEOVER)
#define NJ_GET_AIMAI_FROM_SCACHE(s)     ((s)->statusFlg & NJ_STATUSFLG_AIMAI)
#define NJ_SET_CACHEOVER_TO_SCACHE(s)   ((s)->statusFlg |= NJ_STATUSFLG_CACHEOVER)
#define NJ_SET_AIMAI_TO_SCACHE(s)       ((s)->statusFlg |= NJ_STATUSFLG_AIMAI)
#define NJ_UNSET_CACHEOVER_TO_SCACHE(s) ((s)->statusFlg &= ~NJ_STATUSFLG_CACHEOVER) 
#define NJ_UNSET_AIMAI_TO_SCACHE(s)     ((s)->statusFlg &= ~NJ_STATUSFLG_AIMAI)


typedef struct {
    NJ_UINT8           type;            
#define NJ_DIC_H_TYPE_NORMAL   0x00     
    NJ_UINT8           limit;           

    NJ_DIC_HANDLE       handle;         

#define NJ_MODE_TYPE_MAX  1   
    
    NJ_DIC_FREQ         dic_freq[NJ_MODE_TYPE_MAX];
#define NJ_MODE_TYPE_HENKAN  0   

    NJ_SEARCH_CACHE *   srhCache;       
} NJ_DIC_INFO;


typedef struct {
    NJ_DIC_INFO   dic[NJ_MAX_DIC];           
    NJ_DIC_HANDLE  rHandle[NJ_MODE_TYPE_MAX]; 

    
    NJ_UINT16           mode;
#define NJ_CACHE_MODE_NONE          0x0000    
#define NJ_CACHE_MODE_VALID         0x0001    

    
    NJ_CHAR             keyword[NJ_MAX_KEYWORD];
} NJ_DIC_SET;

typedef struct {
    NJ_UINT16  charset_count;               
    NJ_CHAR    *from[NJ_MAX_CHARSET];       
    NJ_CHAR    *to[NJ_MAX_CHARSET];         
} NJ_CHARSET;


typedef struct {

    NJ_UINT8 operation;          
#define NJ_CUR_OP_COMP      0    
#define NJ_CUR_OP_FORE      1    
#define NJ_CUR_OP_LINK      2    

    NJ_UINT8 mode;               
#define NJ_CUR_MODE_FREQ    0    
#define NJ_CUR_MODE_YOMI    1    

    NJ_DIC_SET *ds;              

    struct {
        NJ_UINT8 *fore;          
        NJ_UINT16 foreSize;      
        NJ_UINT16 foreFlag;      
        NJ_UINT8 *rear;          
        NJ_UINT16 rearSize;      
        NJ_UINT16 rearFlag;      
        NJ_UINT8 *yominasi_fore; 
    } hinsi;

    NJ_CHAR  *yomi;
    NJ_UINT16 ylen;       
    NJ_UINT16 yclen;      
    NJ_CHAR  *kanji;      

    NJ_CHARSET *charset;  

} NJ_SEARCH_CONDITION;

typedef struct {
    NJ_DIC_HANDLE  handle;        
    NJ_UINT32      current;       
    NJ_UINT32      top;           
    NJ_UINT32      bottom;        
    NJ_UINT32      relation[NJ_MAX_PHR_CONNECT];   
    NJ_UINT8       current_cache; 
    NJ_UINT8       current_info;  
    NJ_UINT8       status;       
    NJ_UINT8       type;     
} NJ_SEARCH_LOCATION;

typedef struct {
    NJ_HINDO           cache_freq;   
    NJ_DIC_FREQ        dic_freq;     
    NJ_SEARCH_LOCATION loct;         
} NJ_SEARCH_LOCATION_SET;

typedef struct {
    NJ_SEARCH_CONDITION cond;                   
    NJ_SEARCH_LOCATION_SET loctset[NJ_MAX_DIC]; 
} NJ_CURSOR;


typedef struct {
    NJ_UINT8 hinsi_group;          
#define NJ_HINSI_MEISI          0    
#define NJ_HINSI_JINMEI         1    
#define NJ_HINSI_MEISI_NO_CONJ  2    
#define NJ_HINSI_CHIMEI         2    
#define NJ_HINSI_KIGOU          3    

    NJ_CHAR  yomi[NJ_MAX_LEN + NJ_TERM_LEN];         
    NJ_CHAR  kouho[NJ_MAX_RESULT_LEN + NJ_TERM_LEN]; 

    
    struct {
        NJ_UINT16  yomi_len;    
        NJ_UINT16  kouho_len;   
        NJ_UINT32  hinsi;       
        NJ_UINT32  attr;        
        NJ_INT16   freq;        
    } stem;

    
    struct {
        NJ_UINT16  yomi_len;    
        NJ_UINT16  kouho_len;   
        NJ_UINT32  hinsi;       
        NJ_INT16   freq;        
    } fzk;

    NJ_INT16   connect;         

} NJ_WORD_INFO;

typedef struct {
    NJ_CHAR  *yomi;   

    
    struct NJ_STEM {
        NJ_UINT16  info1;       
        NJ_UINT16  info2;       
        NJ_HINDO   hindo;       
        NJ_SEARCH_LOCATION loc; 
        NJ_UINT8   type;        
    } stem;

    
    struct NJ_FZK {
        NJ_UINT16  info1;       
        NJ_UINT16  info2;       
        NJ_HINDO   hindo;       
    } fzk;
} NJ_WORD;

#define NJ_GET_FPOS_FROM_STEM(s) ((NJ_UINT16)((s)->stem.info1 >> 7))
#define NJ_GET_BPOS_FROM_STEM(s) ((NJ_UINT16)((s)->stem.info2 >> 7))


#define NJ_SET_FPOS_TO_STEM(s,v) ((s)->stem.info1 = ((s)->stem.info1 & 0x007F) | (NJ_UINT16)((v) << 7))
#define NJ_GET_YLEN_FROM_STEM(s) ((NJ_UINT8)((s)->stem.info1 & 0x7F))
#define NJ_GET_KLEN_FROM_STEM(s) ((NJ_UINT8)((s)->stem.info2 & 0x7F))
#define NJ_SET_YLEN_TO_STEM(s,v) ((s)->stem.info1 = ((s)->stem.info1 & 0xFF80) | (NJ_UINT16)((v) & 0x7F))
#define NJ_SET_BPOS_TO_STEM(s,v) ((s)->stem.info2 = ((s)->stem.info2 & 0x007F) | (NJ_UINT16)((v) << 7))
#define NJ_SET_KLEN_TO_STEM(s,v) ((s)->stem.info2 = ((s)->stem.info2 & 0xFF80) | (NJ_UINT16)((v) & 0x7F))

#define NJ_GET_YLEN_FROM_FZK(f) ((NJ_UINT8)((f)->fzk.info1 & 0x7F))
#define NJ_GET_BPOS_FROM_FZK(f) ((NJ_UINT16)((f)->fzk.info2 >> 7))

typedef struct {
    
    NJ_UINT16 operation_id;
#define NJ_OP_MASK          0x000f  
#define NJ_GET_RESULT_OP(id) ((id) & NJ_OP_MASK)
#define NJ_OP_SEARCH        0x0000  

#define NJ_FUNC_MASK        0x00f0  
#define NJ_GET_RESULT_FUNC(id) ((id) & NJ_FUNC_MASK)
#define NJ_FUNC_SEARCH              0x0000  

#define NJ_DIC_MASK                 0xf000  
#define NJ_GET_RESULT_DIC(id) ((id) & 0xF000)
#define NJ_DIC_STATIC               0x1000  
#define NJ_DIC_CUSTOMIZE            0x2000  
#define NJ_DIC_LEARN                0x3000  
#define NJ_DIC_USER                 0x4000  

    
    NJ_WORD word;
} NJ_RESULT;

typedef struct {
    NJ_UINT16  mode;                            
#define NJ_DEFAULT_MODE (NJ_NO_RENBUN|NJ_NO_TANBUN|NJ_RELATION_ON|NJ_YOMINASI_ON)
    NJ_UINT16  forecast_learn_limit;            
#define NJ_DEFAULT_FORECAST_LEARN_LIMIT 30      
    NJ_UINT16  forecast_limit;                  
#define NJ_DEFAULT_FORECAST_LIMIT 100           
    NJ_UINT8   char_min;                        
#define NJ_DEFAULT_CHAR_MIN 0                   
    NJ_UINT8   char_max;                        
#define NJ_DEFAULT_CHAR_MAX NJ_MAX_LEN          
} NJ_ANALYZE_OPTION;

#define NJ_STATE_MAX_FREQ  1000         
#define NJ_STATE_MIN_FREQ     0         

#include "njx_lib.h"

#ifdef __cplusplus
extern "C" {
#endif

#define NJ_EXTERN extern

NJ_EXTERN NJ_INT16 njx_get_stroke(NJ_CLASS *iwnn, NJ_RESULT *result, NJ_CHAR  *buf, NJ_UINT16 buf_size);
NJ_EXTERN NJ_INT16 njx_get_candidate(NJ_CLASS *iwnn, NJ_RESULT *result, NJ_CHAR  *buf, NJ_UINT16 buf_size);
NJ_EXTERN NJ_INT16 njx_search_word(NJ_CLASS *iwnn, NJ_CURSOR *cursor);
NJ_EXTERN NJ_INT16 njx_get_word(NJ_CLASS *iwnn, NJ_CURSOR *cursor, NJ_RESULT *result);
NJ_EXTERN NJ_INT16 njx_check_dic(NJ_CLASS *iwnn, NJ_DIC_HANDLE handle, NJ_UINT8 restore, NJ_UINT32 size);
NJ_EXTERN NJ_INT16 njx_add_word(NJ_CLASS *iwnn, NJ_WORD_INFO *word, NJ_UINT8 type, NJ_UINT8 connect);
NJ_EXTERN NJ_INT16 njx_delete_word(NJ_CLASS *iwnn, NJ_RESULT *result);
NJ_EXTERN NJ_INT16 njx_create_dic(NJ_CLASS *iwnn, NJ_DIC_HANDLE handle, NJ_INT8 type, NJ_UINT32 size);

NJ_EXTERN NJ_INT16 njx_init(NJ_CLASS *iwnn);
NJ_EXTERN NJ_INT16 njx_select(NJ_CLASS *iwnn, NJ_RESULT *r_result);

#ifdef __cplusplus
} // extern "C"
#endif

#endif