/* * $Id: jdata.h,v 1.5 2005/04/10 15:26:37 aonoto Exp $ */ /* * FreeWnn is a network-extensible Kana-to-Kanji conversion system. * This file is part of FreeWnn. * * Copyright Kyoto University Research Institute for Mathematical Sciences * 1987, 1988, 1989, 1990, 1991, 1992 * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999 * Copyright ASTEC, Inc. 1987, 1988, 1989, 1990, 1991, 1992 * Copyright FreeWnn Project 1999, 2000 * * Maintainer: FreeWnn Project * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef WNN_JDATA_H #define WNN_JDATA_H #ifndef JS struct jdata { int kanji1; short kanji2; /* */ short which; /* gyaku henkan? */ int serial; /* index is a serial number of the first entry which is stored in this entry */ int kosuu; /* this means the number of elements in this entry */ int jishono; /* jishono in which these entries are stored */ struct jdata *jptr; /* pointer to another jdata which points out a jdata of the same yomi but (always)different jishono */ unsigned short *hinsi; #ifdef CONVERT_with_SiSheng /* Don't warry. Only use in server and jutil */ /* It's only use CWNN : 四声 */ unsigned short *sisheng; unsigned short sisheng_int; #endif UCHAR *hindo; /* 頻度 */ UCHAR *hindo_in; /* 内部頻度 */ }; #endif /* JS */ struct JT { unsigned int total; /* トータル頻度 */ int gosuu; char hpasswd[WNN_PASSWD_LEN]; int syurui; int maxcomment; int maxhinsi_list; int maxserial; int maxtable; /* For UD Dic */ int maxhontai; /* For UD Dic and Static Dic */ int maxkanji; int maxri1[2]; /* For Rev Dic */ int maxri2; /* For Rev Dic, is equal to maxserial */ w_char *comment; w_char *hinsi_list; UCHAR *hindo; /* 頻度 */ #ifdef CONVERT_with_SiSheng /* Don't warry. Only use in server and jutil */ /* It's only use CWNN : 四声 */ unsigned short *sisheng; unsigned short sisheng_int; #endif unsigned short *hinsi; /* bunpou data is stored here */ UCHAR *kanji; /* kanji data is stored here */ struct uind1 *table; /* anothe tablefile for user jisho */ UCHAR *hontai; /* the tablefile (index-file) */ struct rind1 *ri1[2]; /* For Rev Dic */ struct rind2 *ri2; /* For Rev Dic */ short dirty; short hdirty; /* ここから4つは、 登録可能辞書、逆変換可能辞書にのみ関係する */ int bufsize_kanji; /* 漢字領域の大きさ */ int bufsize_serial; /* 文法、頻度領域の大きさ */ int bufsize_hontai; /* インデックス(hontai)の領域の大きさ */ int bufsize_table; /* インデックス(table)の領域の大きさ */ int bufsize_ri1[2]; /* 逆変換可能辞書の table の領域の大きさ */ /* hinsi_list wo kakunou suru */ int maxnode; struct wnn_hinsi_node *node; #ifdef CONVERT_by_STROKE /* Don't warry. Only use in server and jutil */ /* Used for Bixing dic */ struct b_node *bind; /* index for yomi <--> kanji search */ int max_bnode; /* Max num of tuple */ int bufsize_bnode; /* BUFFER size of the b_node */ #endif }; struct HJT { struct wnn_file_uniq dic_file_uniq; int maxcomment; int maxserial; w_char *comment; UCHAR *hindo; short hdirty; int bufsize_serial; }; /* * structures concerning UD dicts */ #define AL_INT(x) ((unsigned long)((char *)(x) + 3) & ((unsigned long)~0x3)) #define ENDPTR 0 /* The end of (int) pointer list in uind2->next */ #define RD_ENDPTR 0xffffffff /* The end of (int) pointer list in rind2->next */ struct uind1 { int pter1; /* pointer to uind1 */ int pter; /* pinter to uind2 */ unsigned int yomi1; unsigned int yomi2; }; struct uind2 { int next; /* pointer to uind2 */ int serial; int kanjipter; w_char kosuu; w_char yomi[1]; /* actually it is variable length */ }; /* MAXTABLE MAX... ha user file no ookisani kuwaete touroku no tame ni totteoku ookisa*/ #define MAXTABLE 100 /* you can touroku MAXTABLE element without realloc the jisho */ #define MAXHONTAI MAXTABLE * 4 * 4 #define MAXKANJI MAXTABLE * 10 #define MAXSERIAL MAXTABLE #define MAXBIND MAXTABLE * 4 /* * structures concerning REV dicts. */ struct rind1 { int pter1; /* pointer to rind1 */ int pter; /* pinter to rind2 */ }; struct rind2 { int next[2]; /* pointer to rind2 */ int kanjipter; }; /* * Reverse Dict ni kansite, dotira wo hikuka? */ #define D_YOMI 0 #define D_KANJI 1 #define KANJI_str1(pter, which) (((which) == D_YOMI)?((w_char *)((pter) + 2)):\ ((w_char *)((pter) + 2) + Strlen((w_char *)((pter) + 2)) + 1)) #define KANJI_str(p, which) ((*((p) + 1) & FORWARDED)? \ KANJI_str1(((*(w_char *)((p) + 2)) << 16 | (*(w_char *)((p) + 4))) \ + (p),which): \ KANJI_str1((p), which)) #define Get_kanji_len(pter, which) (Strlen(KANJI_str(pter, which))) /* * structures concerning SD dicts. */ #define ST_NORMAL 1 #define ST_NOENT 2 #define ST_NOPTER 3 #define ST_SMALL 4 #define ST_TABLE 5 /* *Concerning HINSI. But these may not be used. */ #define SAKUJO_HINSI 0xfffe /* sakujo sareta tango no hinsi */ #define NANDEMO_EEYO 0xfffd /* nandemo maeni koreru to iu hinsi */ /* *Concerning KANJI and COMMENT. */ #define HAS_YOMI 1 #define HAS_COMMENT 2 #define FORWARDED 4 /* #define SEPARATE_CHAR '\0'*/ /* Choose character which do not appear as the first byte of w_char */ #define DIC_YOMI_CHAR 1 #define DIC_COMMENT_CHAR 2 #define DIC_HIRAGANA "\\y" #define DIC_KATAKANA "\\k" /*#define DIC_HANKAKU "\\h" *//* 半角 *//* 読みのまま */ #define DIC_ZENKAKU "\\z" /* 全角 */ /* 123 */ #define DIC_NUM_KAN "\\chan" /* 漢数字 */ /* 一二三 */ #define DIC_NUM_KANSUUJI "\\chas" /* 漢数字 */ /* 百二十三 */ #define DIC_NUM_KANOLD "\\chao" /* 漢数字 */ /* 壱百弐拾参 */ #define DIC_NUM_HANCAN "\\nhc" /* 半角数字 */ /* 1,234 */ #define DIC_NUM_ZENCAN "\\nzc" /* 全角数字 */ /* 1,234 */ #define DIC_HEX "\\X" /* \Xa4a2 */ #define DIC_HEXc "\\x" /* \xa4a2 */ #define DIC_OCT "\\0" /* \040 */ #define DIC_ESC "\\\\" /* \\ = \ */ #ifdef notuse /* 英数 */ #define WNN_ALP_HAN -4 /* 半角 */ /* 読みのまま */ #define WNN_ALP_ZEN -30 /* 全角 */ /* 記号 */ #define WNN_KIG_HAN -5 /* 半角 */ /* 読みのまま */ #define WNN_KIG_JIS -40 /* 全角(JIS) */ #define WNN_KIG_ASC -41 /* 全角(ASC) */ #endif #ifdef CONVERT_by_STROKE struct b_node { short pter; /* Point to Indix-2 */ short pter_son; /* Ptr to first son */ short pter_next; /* Ptr to next brother */ }; struct b_koho { struct b_koho *previou; int value; w_char *p_yomi; w_char *p_kanji; unsigned short *p_hinsi; UCHAR *p_hindo; int serial; int dic_no; }; #endif /* CONVERT_by_STROKE */ #endif /* WNN_JDATA_H */