Fix memory leak issues
[platform/core/uifw/anthy.git] / anthy / wtype.h
1 /*
2  * ÉÊ»ì¤Î·¿ wtype_t ¤ò°·¤¦
3  *
4  * Ã±¸ì¤ÎÉÊ»ì¤ò°·¤¦
5  * Ã±¸ì¤Ï¼¡¤ÎÍ×ÁǤò»ý¤Ä¡£
6  * *ÉÊ»ì
7  * *Éʻ쥵¥Ö¥¿¥¤¥×
8  * *Éʻ쥵¥Ö¥µ¥Ö¥¿¥¤¥×
9  * *³èÍÑ¥¯¥é¥¹(CC)
10  * *³èÍÑ·Á
11  * *¼«Î©¸ì¤«¤É¤¦¤«¤Î¥Õ¥é¥°
12  * wtype_t¤Ï¾åµ­¤Î¾ðÊó¤ò¤¹¤Ù¤Æ´Þ¤à¡£
13  *
14  * ³ÆÍ×ÁǤξܺ٤ˤĤ¤¤Æ¤Ï doc/POS¤ò»²¾È¤¹¤Ù¤·
15  */
16 #ifndef _wtype_h_included_
17 #define _wtype_h_included_
18
19 /*ÉÊ»ì Part Of Speech */
20 #define POS_NONE 0
21 #define POS_NOUN 1
22 #define POS_PRT 2
23 #define POS_XV 3
24 #define POS_V 4
25 #define POS_A 5
26 #define POS_AJV 6
27 #define POS_AV 7
28 #define POS_ME 8
29 #define POS_CONJ 9
30 #define POS_IJ 10
31 #define POS_PRE 11
32 #define POS_SUC 12
33 #define POS_TANKANJI 13
34 #define POS_N2T 14
35 #define POS_D2KY 15
36 #define POS_NUMBER 16
37 #define POS_INVAL 17
38 #define POS_OPEN 18
39 #define POS_CLOSE 19
40
41 /* ³èÍÑ·Á Conjugate Type */
42 #define CT_NONE 0
43 #define CT_SYUSI 1
44 #define CT_MIZEN 2
45 #define CT_RENYOU 3
46 #define CT_RENTAI 4
47 #define CT_KATEI 5
48 #define CT_MEIREI 6
49 #define CT_HEAD 7
50 #define CT_MEISIKA 8
51
52 /* ³èÍÑ¥¯¥é¥¹ Conjugate Class */
53 #define CC_NONE 0
54 #define CC_K5 1
55 #define CC_C5 2
56 #define CC_G5 3
57 #define CC_S5 4
58 #define CC_T5 5
59 #define CC_N5 6
60 #define CC_M5 7
61 #define CC_B5 8
62 #define CC_R5 9
63 #define CC_L5 10
64 #define CC_W5 11
65 #define CC_U5 12
66 #define CC_KS1 13
67 #define CC_RV 14
68 #define CC_KV 15
69 #define CC_SV 16
70 #define CC_ZV 17
71 #define CC_A 18
72 #define CC_A_U 19
73 #define CC_AJV 20
74 #define CC_SRV 21
75
76 /* ÉûÉÊ»ì Class Of Speech */
77 #define COS_NONE 0
78 /* ÃÏ̾ */
79 #define COS_CN 1
80 /* ¿ô»ì */
81 #define COS_NN 2
82 /* ¿Í̾ */
83 #define COS_JN 3
84 /* ÃÄÂÎ̾ */
85 #define COS_KK 4
86 /* °ìÈÌÀÜƬ¼­¡¦ÀÜÈø¼­ */
87 #define COS_SUFFIX 5
88 /* ¥µÊѤÎÀÜÈø¼­ */
89 #define COS_SVSUFFIX 6
90 /**/
91
92 /* Éû¡¹ÉÊ»ì Sub Class Of Speech*/
93 #define SCOS_NONE 0
94 #define SCOS_FAMNAME 1
95 #define SCOS_FSTNAME 2
96 #define SCOS_T0 10
97 #define SCOS_T2 12
98 #define SCOS_T3 13
99 #define SCOS_T4 14
100 #define SCOS_T5 15
101 #define SCOS_T7 17
102 #define SCOS_T8 18
103 #define SCOS_T9 19
104 #define SCOS_T10 20
105 #define SCOS_T12 22
106 #define SCOS_T13 23
107 #define SCOS_T14 24
108 #define SCOS_T15 25
109 #define SCOS_T17 27
110 #define SCOS_T18 28
111 #define SCOS_T19 29
112 #define SCOS_T20 30
113 #define SCOS_T22 32
114 #define SCOS_T23 33
115 #define SCOS_T24 34
116 #define SCOS_T25 35
117 #define SCOS_T27 37
118 #define SCOS_T28 38
119 #define SCOS_T29 39
120 #define SCOS_T30 40
121 #define SCOS_T32 42
122 #define SCOS_T33 43
123 #define SCOS_T34 44
124 #define SCOS_T35 45
125 #define SCOS_T37 47
126 #define SCOS_T38 48
127 #define SCOS_T39 49
128 #define SCOS_T40 50
129 #define SCOS_F0 60
130 #define SCOS_F1 61
131 #define SCOS_F2 62
132 #define SCOS_F3 63
133 #define SCOS_F4 64
134 #define SCOS_F5 65
135 #define SCOS_F6 66
136 #define SCOS_F7 67
137 #define SCOS_F8 68
138 #define SCOS_F9 69
139 #define SCOS_F10 70
140 #define SCOS_F11 71
141 #define SCOS_F12 72
142 #define SCOS_F13 73
143 #define SCOS_F14 74
144 #define SCOS_A0 80
145 #define SCOS_A1 81
146 #define SCOS_N1 90
147 #define SCOS_N10 91
148 #define SCOS_N100 92
149 #define SCOS_N1000 93
150 #define SCOS_N10000 94
151
152 /* FLAGS */
153 #define WF_NONE 0
154 /* ¤³¤ÎÆ°»ì¤ÏÏ¢Âλ줬̾»ì²½¤¹¤ë */
155 #define WF_MEISI 1
156 /* ¥µÊÑ̾»ì */
157 #define WF_SV 2
158 /* ¼«Î©¸ì¡¢Ê¸Àá¤Î¥³¥¢¤È¤Ê¤ë */
159 #define WF_INDEP 4
160 /* ·ÁÍÆÆ°»ì */
161 #define WF_AJV 8
162
163 /* wtype_tÃæ¤Î¥ª¥Õ¥»¥Ã¥È */
164 #define WT_POS 0
165 #define WT_COS 1
166 #define WT_SCOS 2
167 #define WT_CC 3
168 #define WT_CT 4
169 #define WT_FLAGS 5
170
171 /* ³Æbit field¤ÎÉý */
172 #define POS_BITS 5
173 #define COS_BITS 4
174 #define SCOS_BITS 7
175 #define CC_BITS 5
176 #define CT_BITS 4
177 #define WF_BITS 4
178 /* 29bits */
179
180 /** ÉÊ»ì */
181 struct wtype{
182   unsigned int pos  : POS_BITS;
183   unsigned int cos  : COS_BITS;
184   unsigned int scos : SCOS_BITS;
185   unsigned int cc   : CC_BITS;
186   unsigned int ct   : CT_BITS;
187   unsigned int wf   : WF_BITS;
188 };
189
190 typedef struct wtype wtype_t;
191
192 /** anthy_wtype_include(̾»ì¡¢¿Í̾)¤Ï¿¿¡¢µÕ¤Ïµ¶ */
193 int anthy_wtype_include(wtype_t haystack, wtype_t needle);
194
195 /* Æó¤Ä¤ÎÉʻ줬´°Á´¤Ë°ìÃפ¹¤ë¤«¤É¤¦¤«¤ò¸«¤ë */
196 int anthy_wtype_equal(wtype_t lhs, wtype_t rhs);
197
198 void anthy_print_wtype(wtype_t w);
199 /* ¼­½ñ¥Õ¥¡¥¤¥ëÃæ¤Î̾Á°¤«¤éÉÊ»ì¤òÆÀ¤ë(´Ø¿ô̾¤¬°­¤¤) */
200 const char *anthy_type_to_wtype(const char *name, wtype_t *w);
201 /* ÉÊ»ì¤Î̾Á°¤«¤éÉÊ»ì¤òÆÀ¤ë */
202 wtype_t anthy_init_wtype_by_name(const char *str);
203
204 int anthy_wtype_get_pos(wtype_t w);
205 int anthy_wtype_get_cc(wtype_t w);
206 int anthy_wtype_get_ct(wtype_t w);
207 int anthy_wtype_get_cos(wtype_t w);
208 int anthy_wtype_get_scos(wtype_t w);
209 int anthy_wtype_get_wf(wtype_t w);
210
211 /* ¥Õ¥é¥°¤Î¼èÆÀ */
212 int anthy_wtype_get_indep(wtype_t w);
213 int anthy_wtype_get_sv(wtype_t w);
214 int anthy_wtype_get_meisi(wtype_t w);
215 int anthy_wtype_get_ajv(wtype_t w);
216
217 wtype_t anthy_get_wtype(int pos, int cos, int scos, int cc, int ct, int wf);
218 wtype_t anthy_get_wtype_with_ct(wtype_t base, int ct);
219
220 void anthy_wtype_set_pos(wtype_t *w, int pos);
221 void anthy_wtype_set_cc(wtype_t *w, int cc);
222 void anthy_wtype_set_ct(wtype_t *w, int ct);
223 void anthy_wtype_set_cos(wtype_t *w, int cs);
224 void anthy_wtype_set_scos(wtype_t *w, int scos);
225 void anthy_wtype_set_dep(wtype_t *w, int isDep);
226
227 void anthy_init_wtypes(void);
228
229 extern wtype_t anthy_wt_all;/* ¤¹¤Ù¤Æ¤Ë¥Þ¥Ã¥Á¤¹¤ë¼«Î©¸ì */
230 extern wtype_t anthy_wt_none;/* ÉÊ»ì̵¤·POS_INVAL */
231
232 #endif