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