1 /* # skkinput (Simple Kana-Kanji Input)
2  * skkmain.h ---
3  * This file is part of skkinput.
4  * Copyright (C) 1997
5  * Takashi SAKAMOTO (sakamoto@yajima.kuis.kyoto-u.ac.jp)
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2, or (at your option)
10  * any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with skkinput; see the file COPYING.  If not, write to
19  * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
20  */
21 /*(����)
22  * skkinput �Υ������Τ��������ǻ��Ȥ���Ƥ�������乽¤�Ρ��ѿ����ؿ���
23  * �����ޤȤ�ƤǤ����إå��ե����롣
24  */
25 #ifndef skkinp_h
26 #define skkinp_h
27 
28 /*
29  * ����������
30  */
31 /* skkinput ���������Ƥ���Хåե������̡�*/
32 #define TEXTBUFSIZE		(512)
33 #define BUFSIZE			(TEXTBUFSIZE)
34 /* skkserv �ȤΥ��ߥ�˥��������˻Ȥ��Хåե������̡�*/
35 #define TRANSBUFSIZE		(TEXTBUFSIZE)
36 /* skkinput �������Ǥ�������ʸ������������Ѵ���Ȥ��뤳�Ȥˤʤ롣*/
37 #define TEXTMAXLEN		(TEXTBUFSIZE-1)
38 /* skkinput �� X11 ���� XLookupString ��Ȥäơ��ɤ߹���ݤΥХåե������̡�*/
39 #define STRBUFSIZE		(10)
40 /* ���޻���̾�Ѵ���Ԥ����˲�ǽ�ʥ��޻���Ĺ���κ����͡�*/
41 #define MAX_PREFIX_LENGTH	(4)
42 /* ���Ѳ�ǽ�ʺ���Υޡ����ο���*/
43 #define MAXMARKERNUM	(15)
44 
45 #define MAX_SKKINPUTS	(5)
46 
47 /*
48  * �֡��ꥢ��ߤ������ɤ��Ǥ��礦�� �Ǥ⡢X �� header file ���������Ƥ����
49  * �ǡ�����ä���ա�
50  */
51 #ifndef True
52 #define True	(1)
53 #define False	(0)
54 #endif
55 #define ENDOFTBL	(0)
56 #ifndef ERR
57 #define	ERR	(-1)
58 #endif
59 
60 /*
61  * ��� skkinput ���������֤ˤĤ��Ƶ��Ҥ�������Ǥ���
62  */
63 #define J_HENKAN_MODE_OFF	(0)
64 #define J_HENKAN_OFF		(0)
65 #define J_KANA_MODE_OFF		(0)
66 #define J_OKURIGANA_OFF		(0)
67 #define J_HENKAN_MODE_ON	(1<<3)
68 #define J_HENKAN_ON		(1<<2)
69 #define J_KANA_MODE_ON		(1<<1)
70 #define J_OKURIGANA_ON		(1)
71 
72 #define is_euc_kanji(c)		(( 0x80 & (c))? 1 : 0 )
73 
74 /*
75  * file-coding-system
76  */
77 enum {
78   CODING_SYSTEM_IS_EUC = 0, CODING_SYSTEM_IS_JIS,
79 } ;
80 
81 /*
82  * �������ѿ��η����Ѱդ��롣�ޤ�����¤�Τ�����Ƥ��ȤǤ��͡�
83  */
84 /* ����(skkserv)����η�̤��Ǽ���빽¤��..list */
85 typedef struct _SkkinpSearchVector {
86   unsigned char text[ TEXTBUFSIZE ] ;
87   int used ;
88   struct _SkkinpSearchVector *next ;
89 } SkkinpSearchVector ;
90 
91 /* �������������̤�����䤹�����뤿��ι�¤��...index */
92 typedef struct _VectorIndex {
93   SkkinpSearchVector *node ;	/* ���ߤθ��䡣*/
94   int position ;
95   int length ;		/* �����Ĺ����*/
96   struct _VectorIndex *next ;	/* ���θ��䡣*/
97   struct _VectorIndex *prev ;	/* ���θ��䡣*/
98 } VectorIndex ;
99 
100 /* elisp �ˤ���ޡ������Ѥι�¤�Ρ�*/
101 struct Marker {
102   int *pos ;
103   int cf ;
104 } ;
105 
106 /* �Ѵ����Ѥ������Ĥ��Ф����¸�ߤ��������¤�Ρ�(class?) */
107 struct SKKInputNode {
108   /* int number ; */
109   /*
110    * ��ʬ������Ѥ�����ʬ��
111    */
112   int prev_cx, prev_cy ;
113   /* ����Υ�����ɥ��κ���κǽ��ʸ���ϥƥ����Ȥβ��Х����ܤ���� *
114    * ���줿�Τ���*/
115   int prev_start_pos ;
116   /*
117    * ���Ϥδ������Ѥ�������ʬ��
118    */
119   /* �����Ѥ�ʸ������Ǽ����Хåե���*/
120   unsigned char textbuffer[ TEXTBUFSIZE ] ;
121   unsigned char mtextbuffer[ TEXTBUFSIZE ] ;
122   /* �Ѵ��Τ���� j-prefix �� ���줬 rom-kana-rule-list �ˤ������� *
123    * �ܤˤ�������֤�ɽ���ˤʤ롣����������������ä����ˤϴ����Ǥ�*
124    * �ʤ��Ƥ���Ƥ��ޤä�����ɡĺ��٤Ϥɤ�����? */
125   unsigned char j_prefix[ TEXTBUFSIZE ] ;
126   /* �Ѵ��оݤȤʤ�ʸ������ݴɤ���Хåե��ʤΤǤ��롣*/
127   unsigned char j_henkan_key[ TEXTBUFSIZE ] ;
128   unsigned char j_henkan_key2[ TEXTBUFSIZE ] ;
129   unsigned char j_search_key[ TEXTBUFSIZE ] ;
130   unsigned char j_num_list[ TEXTBUFSIZE ] ;
131 
132   /* (;_;) ������餱�Ĥ��ɤ��ġ�*/
133 
134   /* ��������κ�ɸ��*/
135   int cur_pos ;
136   int cur_pos2 ;
137   int cur_pos3 ;
138   int cur_pos_backup ;
139   /* ��������ΰ�ư��ǽ�ʺǾ����͡�*/
140   int cur_pos_top ;
141   /* �ޡ������֡�*/
142   int mark_pos ;
143   /* �������뤬���뤫�ݤ�������Ū�˥������뤬�����꤬����������� *
144    * �뤳�Ȥ�����롣*/
145   int cur_exist ;
146   /* �Ѵ��⡼�ɤ˰ܹԤ��Ƥ��뤫�ɤ�����*/
147   int j_henkan_mode ;
148   /* �Ѵ��椫�ݤ�( �Ĥޤ�ϡ������ɤ�����)��*/
149   int j_henkan_on ;
150   /* ��̾�����椫�ݤ���*/
151   int j_kana_mode ;
152   /* ���겾̾�������椫�ݤ���*/
153   int j_okurigana_mode ;
154   /* ��̾���Ҳ�̾����*/
155   int j_katakana_mode ;
156   /* ��̾���Ϥγ��ϰ��֡�*/
157   int j_kana_start_point ;
158   /* �Ѵ�ʸ����γ��ϰ��֡�*/
159   int j_henkan_start_point ;
160   /* �Ѵ�ʸ����ν�λ���֡�*/
161   int j_henkan_end_point ;
162   /* ���겾̾�γ��ϰ��֡�*/
163   int j_okurigana_start_point ;
164   int j_okurigana_offset ;
165   /* ���겾̾��*/
166   int j_okuri_chara ;
167   /* abbrev-mode ���ɤ�����*/
168   int j_abbrev ;
169   /* �������ϥ⡼�ɤ��ɤ�����*/
170   int j_zenkaku ;
171   /* ��̾���ϥ⡼�ɤ��ɤ�����*/
172   int j_mode ;
173 
174   /* ����ޤǤ��Ѵ����������*/
175   int j_henkan_count ;
176   /* �Ѵ�ư���������椫�� */
177   int j_henkan_show_candidate_mode ;
178   /* �ߥ˥Хåե������Τ���˺��줿�Τ��Ȥ����������롣*/
179   int j_minibuff_usage ;
180   /* ľ��ʸ�����ϥ⡼�ɤǤ��ä����Ȥ�������Ƥ��롣*/
181   int j_input_by_code_or_menu_mode ;
182   int j_input_by_code_or_menu_point ;
183   int j_input_by_code_current_code ;
184   /*
185    * Elisp �ˤ���ޡ������Τ�������ꡣ
186    */
187   /* ���ߤΥޡ������ΰ��֡�*/
188   struct Marker markers[ MAXMARKERNUM ] ;
189   /* �ޡ������λ��Ѿ�����*/
190   int marker_usage ;
191 
192   /* search �����ѡ�*/
193   SkkinpSearchVector *j_henkan_vector_top ;
194   VectorIndex *j_henkan_vector_index_top, *j_current_henkan_vector_index ;
195   int j_henkan_vector_index_length ;
196 
197   /* completion �����ѡ�*/
198   SkkinpSearchVector *j_completion_vector_top ;
199   VectorIndex *j_completion_vector_index_top,
200     *j_current_completion_vector_index ;
201   int j_completion_mode ;
202 
203   /* mini-buffer �����ѡ�*/
204   struct SKKInputNode *minibuffer ;
205   struct SKKInputNode *parentbuffer ;
206 } ;
207 
208 struct SKKTangoInfo {
209   int tangotype ;
210   char *henkankey ;
211   char *string ;
212   VectorIndex *vector ;
213   VectorIndex **vectortop ;
214   int okuri ;
215 } ;
216 
217 struct skk_rom_kana_rule {
218   unsigned char *state ;
219   unsigned char *next ;
220   unsigned char *houtput ;
221   unsigned char *koutput ;
222 } ;
223 
224 struct chara_string_pair {
225   unsigned char chara ;
226   unsigned char *string ;
227 } ;
228 
229 #endif
230