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