Mercurial > freewnn
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Xwnmo/xwnmo/client.h Thu Dec 13 04:30:14 2007 +0900 @@ -0,0 +1,330 @@ +/* + * $Id: client.h,v 1.2 2001/06/14 18:16:14 ura Exp $ + */ + +/* + * FreeWnn is a network-extensible Kana-to-Kanji conversion system. + * This file is part of FreeWnn. + * + * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999 + * Copyright 1991 by Massachusetts Institute of Technology + * + * Author: OMRON SOFTWARE Co., Ltd. <freewnn@rd.kyoto.omronsoft.co.jp> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Emacs; see the file COPYING. If not, write to the + * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Commentary: + * + * Change log: + * + * Last modified date: 8,Feb.1999 + * + * Code: + * + */ +/* Version 4.0 + */ +/* + client.h +*/ + +#ifndef JLLIB +#include "jllib.h" +#endif /* JLLIB */ + +#include "rk_header.h" +#include "rk_multi.h" + +/* + * when mark is set + * hanten bit0,bit1: --- mark + * bit2,bit3: mark --- cursor + * bit4,bit5: cursor --- + * when mark is not set(-1) + * bit4,bit5: + * first one....hanten + * second one...under_line + */ + +typedef struct _ClientBuf +{ + w_char *buffer; /* pointer for buffer */ + short t_c_p; /* position of cursor on buffer */ + short hanten; /* see over */ + short maxlen; /* length of string on buffer */ + short buflen; /* max length of the buffer */ + short t_m_start; /* -1 : mark is NOT set + > 0 : position of mark */ + short t_b_st; /* start position of bolding */ + short t_b_end; /* end position of bolding */ + + int (*key_in_fun) (); /* */ + int (*redraw_fun) (); /* */ + int (*ctrl_code_fun) (); /* */ + + int (**key_table) (); /* table of keybinding */ + char *rk_clear_tbl; /* flag of romakn_clear */ +} +ClientBuf; + +#define BUFFER_IN_CONT -2 + +#ifndef XJUTIL +typedef struct _MainTable +{ + int (*m_table[11][256]) (); + char rk_cl_tbl[11][256]; + int re_count; +} +MainTable; + +typedef struct _History +{ + w_char *hbuffer; + struct _History *previous; + struct _History *next; + int num; +} +History; +#endif /* !XJUTIL */ + +typedef struct _WnnEnv +{ + char *host_name; /* server name */ + struct wnn_env *env; /* env */ + int sticky; /* sticky bit */ + char *envrc_name; /* envrc name */ + char env_name_str[32]; /* env name */ + struct _WnnEnv *next; +} +WnnEnv; + +typedef struct _FunctionTable +{ + char *name; +/* functions depends on lang */ + int (*print_out_function) (); + int (*input_function) (); + int (*call_t_redraw_move_function) (); + int (*call_t_redraw_move_1_function) (); + int (*call_t_redraw_move_2_function) (); + int (*call_t_print_l_function) (); + int (*redraw_when_chmsig_function) (); + int (*char_len_function) (); + int (*char_q_len_function) (); + int (*t_redraw_move_function) (); + int (*t_print_l_function) (); + int (*c_top_function) (); + int (*c_end_function) (); + int (*c_end_nobi_function) (); + int (*hani_settei_function) (); + void (*errorkeyin_function) (); + int (*call_jl_yomi_len_function) (); +} +FunctionTable; + +#ifndef XJUTIL +/* + * WnnClient structure: Client's data for Wnn env. + */ + +typedef struct _WnnClientRec *WnnClientList; + +typedef struct _WnnClientRec +{ + int use_server; + char *user_name; /* env_name */ + WnnEnv *cur_normal_env; + WnnEnv *cur_reverse_env; + WnnEnv *normal_env; + WnnEnv *reverse_env; + + int two_byte_first; /* */ + w_char wc; /* */ + +/* buffers */ + struct wnn_buf *b_data_; /* this means bun_data_ */ + ClientBuf *c_buf; /* this means c_b */ + + int *b_setsu; /* pointer for bunsetsu start */ + int *b_setsuend; /* pointer for bunsetsu end */ + + struct wnn_env **b_setsuenv; /* pointer for bunsetsu env */ + int *t_bnst; /* pointer for regist start */ + int t_bnst_cnt; /* count of regist bunsetsu */ + + w_char *k_buffer; + int k_buffer_offset; + w_char *rem_buf; + w_char *i_buffer; /* */ + w_char *ret_buf; /* */ + +/* key_table */ + MainTable *m_table; + +/* History */ + History *bgn_hist; + History *end_hist; + History *add_hist; + History *cur_hist; + History *save_hist; + short w_holding; + short hist_cunt; + + short c_bnst_; /* current bunsetsu */ + +/* maximum values */ + short m_length; /* */ + +/* cursor attribute */ + short c_colum; /* current column of cursor */ + Bool c_reverse; /* flag for reverse */ + Bool c_underline; /* flag for under list */ + Bool c_bold; /* flag for bolding */ + Bool c_invisible; /* flag for invisible */ + +/* internal flags */ + short h_mode; /* mode of henkan */ + Bool q_flag; /* flag for quote */ + + int (*command_func_stack[MAX_FUNC_STACK]) (); + int func_stack_count; + int buffer_ignored; + + w_char s_yomi[512]; + int c_bnst_sv; + +/* external flags */ + Bool s_ascii_char; /* flag that send ascii characters + when the buffer is empty */ + Bool s_ascii_stack; + Bool s_ascii_char_quote; + Bool h_flag; /* */ + + FunctionTable *f_table; +/* romkan */ + Romkan *rk; + struct _XIMLangDataBase *lang_db; + struct _WnnClientRec *next; +} +WnnClientRec; + +/* buffers */ +#define username (c_c->user_name) +#define def_servername (c_c->lang_db->host_name) +#define def_reverse_servername (c_c->lang_db->rev_host_name) + +#define bun_data_ (c_c->b_data_) +#define c_b (c_c->c_buf) + +#define servername (c_c->cur_normal_env->host_name) +#define reverse_servername (c_c->cur_reverse_env->host_name) + +#define env_normal (c_c->cur_normal_env->env) +#define env_reverse (c_c->cur_reverse_env->env) + +#define normal_sticky (c_c->cur_normal_env->sticky) +#define reverse_sticky (c_c->cur_reverse_env->sticky) + +#define envrcname (c_c->cur_normal_env->envrc_name) +#define reverse_envrcname (c_c->cur_reverse_env->envrc_name) + +#define env_name (c_c->cur_normal_env->env_name_str) +#define reverse_env_name (c_c->cur_reverse_env->env_name_str) + +#define uumkeyname (c_c->lang_db->uumkey_name) +#define rkfilename (c_c->lang_db->rkfile_name) + +#define bunsetsu (c_c->b_setsu) +#define bunsetsuend (c_c->b_setsuend) +#define bunsetsu_env (c_c->b_setsuenv) +#define touroku_bnst (c_c->t_bnst) +#define touroku_bnst_cnt (c_c->t_bnst_cnt) + +#define kill_buffer (c_c->k_buffer) +#define kill_buffer_offset (c_c->k_buffer_offset) +#define remember_buf (c_c->rem_buf) +#define input_buffer (c_c->i_buffer) +#define return_buf (c_c->ret_buf) + +#define touroku_comment (c_c->lang_db->t_comment) + +#define main_table (c_c->m_table->m_table) + +#define romkan_clear_tbl (c_c->m_table->rk_cl_tbl) + +#define beginning_of_history (c_c->bgn_hist) +#define end_of_history (c_c->end_hist) +#define add_history (c_c->add_hist) +#define current_history (c_c->cur_hist) +#define wchar_holding (c_c->w_holding) +#define history_cunt (c_c->hist_cunt) + +#define cur_bnst_ (c_c->c_bnst_) + +#define maxlength (c_c->m_length) +#define maxchg (c_c->lang_db->m_chg) +#define max_history (c_c->lang_db->m_history) +#define maxbunsetsu (c_c->lang_db->m_bunsetsu) + +#define cursor_colum (c_c->c_colum) +#define cursor_reverse (c_c->c_reverse) +#define cursor_underline (c_c->c_underline) +#define cursor_bold (c_c->c_bold) +#define cursor_invisible (c_c->c_invisible) + +#define henkan_mode (c_c->h_mode) +#define quote_flag (c_c->q_flag) + +#define ignored (c_c->buffer_ignored) + +#define save_yomi (c_c->s_yomi) +#define cur_bnst_sv (c_c->c_bnst_sv) + +#define send_ascii_char (c_c->s_ascii_char) +#define send_ascii_char_def (c_c->lang_db->s_ascii_char_def) +#define send_ascii_stack (c_c->s_ascii_stack) +#define send_ascii_char_quote (c_c->s_ascii_char_quote) +#define excellent_delete (c_c->lang_db->e_delete) +#define henkan_off_flag (c_c->h_flag) +#define henkan_on_kuten (c_c->lang_db->h_on_kuten) +#define henkan_off_def (c_c->lang_db->h_off_def) + +#define print_out_func (c_c->f_table->print_out_function) +#define input_func (c_c->f_table->input_function) +#define call_t_redraw_move_func (c_c->f_table->call_t_redraw_move_function) +#define call_t_redraw_move_1_func \ + (c_c->f_table->call_t_redraw_move_1_function) +#define call_t_redraw_move_2_func \ + (c_c->f_table->call_t_redraw_move_2_function) +#define call_t_print_l_func (c_c->f_table->call_t_print_l_function) +#define redraw_when_chmsig_func (c_c->f_table->redraw_when_chmsig_function) +#define char_len_func (c_c->f_table->char_len_function) +#define char_q_len_func (c_c->f_table->char_q_len_function) +#define t_redraw_move_func (c_c->f_table->t_redraw_move_function) +#define t_print_l_func (c_c->f_table->t_print_l_function) +#define c_top_func (c_c->f_table->c_top_function) +#define c_end_func (c_c->f_table->c_end_function) +#define c_end_nobi_func (c_c->f_table->c_end_nobi_function) +#define hani_settei_func (c_c->f_table->hani_settei_function) +#define errorkeyin_func (c_c->f_table->errorkeyin_function) +#define call_jl_yomi_len_func (c_c->f_table->call_jl_yomi_len_function) + +extern char *alloc_and_copy (); +extern char *Malloc (); +extern char *Calloc (); +extern char *Realloc (); +extern void Free (); +#endif /* !XJUTIL */