Mercurial > freewnn
diff Wnn/include/jdata.h @ 0:bbc77ca4def5
initial import
author | Yoshiki Yazawa <yaz@cc.rim.or.jp> |
---|---|
date | Thu, 13 Dec 2007 04:30:14 +0900 |
parents | |
children | 790205f476c0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Wnn/include/jdata.h Thu Dec 13 04:30:14 2007 +0900 @@ -0,0 +1,276 @@ +/* + * $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 <freewnn@tomo.gr.jp> + * + * 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 */