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__ */ 190