1 /* # skkinput (Simple Kana-Kanji Input)
2  *
3  * This file is part of skkinput.
4  * Copyright (C) 2002
5  * Takashi SAKAMOTO (PXG01715@nifty.ne.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 #if !defined (ltype_h)
22 #define	ltype_h
23 
24 #include "local.h"
25 #include "lispmgr.h"
26 #include "lbind.h"
27 #include "lbuffer.h"
28 #include "lmarker.h"
29 #include "lframe.h"
30 #include "lwindow.h"
31 
32 /*
33  *	����ƥ��ƥ��μ���(type-of ���֤���)
34  */
35 typedef enum {
36 	LISPENTITY_BAD		= -1,	/* ������ entity */
37 	LISPENTITY_INTEGER	= 0,	/* ������*/
38 	LISPENTITY_FLOAT,
39 	LISPENTITY_CONSCELL,
40 	LISPENTITY_VECTOR,
41 	LISPENTITY_STRING,
42 	LISPENTITY_SYMBOL,
43 	LISPENTITY_MARKER,
44 	LISPENTITY_BUFFER,
45 	LISPENTITY_WINDOW,
46 	LISPENTITY_FRAME,
47 	LISPENTITY_SUBR,
48 	LISPENTITY_IMCLIENT,
49 	LISPENTITY_MUTEX,
50 	LISPENTITY_XEVENT,
51 	LISPENTITY_EMPTY,
52 	LISPENTITY_VOID,
53 	LISPENTITY_BOOLVECTOR,	/* bool vector(bit vector) (̤����) */
54 	LISPENTITY_CHARTABLE,	/* char-table (��) (̤����) */
55 	MAX_LISPENTITY,
56 }	LISPENTITYTYPE ;
57 
58 /*	̤������ʬ�ϴޤޤʤ��褦�����ꡣ*/
59 #define	MAX_LISPENTITY_TYPE	(LISPENTITY_VOID + 1)
60 
61 enum {
62 	LISPFRAMETYPE_NORMAL	= 0,
63 	LISPFRAMETYPE_ROOTWINDOW,
64 	LISPFRAMETYPE_OVERTHESPOT,
65 	LISPFRAMETYPE_OFFTHESPOT,
66 } ;
67 
68 /*
69  *	����ƥ��ƥ��Υǡ�����¤��
70  *	���������������������������� + 0
71  *	��struct tagTLispEntity   ��
72  *	���������������������������� + sizeof (struct tagTLispEntity)
73  *	���� Entity ��ͭ�Υǡ���  ��
74  *	����������������������������
75  */
76 struct tagTLispEntity {
77 	LISPENTITYTYPE			m_iType ;
78 	long					m_lReferCount ;	/* ���ȥ�������*/
79 	int						m_iMarker ;
80 	struct tagTLispEntity*	m_pLeft ;
81 	struct tagTLispEntity*	m_pRight ;
82 } ;
83 
84 struct tagTLispConscell {
85 	struct tagTLispEntity*	m_pCar ;
86 	struct tagTLispEntity*	m_pCdr ;
87 } ;
88 
89 struct tagTLispVector {
90 	int						m_nElement ;
91 	struct tagTLispEntity*	m_apElement [1] ;
92 } ;
93 
94 struct tagTLispString {
95 	int						m_nLength ;
96 	Char					m_achString [1] ;
97 } ;
98 
99 struct tagTLispSymbol {
100 	struct tagTLispEntity*	m_pParent ;
101 	int						m_nLength ;
102 	Char					m_achName [1] ;
103 } ;
104 
105 struct tagTLispBoolVector {
106 	int						m_nLength ;
107 	unsigned int			m_auBitArray [1] ;
108 } ;
109 
110 struct tagTLispMutex {
111 	unsigned int			m_uLockCount ;
112 	void*					m_pOwner ;
113 	int						m_nLength ;
114 	Char					m_achString [1] ;
115 } ;
116 
117 struct tagTLispXEventInt {
118 	struct tagTLispEntity*	m_pEntValue ;
119 	XEvent					m_evX ;
120 } ;
121 
122 struct tagLMCMDINFO ;
123 
124 typedef struct tagTLispConscell		TLispConscell ;
125 typedef struct tagTLispVector		TLispVector ;
126 typedef struct tagTLispString		TLispString ;
127 typedef struct tagTLispSymbol		TLispSymbol ;
128 typedef struct tagTLispEntity		TLispEntity ;
129 typedef struct tagTLispSubr			TLispSubr ;
130 typedef struct tagTLispMutex		TLispMutex ;
131 typedef struct tagTLispXEventInt	TLispXEventInt ;
132 
133 #define	TLispEntity_GetValue(ptr)	((struct tagTLispEntity *)(ptr) + 1)
134 
135 #endif
136 
137