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