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