1 /* 2 * $Id: client.h,v 1.2 2001/06/14 18:16:14 ura 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 OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999 10 * Copyright 1991 by Massachusetts Institute of Technology 11 * 12 * Author: OMRON SOFTWARE Co., Ltd. <freewnn@rd.kyoto.omronsoft.co.jp> 13 * 14 * This program is free software; you can redistribute it and/or modify 15 * it under the terms of the GNU General Public License as published by 16 * the Free Software Foundation; either version 2, or (at your option) 17 * any later version. 18 * 19 * This program is distributed in the hope that it will be useful, 20 * but WITHOUT ANY WARRANTY; without even the implied warranty of 21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 * GNU General Public License for more details. 23 * 24 * You should have received a copy of the GNU General Public License 25 * along with GNU Emacs; see the file COPYING. If not, write to the 26 * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 27 * 28 * Commentary: 29 * 30 * Change log: 31 * 32 * Last modified date: 8,Feb.1999 33 * 34 * Code: 35 * 36 */ 37 /* Version 4.0 38 */ 39 /* 40 client.h 41 */ 42 43 #ifndef JLLIB 44 #include "jllib.h" 45 #endif /* JLLIB */ 46 47 #include "rk_header.h" 48 #include "rk_multi.h" 49 50 /* 51 * when mark is set 52 * hanten bit0,bit1: --- mark 53 * bit2,bit3: mark --- cursor 54 * bit4,bit5: cursor --- 55 * when mark is not set(-1) 56 * bit4,bit5: 57 * first one....hanten 58 * second one...under_line 59 */ 60 61 typedef struct _ClientBuf 62 { 63 w_char *buffer; /* pointer for buffer */ 64 short t_c_p; /* position of cursor on buffer */ 65 short hanten; /* see over */ 66 short maxlen; /* length of string on buffer */ 67 short buflen; /* max length of the buffer */ 68 short t_m_start; /* -1 : mark is NOT set 69 > 0 : position of mark */ 70 short t_b_st; /* start position of bolding */ 71 short t_b_end; /* end position of bolding */ 72 73 int (*key_in_fun) (); /* */ 74 int (*redraw_fun) (); /* */ 75 int (*ctrl_code_fun) (); /* */ 76 77 int (**key_table) (); /* table of keybinding */ 78 char *rk_clear_tbl; /* flag of romakn_clear */ 79 } 80 ClientBuf; 81 82 #define BUFFER_IN_CONT -2 83 84 #ifndef XJUTIL 85 typedef struct _MainTable 86 { 87 int (*m_table[11][256]) (); 88 char rk_cl_tbl[11][256]; 89 int re_count; 90 } 91 MainTable; 92 93 typedef struct _History 94 { 95 w_char *hbuffer; 96 struct _History *previous; 97 struct _History *next; 98 int num; 99 } 100 History; 101 #endif /* !XJUTIL */ 102 103 typedef struct _WnnEnv 104 { 105 char *host_name; /* server name */ 106 struct wnn_env *env; /* env */ 107 int sticky; /* sticky bit */ 108 char *envrc_name; /* envrc name */ 109 char env_name_str[32]; /* env name */ 110 struct _WnnEnv *next; 111 } 112 WnnEnv; 113 114 typedef struct _FunctionTable 115 { 116 char *name; 117 /* functions depends on lang */ 118 int (*print_out_function) (); 119 int (*input_function) (); 120 int (*call_t_redraw_move_function) (); 121 int (*call_t_redraw_move_1_function) (); 122 int (*call_t_redraw_move_2_function) (); 123 int (*call_t_print_l_function) (); 124 int (*redraw_when_chmsig_function) (); 125 int (*char_len_function) (); 126 int (*char_q_len_function) (); 127 int (*t_redraw_move_function) (); 128 int (*t_print_l_function) (); 129 int (*c_top_function) (); 130 int (*c_end_function) (); 131 int (*c_end_nobi_function) (); 132 int (*hani_settei_function) (); 133 void (*errorkeyin_function) (); 134 int (*call_jl_yomi_len_function) (); 135 } 136 FunctionTable; 137 138 #ifndef XJUTIL 139 /* 140 * WnnClient structure: Client's data for Wnn env. 141 */ 142 143 typedef struct _WnnClientRec *WnnClientList; 144 145 typedef struct _WnnClientRec 146 { 147 int use_server; 148 char *user_name; /* env_name */ 149 WnnEnv *cur_normal_env; 150 WnnEnv *cur_reverse_env; 151 WnnEnv *normal_env; 152 WnnEnv *reverse_env; 153 154 int two_byte_first; /* */ 155 w_char wc; /* */ 156 157 /* buffers */ 158 struct wnn_buf *b_data_; /* this means bun_data_ */ 159 ClientBuf *c_buf; /* this means c_b */ 160 161 int *b_setsu; /* pointer for bunsetsu start */ 162 int *b_setsuend; /* pointer for bunsetsu end */ 163 164 struct wnn_env **b_setsuenv; /* pointer for bunsetsu env */ 165 int *t_bnst; /* pointer for regist start */ 166 int t_bnst_cnt; /* count of regist bunsetsu */ 167 168 w_char *k_buffer; 169 int k_buffer_offset; 170 w_char *rem_buf; 171 w_char *i_buffer; /* */ 172 w_char *ret_buf; /* */ 173 174 /* key_table */ 175 MainTable *m_table; 176 177 /* History */ 178 History *bgn_hist; 179 History *end_hist; 180 History *add_hist; 181 History *cur_hist; 182 History *save_hist; 183 short w_holding; 184 short hist_cunt; 185 186 short c_bnst_; /* current bunsetsu */ 187 188 /* maximum values */ 189 short m_length; /* */ 190 191 /* cursor attribute */ 192 short c_colum; /* current column of cursor */ 193 Bool c_reverse; /* flag for reverse */ 194 Bool c_underline; /* flag for under list */ 195 Bool c_bold; /* flag for bolding */ 196 Bool c_invisible; /* flag for invisible */ 197 198 /* internal flags */ 199 short h_mode; /* mode of henkan */ 200 Bool q_flag; /* flag for quote */ 201 202 int (*command_func_stack[MAX_FUNC_STACK]) (); 203 int func_stack_count; 204 int buffer_ignored; 205 206 w_char s_yomi[512]; 207 int c_bnst_sv; 208 209 /* external flags */ 210 Bool s_ascii_char; /* flag that send ascii characters 211 when the buffer is empty */ 212 Bool s_ascii_stack; 213 Bool s_ascii_char_quote; 214 Bool h_flag; /* */ 215 216 FunctionTable *f_table; 217 /* romkan */ 218 Romkan *rk; 219 struct _XIMLangDataBase *lang_db; 220 struct _WnnClientRec *next; 221 } 222 WnnClientRec; 223 224 /* buffers */ 225 #define username (c_c->user_name) 226 #define def_servername (c_c->lang_db->host_name) 227 #define def_reverse_servername (c_c->lang_db->rev_host_name) 228 229 #define bun_data_ (c_c->b_data_) 230 #define c_b (c_c->c_buf) 231 232 #define servername (c_c->cur_normal_env->host_name) 233 #define reverse_servername (c_c->cur_reverse_env->host_name) 234 235 #define env_normal (c_c->cur_normal_env->env) 236 #define env_reverse (c_c->cur_reverse_env->env) 237 238 #define normal_sticky (c_c->cur_normal_env->sticky) 239 #define reverse_sticky (c_c->cur_reverse_env->sticky) 240 241 #define envrcname (c_c->cur_normal_env->envrc_name) 242 #define reverse_envrcname (c_c->cur_reverse_env->envrc_name) 243 244 #define env_name (c_c->cur_normal_env->env_name_str) 245 #define reverse_env_name (c_c->cur_reverse_env->env_name_str) 246 247 #define uumkeyname (c_c->lang_db->uumkey_name) 248 #define rkfilename (c_c->lang_db->rkfile_name) 249 250 #define bunsetsu (c_c->b_setsu) 251 #define bunsetsuend (c_c->b_setsuend) 252 #define bunsetsu_env (c_c->b_setsuenv) 253 #define touroku_bnst (c_c->t_bnst) 254 #define touroku_bnst_cnt (c_c->t_bnst_cnt) 255 256 #define kill_buffer (c_c->k_buffer) 257 #define kill_buffer_offset (c_c->k_buffer_offset) 258 #define remember_buf (c_c->rem_buf) 259 #define input_buffer (c_c->i_buffer) 260 #define return_buf (c_c->ret_buf) 261 262 #define touroku_comment (c_c->lang_db->t_comment) 263 264 #define main_table (c_c->m_table->m_table) 265 266 #define romkan_clear_tbl (c_c->m_table->rk_cl_tbl) 267 268 #define beginning_of_history (c_c->bgn_hist) 269 #define end_of_history (c_c->end_hist) 270 #define add_history (c_c->add_hist) 271 #define current_history (c_c->cur_hist) 272 #define wchar_holding (c_c->w_holding) 273 #define history_cunt (c_c->hist_cunt) 274 275 #define cur_bnst_ (c_c->c_bnst_) 276 277 #define maxlength (c_c->m_length) 278 #define maxchg (c_c->lang_db->m_chg) 279 #define max_history (c_c->lang_db->m_history) 280 #define maxbunsetsu (c_c->lang_db->m_bunsetsu) 281 282 #define cursor_colum (c_c->c_colum) 283 #define cursor_reverse (c_c->c_reverse) 284 #define cursor_underline (c_c->c_underline) 285 #define cursor_bold (c_c->c_bold) 286 #define cursor_invisible (c_c->c_invisible) 287 288 #define henkan_mode (c_c->h_mode) 289 #define quote_flag (c_c->q_flag) 290 291 #define ignored (c_c->buffer_ignored) 292 293 #define save_yomi (c_c->s_yomi) 294 #define cur_bnst_sv (c_c->c_bnst_sv) 295 296 #define send_ascii_char (c_c->s_ascii_char) 297 #define send_ascii_char_def (c_c->lang_db->s_ascii_char_def) 298 #define send_ascii_stack (c_c->s_ascii_stack) 299 #define send_ascii_char_quote (c_c->s_ascii_char_quote) 300 #define excellent_delete (c_c->lang_db->e_delete) 301 #define henkan_off_flag (c_c->h_flag) 302 #define henkan_on_kuten (c_c->lang_db->h_on_kuten) 303 #define henkan_off_def (c_c->lang_db->h_off_def) 304 305 #define print_out_func (c_c->f_table->print_out_function) 306 #define input_func (c_c->f_table->input_function) 307 #define call_t_redraw_move_func (c_c->f_table->call_t_redraw_move_function) 308 #define call_t_redraw_move_1_func \ 309 (c_c->f_table->call_t_redraw_move_1_function) 310 #define call_t_redraw_move_2_func \ 311 (c_c->f_table->call_t_redraw_move_2_function) 312 #define call_t_print_l_func (c_c->f_table->call_t_print_l_function) 313 #define redraw_when_chmsig_func (c_c->f_table->redraw_when_chmsig_function) 314 #define char_len_func (c_c->f_table->char_len_function) 315 #define char_q_len_func (c_c->f_table->char_q_len_function) 316 #define t_redraw_move_func (c_c->f_table->t_redraw_move_function) 317 #define t_print_l_func (c_c->f_table->t_print_l_function) 318 #define c_top_func (c_c->f_table->c_top_function) 319 #define c_end_func (c_c->f_table->c_end_function) 320 #define c_end_nobi_func (c_c->f_table->c_end_nobi_function) 321 #define hani_settei_func (c_c->f_table->hani_settei_function) 322 #define errorkeyin_func (c_c->f_table->errorkeyin_function) 323 #define call_jl_yomi_len_func (c_c->f_table->call_jl_yomi_len_function) 324 325 extern char *alloc_and_copy (); 326 extern char *Malloc (); 327 extern char *Calloc (); 328 extern char *Realloc (); 329 extern void Free (); 330 #endif /* !XJUTIL */ 331