OSDN Git Service

Bumped version 2.4.4.
[chasen-legacy/chasen.git] / lib / chalib.h
1 /*
2  * $Id: chalib.h,v 1.1.1.1 2007/03/13 07:40:10 masayu-a Exp $
3  */
4
5 #ifndef __CHALIB_H__
6 #define __CHALIB_H__
7
8 #include "chadic.h"
9 #include "chasen.h"
10
11 #if defined _WIN32 && ! defined __CYGWIN__
12 #define strcasecmp      stricmp
13 #define strncasecmp     strnicmp
14 #endif /* _WIN32 */
15
16 #define CHA_PATH_NUM            1024
17 #define CHA_INPUT_SIZE      8192
18 #define UNDEF_HINSI_MAX     256
19 #define DIC_NUM 32 /* Æ±»þ¤Ë»È¤¨¤ë¼­½ñ¤Î¿ô¤Î¾å¸Â (ChaSen) */
20
21 #define MRPH_NUM            1024
22 #define PATH1_NUM           256
23
24 /*
25  * structures
26  */
27
28 typedef struct _mrph_t {
29     /* don't move this order */
30     unsigned short posid;
31     unsigned char inf_type;
32     unsigned char inf_form;
33     unsigned short weight;
34     short con_tbl;
35     long dat_index;
36
37     char *headword;
38     short headword_len;
39     char is_undef;
40     void *darts;
41 } mrph_t;
42
43 typedef struct _mrph_data_t {
44     mrph_t *mrph;
45     short stem_len;
46     char *reading;
47     char *pron;
48     short reading_len;
49     short pron_len;
50     char *base;
51     char *info;
52     long compound;
53 } mrph_data_t;
54
55 typedef struct _path_t {
56     int   mrph_p;
57     short state;
58     short start;
59     short end;
60     short do_print;
61     int   cost;
62     int   *path;
63     int   best_path;
64 } path_t;
65
66 typedef struct _cha_lat_t {
67     unsigned char text[CHA_INPUT_SIZE]; /* XXX */
68     int len;
69 //    path_t *lattice;
70 //    int path_num;
71     int anno;
72     int last_anno;
73     /* for parse */
74     int offset;
75     int cursor;
76     int head_path;
77     int path_idx[PATH1_NUM];
78 } cha_lat_t;
79
80 enum cha_segtype {
81     SEGTYPE_NORMAL,
82     SEGTYPE_UNSPECIFIED,
83     SEGTYPE_MORPH,
84     SEGTYPE_ANNOTATION
85 };
86
87 typedef struct _cha_seg_t cha_seg_t;
88 struct _cha_seg_t {
89     unsigned char *text;
90     int len;
91     char char_type[CHA_INPUT_SIZE]; /* XXX */
92     enum cha_segtype type;
93     char is_undef;
94     unsigned short posid;
95     unsigned char inf_type;
96     unsigned char inf_form;
97     int anno_no;
98 };
99
100 /* information for annotation */
101 typedef struct _anno_info {
102     int  hinsi;
103     char *str1, *str2;
104     int  len1, len2;
105     char *format;
106 } anno_info;
107
108 /* information for unseen word */
109 typedef struct _undef_info {
110     int  cost, cost_step;
111     int  con_tbl;
112     int  hinsi;
113 } undef_info;
114
115 typedef struct _cha_mmap_t cha_mmap_t;
116 typedef struct _cha_block_t cha_block_t;
117
118 /*
119  * global variables
120  */
121 extern cha_block_t *Cha_mrph_block;
122 extern path_t *Cha_path;
123 extern int Cha_path_num;
124 extern int Cha_con_cost_weight, Cha_con_cost_undef;
125 extern int Cha_mrph_cost_weight, Cha_cost_width;
126 extern int Space_pos_hinsi;
127 extern anno_info Cha_anno_info[UNDEF_HINSI_MAX];
128 extern undef_info Cha_undef_info[UNDEF_HINSI_MAX];
129 extern int Cha_undef_info_num;
130 extern char *Cha_bos_string;
131 extern char *Cha_eos_string;
132 extern int Cha_output_iscompound;
133
134 /*
135  * functions
136  */
137
138 /* init.c */
139 void cha_read_rcfile_fp(FILE*);
140 void cha_init(void);
141
142 /* print.c */
143 char *cha_get_output(void);
144 void cha_set_output(FILE*);
145 void cha_print_reset(void);
146 void cha_printf_mrph(cha_lat_t*, int, mrph_data_t*, char*);
147 void cha_print_path(cha_lat_t*, int, int, char*);
148 void cha_print_bos_eos(int);
149 void cha_print_hinsi_table(void);
150 void cha_print_ctype_table(void);
151 void cha_print_cform_table(void);
152
153 /* parse.c */
154 int cha_parse_bos(cha_lat_t*);
155 int cha_parse_eos(cha_lat_t*);
156 int cha_parse_segment(cha_lat_t*, cha_seg_t*);
157
158
159 /* chalib.c */
160 void cha_version(FILE*);
161 void cha_set_opt_form(char*);
162 void cha_set_cost_width(int);
163 void cha_set_language(char*);
164 char *cha_fgets(char*, int, FILE*);
165 void cha_read_dadic(chasen_cell_t*);
166
167 /* cha_jfgets.c */
168 void cha_set_jfgets_delimiter(char*);
169 char *cha_fget_line(char*, int, FILE*);
170 char *cha_jfgets(char*, int, FILE*);
171 int cha_jistoeuc(unsigned char*, unsigned char*);
172
173 /* mmap.c */
174 cha_mmap_t *cha_mmap_file(char*);
175 cha_mmap_t *cha_mmap_file_w(char*);
176 void cha_munmap_file(cha_mmap_t*);
177 void *cha_mmap_map(cha_mmap_t*);
178 off_t cha_mmap_size(cha_mmap_t*);
179
180 /* block.c */
181 cha_block_t *cha_block_new(size_t, int);
182 void cha_block_delete(cha_block_t*);
183 void *cha_block_new_item(cha_block_t*);
184 void *cha_block_get_item(cha_block_t*, int);
185 void *cha_block_pop(cha_block_t*);
186 int cha_block_num(cha_block_t*);
187 void cha_block_clear(cha_block_t*);
188
189 #endif /* __CHALIB_H__ */