| /* |
| * 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" |
| |
| #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); |
| |
| #endif |