1 /*
2  *  $Id: jllib.h,v 1.5 2005/04/10 15:26:37 aonoto Exp $
3  */
4 
5 /*
6  * FreeWnn is a network-extensible Kana-to-Kanji conversion system.
7  * This file is part of FreeWnn.
8  *
9  * Copyright Kyoto University Research Institute for Mathematical Sciences
10  *                 1987, 1988, 1989, 1990, 1991, 1992
11  * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999
12  * Copyright ASTEC, Inc. 1987, 1988, 1989, 1990, 1991, 1992
13  * Copyright FreeWnn Project 1999, 2000
14  *
15  * Maintainer:  FreeWnn Project   <freewnn@tomo.gr.jp>
16  *
17  * This library is free software; you can redistribute it and/or
18  * modify it under the terms of the GNU Lesser General Public
19  * License as published by the Free Software Foundation; either
20  * version 2 of the License, or (at your option) any later version.
21  *
22  * This library is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
25  * Lesser General Public License for more details.
26  *
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the
29  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
30  * Boston, MA 02111-1307, USA.
31  */
32 
33 /*
34  *       Nihongo Henkan  Library Header File
35  */
36 
37 #ifndef WNN_JLLIB_H
38 #define WNN_JLLIB_H
39 
40 #include "jslib.h"
41 
42 
43 /*
44    �桼�����ץ����ϡ�ľ�ܤ��ι�¤�Τ����Ƥ�����������ɬ�פ�̵���Ϥ���
45    �饤�֥��ؿ����Ѥ��뤳�ȡ�
46 */
47 
48 #define WNN_YOMI_SIZE 10
49 
50 typedef struct wnn_jl_bun WNN_BUN;
51 
52 struct wnn_jl_bun
53 {
54   int jirilen;                  /* ����ʸ��μ�Ω�� */
55   int dic_no;
56   int entry;
57   int kangovect;                /* ��³�٥��ȥ�ơ��֥�ؤΥݥ��� */
58   int hinsi;                    /* �ʻ� */
59   int hindo:16;                 /* ����(������) */
60   int ref_cnt:4;                /* ʸ��ꥹ�Ȥ˻Ȥ��Ƥ��� */
61   /* BUG FIX signed --> unsigned */
62   unsigned int ima:1;           /* ���Ȥä���ӥå� */
63   unsigned int hindo_updated:1; /* ����ʸ������٤Ϲ�������Ƥ��� */
64   unsigned int nobi_top:1;      /* ���Ф��̤ߤ�Ԥä��������� */
65   /* egg �ߤ����˿��Ф��̤ߤ����֤��Ԥ����ˡ�����˸�������κ�
66      �Ȥä��� �ӥåȤ� ��Ȥ��ƤϤʤ�ʤ��� */
67   unsigned int dai_top:1;       /* ��ʸ�����Ƭ */
68   unsigned int dai_end:1;       /* ��ʸ���saigo *//* ������ nomi */
69   unsigned int from_zenkouho:2; /*�����䤫�������줿ʸ�ᤫ�ɤ��� */
70   unsigned int bug:1;           /* BUG FIX �Ȥꤢ���� */
71   /* BUG FIX signed --> unsigned */
72   int hyoka;
73   int daihyoka;
74   short yomilen;
75   short kanjilen;
76   WNN_BUN *down;                /* ���Ȥä���ӥåȤ���Ȥ��оݤ�ʸ�� */
77   w_char yomi[WNN_YOMI_SIZE];   /* �ɤߡ����������롣�����ڤ�ʤ����ˤ�
78                                    ���ˤĤʤ��� */
79   WNN_BUN *next;                /* ���Υ��ȥ饯�ȤؤΥݥ��� */
80   WNN_BUN *free_next;           /* ���Υ��ȥ饯�ȤؤΥݥ��� */
81 };
82 
83 
84 struct wnn_buf
85 {
86   struct wnn_env *env;          /* �Ķ� */
87   int bun_suu;                  /* ʸ��� */
88   int zenkouho_suu;             /* ������ο� */
89   WNN_BUN **bun;                /* ʸ��ؤΥݥ��� */
90   WNN_BUN **down_bnst;          /* ���Ȥä���ӥåȤ���Ȥ��оݤ�ʸ�� */
91 
92   WNN_BUN **zenkouho;           /* ������ؤΥݥ��� */
93   int *zenkouho_dai;            /* daibunsetsu zenkouho */
94   int zenkouho_dai_suu;         /* daibunsetsu zenkouho suu */
95 
96   short c_zenkouho;             /* �������桢���ܤ��Ƥ������ */
97   short zenkouho_daip;
98   int zenkouho_bun;             /* ��������äƤ���ʸ�� */
99   int zenkouho_end_bun;         /* ������(dai)���äƤ���Ǹ��ʸ�� */
100   int zenkouho_endvect;         /* ��������ä� endvect *//* ADD KURI */
101 
102   WNN_BUN *free_heap;
103   char *heap;                   /* linked list of alloced area */
104   int msize_bun;
105   int msize_zenkouho;
106 };
107 
108 
109 #define WNN_SHO 0
110 #define WNN_DAI 1
111 
112 #define WNN_NO_USE    0
113 #define WNN_USE_MAE   1
114 #define WNN_USE_ATO   2
115 #define WNN_USE_ZENGO (WNN_USE_MAE | WNN_USE_ATO)
116 /* #define WNN_ZENGO_YUUSEN 4 */
117 
118 #define WNN_UNIQ_KNJ 2
119 #define WNN_UNIQ 1
120 #define WNN_NO_UNIQ  0
121 
122 #define WNN_NO_CREATE 0
123 #define WNN_CREATE (-1)
124 
125 #define WNN_DIC_PRIO_DEFAULT 5
126 
127 #define WNN_YOMI 0
128 #define WNN_KANJI 1
129 
130 #define jl_next(buf) jl_set_jikouho((buf), (buf)->c_zenkouho + 1)
131 
132 #define jl_previous(buf) jl_set_jikouho((buf), (buf)->c_zenkouho - 1)
133 
134 #define jl_next_dai(buf) jl_set_jikouho_dai((buf), (buf)->c_zenkouho + 1)
135 
136 #define jl_previous_dai(buf) jl_set_jikouho_dai((buf), (buf)->c_zenkouho - 1)
137 
138 #define jl_get_kanji(buf, bun_no, bun_no2, area)\
139                    wnn_get_area(buf, bun_no, bun_no2, area, WNN_KANJI)
140 
141 #define jl_get_yomi(buf, bun_no, bun_no2, area)\
142                    wnn_get_area(buf, bun_no, bun_no2, area, WNN_YOMI)
143 
144 #define jl_bun_suu(buf) ((buf)->bun_suu)
145 
146 #define jl_zenkouho_suu(buf) ((buf)->zenkouho_daip? (buf)->zenkouho_dai_suu:(buf)->zenkouho_suu)
147 
148 #define jl_zenkouho_bun(buf) ((buf)->zenkouho_bun)
149 
150 #define jl_c_zenkouho(buf) ((buf)->c_zenkouho)
151 
152 #define jl_zenkouho_daip(buf) ((buf)->zenkouho_daip)
153 
154 #define jl_dai_top(buf, k) ((buf)->bun[k]->dai_top)
155 
156 #define jl_jiri_len(buf, k) ((buf)->bun[k]->jirilen)
157 
158 #define jl_fuzoku_len(buf, k) \
159                 (jl_yomi_len((buf), k, k+1) - jl_jiri_len((buf), k))
160 
161 #define jl_jiri_kanji_len(buf, k) \
162                 (jl_kanji_len((buf), k, k+1) - jl_fuzoku_len((buf), k))
163 
164 /* Macros to create library functions from "_e" libraries */
165 
166 #define jl_env(buf)     ((buf)->env)
167 
168 #define jl_dic_add(buf,dic_name,hindo_name,rev, prio,rw, hrw, pwd_dic, pwd_hindo, error_handler, message_handler)\
169     jl_dic_add_e(jl_env(buf),dic_name,hindo_name,rev,prio,rw, hrw, pwd_dic,\
170                       pwd_hindo, error_handler, message_handler)
171 
172 #define jl_fuzokugo_set(buf, fname)  jl_fuzokugo_set_e(jl_env(buf), fname)
173 
174 #define jl_fuzokugo_get(buf, fname)  jl_fuzokugo_get_e(jl_env(buf), fname)
175 
176 
177 #define jl_dic_save(buf,dic_no) jl_dic_save_e(jl_env(buf),dic_no)
178 
179 #define jl_dic_save_all(buf)    jl_dic_save_all_e(jl_env(buf))
180 
181 #define jl_dic_list(buf, dip)   jl_dic_list_e(jl_env(buf), dip)
182 
183 #define jl_word_search(buf,dic_no, yomi, jdp) \
184     jl_word_search_e(jl_env(buf),dic_no, yomi, jdp)
185 
186 #define jl_word_search_by_env(buf, yomi, jdp) \
187     jl_word_search_by_env_e(jl_env(buf), yomi, jdp)
188 
189 #define jl_word_use(buf, dic_no, entry) \
190     jl_word_use_e(jl_env(buf), dic_no, entry)
191 
192 
193 #define jl_param_set(buf, param) jl_param_set_e(jl_env(buf), param)
194 
195 #define jl_param_get(buf, param) jl_param_get_e(jl_env(buf), param)
196 
197 #define jl_dic_delete(buf, dic_no) jl_dic_delete_e(jl_env(buf), dic_no)
198 
199 #define jl_dic_use(buf, dic_no, flag) jl_dic_use_e(jl_env(buf), dic_no, flag)
200 
201 #define jl_word_add(buf, dic, yomi, kanji, com, hinsi, hindo) \
202     jl_word_add_e(jl_env(buf), dic, yomi, kanji, com, hinsi, hindo)
203 
204 #define jl_word_delete(buf, dic, entry)\
205     jl_word_delete_e(jl_env(buf), dic, entry)
206 
207 #define jl_word_info(buf, dic_no, entry)\
208     jl_word_info_e(jl_env(buf), dic_no, entry)
209 
210 #define jl_inspect(buf, bun_no)\
211     jl_word_info(buf, (buf)->bun[bun_no]->dic_no,(buf)->bun[bun_no]->entry)
212 
213 #define jl_hinsi_number(buf, name) jl_hinsi_number_e(jl_env(buf), name)
214 
215 #define jl_hinsi_name(buf, no) jl_hinsi_name_e(jl_env(buf), no)
216 
217 #define jl_word_comment_set(buf, dic, entry, comm) \
218     jl_word_comment_set_e((buf)->env, dic, entry, comm)
219 
220 #define jl_dic_comment_set(buf, dic, comm) \
221     jl_dic_comment_set_e((buf)->env, dic, comm)
222 
223 #define jl_hinsi_list(buf, dic_no, name, area) \
224     jl_hinsi_list_e(jl_env(buf), dic_no, name, area)
225 
226 #define jl_hinsi_dicts(buf, no, area) \
227     jl_hinsi_dicts_e(jl_env(buf), no, area)
228 
229 #ifdef nodef                    /*���̤δ֡����٥ե�����Υ����Ȥϥ桼���˸����ʤ��� */
230 #define jl_hindo_comment_set(buf, dic, comm) \
231         jl_hindo_comment_set_e((buf)->env, dic, comm)
232 #endif
233 
234 #define jl_isconnect(buf)       jl_isconnect_e((buf)->env)
235 
236 #define jl_env_sticky(buf)      js_env_sticky((buf)->env)
237 #define jl_env_sticky_e(env)    js_env_sticky(env)
238 #define jl_env_un_sticky(buf)   js_env_un_sticky((buf)->env)
239 #define jl_env_un_sticky_e(env) js_env_un_sticky(env)
240 
241 /* for select server by useing $LANG */
242 #define jl_open(env_n, server_n, wnnrc_n, error_handler, message_handler, timeout) \
243     jl_open_lang(env_n, server_n, NULL, wnnrc_n, error_handler, message_handler, timeout)
244 
245 #define jl_connect(env_n, server_n, wnnrc_n, error_handler, message_handler, timeout) \
246     jl_connect_lang(env_n, server_n, NULL, wnnrc_n, error_handler, message_handler, timeout)
247 #define jl_get_lang(buf)        js_get_lang((buf)->env)
248 #define jl_set_lang(buf, lang)  js_set_lang((buf)->env, lang)
249 
250 /* extern function defines */
251 extern struct wnn_buf *jl_open_lang ();
252 extern struct wnn_env *jl_connect_lang ();
253 extern struct wnn_env *jl_env_get ();
254 extern struct wnn_jdata *jl_word_info_e ();
255 extern w_char *jl_hinsi_name_e ();
256 
257 extern void jl_close ();
258 extern int jl_dic_add_e ();
259 extern int jl_dic_comment_set_e ();
260 extern int jl_dic_delete_e ();
261 extern int jl_dic_list_e ();
262 extern int jl_dic_save_all_e ();
263 extern int jl_dic_save_e ();
264 extern int jl_dic_use_e ();
265 extern void jl_disconnect ();
266 extern void jl_disconnect_if_server_dead ();
267 extern void jl_env_set ();
268 extern int jl_fuzokugo_get_e ();
269 extern int jl_fuzokugo_set_e ();
270 extern void jl_get_zenkouho_kanji ();
271 extern int jl_hinsi_dicts_e ();
272 extern int jl_hinsi_list_e ();
273 extern int jl_hinsi_number_e ();
274 extern int jl_isconnect_e ();
275 extern int jl_kanji_len ();
276 extern int jl_kill ();
277 extern int jl_nobi_conv ();
278 extern int jl_nobi_conv_e2 ();
279 extern int jl_param_get_e ();
280 extern int jl_param_set_e ();
281 extern int jl_ren_conv ();
282 extern int jl_set_env_wnnrc ();
283 extern int jl_set_env_wnnrc1 ();
284 extern int jl_set_jikouho ();
285 extern int jl_set_jikouho_dai ();
286 extern int jl_tan_conv ();
287 extern int jl_update_hindo ();
288 extern int jl_word_add_e ();
289 extern int jl_word_comment_set_e ();
290 extern int jl_word_delete_e ();
291 extern int jl_word_search_by_env_e ();
292 extern int jl_word_search_e ();
293 extern int jl_word_use_e ();
294 extern int jl_yomi_len ();
295 extern int jl_zenkouho ();
296 extern int jl_zenkouho_dai ();
297 extern int wnn_get_area ();
298 
299 extern char *wnn_perror ();
300 extern char *wnn_perror_lang ();
301 
302 #ifdef  CONVERT_by_STROKE
303 extern void jl_get_zenkouho_yomi ();
304 #endif
305 
306 #endif  /* WNN_JLLIB_H */
307