Mercurial > freewnn
comparison Xwnmo/xwnmo/client.h @ 0:bbc77ca4def5
initial import
author | Yoshiki Yazawa <yaz@cc.rim.or.jp> |
---|---|
date | Thu, 13 Dec 2007 04:30:14 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:bbc77ca4def5 |
---|---|
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 */ |