1 /* m17n.h -- header file for the SHELL API of the m17n library.
2 Copyright (C) 2003, 2004
3 National Institute of Advanced Industrial Science and Technology (AIST)
4 Registration Number H15PRO112
6 This file is part of the m17n library.
8 The m17n library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Lesser General Public License
10 as published by the Free Software Foundation; either version 2.1 of
11 the License, or (at your option) any later version.
13 The m17n library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
18 You should have received a copy of the GNU Lesser General Public
19 License along with the m17n library; if not, write to the Free
20 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
31 #include <m17n-core.h>
39 #if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
40 extern void m17n_init (void);
42 #define M17N_INIT() m17n_init ()
44 extern void m17n_fini (void);
46 #define M17N_FINI() m17n_fini ()
49 /***en @defgroup m17nShell SHELL API */
50 /***ja @defgroup m17nShell ¥·¥§¥ë API */
54 * (11) Functions related to the m17n database
58 /*** @ingroup m17nShell */
59 /***en @defgroup m17nDatabase Database */
60 /***ja @defgroup m17nDatabase ¥Ç¡¼¥¿¥Ù¡¼¥¹ */
63 /* Directory of an application specific databases. */
64 extern char *mdatabase_dir;
67 @ingroup m17nDatabase */
69 @brief Type of database.
71 The type #MDatabase is for a database object. Its internal
72 structure is concealed from an application program. */
74 @brief ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î·¿Àë¸À.
76 #MDatabase ·¿¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¥ª¥Ö¥¸¥§¥¯¥ÈÍѤι½Â¤ÂΤǤ¢¤ë¡£
77 ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£
80 typedef struct MDatabase MDatabase;
84 /* Look for a data. */
85 extern MDatabase *mdatabase_find (MSymbol tag1, MSymbol tag2,
86 MSymbol tag3, MSymbol tag4);
88 extern MPlist *mdatabase_list (MSymbol tag0, MSymbol tag1,
89 MSymbol tag2, MSymbol tag3);
92 void *mdatabase_load (MDatabase *mdb);
94 /* Get tags of a data. */
95 extern MSymbol *mdatabase_tag (MDatabase *mdb);
98 extern MDatabase *mdatabase_define (MSymbol tag1, MSymbol tag2,
99 MSymbol tag3, MSymbol tag4,
100 void *(*loader) (MSymbol *, void *),
104 /* (S2) Charset staffs */
107 /*** @ingroup m17nShell */
108 /***en @defgroup m17nCharset Charset */
109 /***ja @defgroup m17nCharset ʸ»ú¥»¥Ã¥È */
112 #if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
113 #define MCHAR_INVALID_CODE 0xFFFFFFFF
116 /* Predefined charsets */
117 extern MSymbol Mcharset_ascii;
118 extern MSymbol Mcharset_iso_8859_1;
119 extern MSymbol Mcharset_unicode;
120 extern MSymbol Mcharset_m17n;
121 extern MSymbol Mcharset_binary;
123 /* Predefined keys for mchar_define_charset (). */
124 extern MSymbol Mmethod;
125 extern MSymbol Mdimension;
126 extern MSymbol Mmin_range;
127 extern MSymbol Mmax_range;
128 extern MSymbol Mmin_code;
129 extern MSymbol Mmax_code;
130 extern MSymbol Mascii_compatible;
131 extern MSymbol Mfinal_byte;
132 extern MSymbol Mrevision;
133 extern MSymbol Mmin_char;
134 extern MSymbol Mmapfile;
135 extern MSymbol Mparents;
136 extern MSymbol Msubset_offset;
137 extern MSymbol Mdefine_coding;
138 extern MSymbol Maliases;
140 /* Methods of a charset. */
141 extern MSymbol Moffset;
143 extern MSymbol Munify;
144 extern MSymbol Msubset;
145 extern MSymbol Msuperset;
148 extern MSymbol Mcharset;
150 extern MSymbol mchar_define_charset (const char *name, MPlist *plist);
152 extern MSymbol mchar_resolve_charset (MSymbol symbol);
154 extern int mchar_list_charset (MSymbol **symbols);
156 extern int mchar_decode (MSymbol charset_name, unsigned code);
158 extern unsigned mchar_encode (MSymbol charset_name, int c);
160 extern int mchar_map_charset (MSymbol charset_name,
161 void (*func) (int from, int to, void *arg),
166 /* (S3) code conversion */
168 /*** @ingroup m17nShell */
169 /***en @defgroup m17nConv Code Conversion */
170 /***ja @defgroup m17nConv ¥³¡¼¥ÉÊÑ´¹ */
173 /* Predefined coding systems */
174 extern MSymbol Mcoding_us_ascii;
175 extern MSymbol Mcoding_iso_8859_1;
176 extern MSymbol Mcoding_utf_8;
177 extern MSymbol Mcoding_utf_8_full;
178 extern MSymbol Mcoding_utf_16;
179 extern MSymbol Mcoding_utf_16be;
180 extern MSymbol Mcoding_utf_16le;
181 extern MSymbol Mcoding_utf_32;
182 extern MSymbol Mcoding_utf_32be;
183 extern MSymbol Mcoding_utf_32le;
184 extern MSymbol Mcoding_sjis;
186 /* Parameter keys for mconv_define_coding (). */
187 extern MSymbol Mtype;
188 extern MSymbol Mcharsets;
189 extern MSymbol Mflags;
190 extern MSymbol Mdesignation;
191 extern MSymbol Minvocation;
192 extern MSymbol Mcode_unit;
194 extern MSymbol Mlittle_endian;
196 /* Symbols representing coding system type. */
198 extern MSymbol Miso_2022;
200 /* Symbols appearing in the value of Mfrag parameter. */
201 extern MSymbol Mreset_at_eol;
202 extern MSymbol Mreset_at_cntl;
203 extern MSymbol Meight_bit;
204 extern MSymbol Mlong_form;
205 extern MSymbol Mdesignation_g0;
206 extern MSymbol Mdesignation_g1;
207 extern MSymbol Mdesignation_ctext;
208 extern MSymbol Mdesignation_ctext_ext;
209 extern MSymbol Mlocking_shift;
210 extern MSymbol Msingle_shift;
211 extern MSymbol Msingle_shift_7;
212 extern MSymbol Meuc_tw_shift;
213 extern MSymbol Miso_6429;
214 extern MSymbol Mrevision_number;
215 extern MSymbol Mfull_support;
218 extern MSymbol Mcoding;
219 extern MSymbol Mmaybe;
221 /*** @ingroup m17nConv */
223 @brief Codes that represent the result of code conversion.
225 One of these values is set in @c MConverter-\>result. */
228 @brief ¥³¡¼¥ÉÊÑ´¹¤Î·ë²Ì¤ò¼¨¤¹¥³¡¼¥É.
230 ¤³¤ì¤é¤ÎÃͤΤ¦¤Á°ì¤Ä¤¬ @c MConverter-\>result ¤ËÀßÄꤵ¤ì¤ë¡£ */
232 enum MConversionResult
234 /***en Code conversion is successful. */
235 /***ja ¥³¡¼¥ÉÊÑ´¹¤ÏÀ®¸ù. */
236 MCONVERSION_RESULT_SUCCESS,
238 /***en On decoding, the source contains an invalid byte. */
239 /***ja ¥Ç¥³¡¼¥É»þ¡¢¥½¡¼¥¹¤ËÉÔÀµ¤Ê¥Ð¥¤¥È¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë. */
240 MCONVERSION_RESULT_INVALID_BYTE,
242 /***en On encoding, the source contains a character that cannot be
243 encoded by the specified coding system. */
244 /***ja ¥¨¥ó¥³¡¼¥É»þ¡¢»ØÄê¤Î¥³¡¼¥É·Ï¤Ç¥¨¥ó¥³¡¼¥É¤Ç¤¤Ê¤¤Ê¸»ú¤¬¥½¡¼¥¹¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë. */
245 MCONVERSION_RESULT_INVALID_CHAR,
247 /***en On decoding, the source ends with an incomplete byte sequence. */
248 /***ja ¥Ç¥³¡¼¥É»þ¡¢ÉÔ´°Á´¤Ê¥Ð¥¤¥ÈÎó¤Ç¥½¡¼¥¹¤¬½ª¤ï¤Ã¤Æ¤¤¤ë¡£*/
249 MCONVERSION_RESULT_INSUFFICIENT_SRC,
251 /***en On encoding, the destination is too short to store the result. */
252 /***ja ¥¨¥ó¥³¡¼¥É»þ¡¢·ë²Ì¤ò³ÊǼ¤¹¤ëÎΰ褬û¤«¤¹¤®¤ë¡£ */
253 MCONVERSION_RESULT_INSUFFICIENT_DST,
255 /***en An I/O error occurred in the conversion. */
256 /***ja ¥³¡¼¥ÉÊÑ´¹Ãæ¤Ë I/O ¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¡£ */
257 MCONVERSION_RESULT_IO_ERROR
261 /*** @ingroup m17nConv */
263 @brief Structure to be used in code conversion.
265 Structure to be used in code conversion. The first three members
266 are to control the conversion. */
269 @brief ¥³¡¼¥ÉÊÑ´¹¤ËÍѤ¤¤é¤ì¤ë¹½Â¤ÂÎ.
271 ¥³¡¼¥ÉÊÑ´¹¤ËÍѤ¤¤é¤ì¤ë¹½Â¤ÂΡ£ºÇ½é¤Î£³¤Ä¤Î¥á¥ó¥Ð¤ÏÊÑ´¹¤òÀ©¸æ¤¹¤ë¡£
273 @latexonly \IPAlabel{MConverter} @endlatexonly
279 Set the value to nonzero if the conversion should be lenient.
280 By default, the conversion is strict (i.e. not lenient).
282 If the conversion is strict, the converter stops at the first
283 invalid byte (on decoding) or at the first character not
284 supported by the coding system (on encoding). If this happens,
285 @c MConverter-\>result is set to @c
286 MCONVERSION_RESULT_INVALID_BYTE or @c
287 MCONVERSION_RESULT_INVALID_CHAR accordingly.
289 If the conversion is lenient, on decoding, an invalid byte is
290 kept per se, and on encoding, an invalid character is replaced
291 with "<U+XXXX>" (if the character is a Unicode character) or
292 with "<M+XXXXXX>" (otherwise). */
295 ¸·Ì©¤ÊÊÑ´¹¤¬É¬ÍפǤʤ¤¾ì¹ç¤ËÃͤò 0 °Ê³°¤Ë¤¹¤ë¡£
296 ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢ÊÑ´¹¤Ï¸·Ì©¤Ç¤¢¤ë¡£
298 ÊÑ´¹¤¬¸·Ì©¤È¤Ï¡¢¥Ç¥³¡¼¥É¤ÎºÝ¤Ë¤ÏºÇ½é¤ÎÉÔÀµ¤Ê¥Ð¥¤¥È¤Ç¥³¥ó¥Ð¡¼¥¿¤¬»ß¤Þ¤ë¤³¤È¡¢
299 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤ÏÊÑ´¹¤µ¤ì¤ë¥³¡¼¥É·Ï¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Ê¤¤ºÇ½é¤Îʸ»ú¤Ç¥³¥ó¥Ð¡¼¥¿¤¬»ß¤Þ¤ë¤³¤È¤ò»Ø¤¹¡£
300 ¤³¤ì¤é¤Î¾ì¹ç¡¢@c MConverter-\>result ¤Ï¤½¤ì¤¾¤ì @c
301 MCONVERSION_RESULT_INVALID_BYTE ¤«@c
302 MCONVERSION_RESULT_INVALID_CHAR ¤È¤Ê¤ë¡£
304 ÊÑ´¹¤¬¸·Ì©¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¥Ç¥³¡¼¥É¤ÎºÝ¤ÎÉÔÀµ¤Ê¥Ð¥¤¥È¤Ï¤½¤Î¥Ð¥¤¥È¤Î¤Þ¤Þ»Ä¤ë¡£
305 ¤Þ¤¿¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï¡¢ÉÔÀµ¤Êʸ»ú¤¬ Unicode ʸ»ú¤Î¾ì¹ç¤Ë¤Ï "<U+XXXX>"
306 ¤Ë¡¢¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï "<M+XXXXXX>" ¤ËÃÖ¤´¹¤¨¤é¤ì¤ë¡£ */
311 Set the value to nonzero before decoding or encoding the last
312 block of the byte sequence or the character sequence
313 respectively. The value influences the conversion as below.
315 On decoding, in the case that the last few bytes are too short
316 to form a valid byte sequence:
318 If the value is nonzero, the conversion terminates by error
319 (MCONVERSION_RESULT_INVALID_BYTE) at the first byte of the
322 If the value is zero, the conversion terminates successfully.
323 Those bytes are stored in the converter as carryover and are
324 prepended to the byte sequence of the further conversion.
326 On encoding, in the case that the coding system is context
329 If the value is nonzero, the conversion may produce a byte
330 sequence at the end to reset the context to the initial state
331 even if the source characters are zero.
333 If the value is zero, the conversion never produce such a byte
334 sequence at the end. */
338 ¥Ð¥¤¥ÈÎó¤Î½ªÃ¼¤Î¥Ö¥í¥Ã¥¯¤ò¥Ç¥³¡¼¥É¤¹¤ëºÝ¡¢¤Þ¤¿¤Ïʸ»úÎó¤Î½ªÃ¼¤Î¥Ö¥í¥Ã¥¯¤ò¥¨¥ó¥³¡¼¥É¤¹¤ëºÝ¤Ï¡¢Ãͤò
339 0 °Ê³°¤Ë¤¹¤ë¡£¤³¤ÎÃͤϰʲ¼¤Î¤è¤¦¤ËÊÑ´¹¤Ë±Æ¶Á¤¹¤ë¡£
341 ¥Ç¥³¡¼¥Ç¥£¥ó¥°¤ÎºÝ¤ËºÇ¸å¤Î¿ô¥Ð¥¤¥È¤¬Àµ¤·¤¤¥Ð¥¤¥È¥·¡¼¥¯¥¨¥ó¥¹¤ò·ÁÀ®¤¹¤ë¤Ë¤Ïû¤¹¤®¤ë¾ì¹ç¡§
343 Ãͤ¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÊÑ´¹¤Ï¤½¤Î¥·¡¼¥¯¥¨¥ó¥¹¤ÎºÇ½é¤Î¥Ð¥¤¥È¤Ë¤ª¤¤¤Æ¡¢¥¨¥é¡¼
344 (MCONVERSION_RESULT_INVALID_BYTE) ¤Ç½ª¤ë¡£
346 Ãͤ¬ 0 ¤Ê¤é¤Ð¡¢ÊÑ´¹¤ÏÀ®¸ù¤·¤Æ½ª¤ë¡£
347 ÌäÂê¤Î¿ô¥Ð¥¤¥È¤Ï¥¥ã¥ê¡¼¥ª¡¼¥Ð¤È¤·¤Æ¥³¥ó¥Ð¡¼¥¿¤ËÊÝ»ý¤µ¤ì¡¢ÊÑ´¹¤Î³¤¤ò¹Ô¤¦ºÝ¤ËÊÑ´¹¤¹¤ë¥Ð¥¤¥ÈÎó¤ÎÁ°¤ËÉÕ¤±¤é¤ì¤ë¡£
349 ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎºÝ¤Ë¥³¡¼¥É·Ï¤¬Ê¸Ì®°Í¸¤Î¾ì¹ç¡¢
351 Ãͤ¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥³¥ó¥Æ¥¥¹¥È¤òºÇ½é¤ËÌ᤹¤¿¤á¤Î¥Ð¥¤¥ÈÎ󤬥½¡¼¥¹¤Îʸ»ú¤È¤«¤«¤ï¤ê¤Ê¤¯ÊÑ´¹¤Î·ë²ÌÀ¸À®¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¡£
353 Ãͤ¬ 0 ¤Ê¤é¤Ð¡¢¤½¤Î¤è¤¦¤Ê¥Ð¥¤¥ÈÎó¤ÏÀ¸À®¤µ¤ì¤Ê¤¤¡£
360 If the value is nonzero, it specifies at most how many
361 characters to convert. */
363 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÊÑ´¹¤µ¤ì¤ëºÇÂç¤Îʸ»ú¿ô¤ò»ØÄꤹ¤ë¡£
369 The following three members are to report the result of the
372 °Ê²¼¤Î£³¤Ä¤Î¥á¥ó¥Ð¤ÏÊÑ´¹¤Î·ë²Ì¤òɽ¤¹¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£ */
375 Number of characters most recently decoded or encoded. */
377 ºÇ¶á¤Ë¥Ç¥³¡¼¥É/¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿Ê¸»ú¿ô¡£ */
382 Number of bytes recently decoded or encoded. */
385 ºÇ¶á¤Ë¥Ç¥³¡¼¥É/¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿¥Ð¥¤¥È¿ô¡£ */
390 Result code of the conversion. */
393 ¥³¡¼¥ÉÊÑ´¹¤Î·ë²Ì¤ò¼¨¤¹¥³¡¼¥É¡£ */
395 enum MConversionResult result;
398 Various information about the status of code conversion. The
399 contents depend on the type of coding system. It is assured
400 that @c status is aligned so that any type of casting is safe
401 and at least 256 bytes of memory space can be used. */
404 ¥³¡¼¥ÉÊÑ´¹¤Î¾õ¶·¤Ë´Ø¤¹¤ë¼ï¡¹¤Î¾ðÊó¡£ÆâÍƤϥ³¡¼¥É·Ï¤Î¥¿¥¤¥×¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë¡£
405 @c status ¤Ï¤É¤Î¤è¤¦¤Ê·¿¤Ø¤Î¥¥ã¥¹¥È¤ËÂФ·¤Æ¤â°ÂÁ´¤Ê¤è¤¦¤Ë¥á¥â¥ê¥¢¥é¥¤¥ó¤µ¤ì¤Æ¤ª¤ê¡¢¤Þ¤¿ºÇÄã256¥Ð¥¤¥È¤Î¥á¥â¥êÎΰ褬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ */
414 This member is for internally use only. An application program
415 should never touch it. */
416 /***ja ¤³¤Î¥á¥ó¥Ð¤ÏÆâÉôŪ¤Ë»ÈÍѤµ¤ì¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¿¨¤ì¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ */
421 /*** @ingroup m17nConv */
423 @brief Types of coding system. */
425 @brief ¥³¡¼¥É·Ï¤Î¥¿¥¤¥×. */
430 A coding system of this type supports charsets directly.
431 The dimension of each charset defines the length of bytes to
432 represent a single character of the charset, and a byte
433 sequence directly represents the code-point of a character.
435 The m17n library provides the default decoding and encoding
436 routines of this type. */
439 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ïʸ»ú¥»¥Ã¥È¤òľÀÜ¥µ¥Ý¡¼¥È¤¹¤ë¡£
440 ³Æʸ»ú¥»¥Ã¥È¤Î¼¡¸µ¤È¤Ï¡¢¤½¤Îʸ»ú¥»¥Ã¥È¤Ç°ìʸ»ú¤òɽ¸½¤¹¤ë¤¿¤á¤ËɬÍפʥХ¤¥È¿ô¤Ç¤¢¤ê¡¢¥Ð¥¤¥ÈÎó¤Ïʸ»ú¤Î¥³¡¼¥É¥Ý¥¤¥ó¥È¤òľÀÜɽ¤¹¡£
442 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
444 MCODING_TYPE_CHARSET,
447 A coding system of this type supports byte sequences of a
448 UTF (UTF-8, UTF-16, UTF-32) like structure.
450 The m17n library provides the default decoding and encoding
451 routines of this type. */
454 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢UTF ·Ï (UTF-8, UTF-16, UTF-32) ¤Î¥Ð¥¤¥ÈÎó¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£
456 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
461 A coding system of this type supports byte sequences of an
462 ISO-2022 like structure. The details of each structure are
463 specified by @c MCodingInfoISO2022 .
465 The m17n library provides decoding and encoding routines of
469 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢ISO-2022 ·Ï¤Î¥Ð¥¤¥ÈÎó¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£
470 ³Æ¥³¡¼¥É·Ï¤Î¹½Â¤¤Î¾ÜºÙ¤Ï @c MCodingInfoISO2022 ¤Ç»ØÄꤵ¤ì¤ë¡£
472 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
474 MCODING_TYPE_ISO_2022,
477 A coding system of this type is for byte sequences of
478 miscellaneous structures.
480 The m17n library does not provide decoding and encoding
481 routines of this type. They must be provided by the
482 application program. */
485 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢¤½¤Î¾¤Î¹½Â¤¤Î¥Ð¥¤¥ÈÎó¤Î¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£
487 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥ¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤·¤Ê¤¤¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¦¤Ç½àÈ÷¤¹¤ëɬÍפ¬¤¢¤ë¡£ */
493 /*** @ingroup m17nConv */
495 @brief Bit-masks to specify the detail of coding system whose type is MCODING_TYPE_ISO_2022. */
497 @brief MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Î¾ÜºÙ¤òɽ¤ï¤¹¥Ó¥Ã¥È¥Þ¥¹¥¯. */
499 enum MCodingFlagISO2022
502 On encoding, reset the invocation and designation status to
503 initial at end of line. */
504 /***ja ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢¹ÔËö¤Ç¸Æ¤Ó½Ð¤· (invocation) ¤È»Ø¼¨
505 (designation) ¤Î¾õÂÖ¤ò½é´üÃͤËÌ᤹¡£ */
506 MCODING_ISO_RESET_AT_EOL = 0x1,
509 On encoding, reset the invocation and designation status to
510 initial before any control codes. */
512 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢¤¹¤Ù¤Æ¤ÎÀ©¸æʸ»ú¤ÎÁ°¤Ç¡¢¸Æ¤Ó½Ð¤·
513 (invocation) ¤È»Ø¼¨ (designation) ¤Î¾õÂÖ¤ò½é´üÃͤËÌ᤹¡£ */
514 MCODING_ISO_RESET_AT_CNTL = 0x2,
517 Use the right graphic plane. */
519 ¿Þ·Áʸ»ú½¸¹ç¤Î±¦Â¦¤ò»È¤¦¡£ */
520 MCODING_ISO_EIGHT_BIT = 0x4,
523 Use the non-standard 4 bytes format for designation sequence
524 for charsets JISX0208-1978, GB2312, and JISX0208-1983. */
526 JISX0208-1978, GB2312, JISX0208-1983
527 ¤Îʸ»ú½¸¹ç¤ËÂФ¹¤ë»Ø¼¨¥·¡¼¥¯¥¨¥ó¥¹¤È¤·¤Æ¡¢Èóɸ½à¤Î4¥Ð¥¤¥È·Á¼°¤òÍѤ¤¤ë¡£ */
529 MCODING_ISO_LONG_FORM = 0x8,
532 On encoding, unless explicitly specified, designate charsets
535 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢Ê¸»ú½¸¹ç¤ò G0
537 MCODING_ISO_DESIGNATION_G0 = 0x10,
540 On encoding, unless explicitly specified, designate charsets
541 except for ASCII to G1. */
543 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢ASCII °Ê³°¤Îʸ»ú½¸¹ç¤ò
545 MCODING_ISO_DESIGNATION_G1 = 0x20,
548 On encoding, unless explicitly specified, designate 94-chars
549 charsets to G0, 96-chars charsets to G1. */
551 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢94ʸ»ú½¸¹ç¤ò G0
552 ¤Ë¡¢96ʸ»ú½¸¹ç¤ò G1 ¤Ë»Ø¼¨¤¹¤ë¡£*/
553 MCODING_ISO_DESIGNATION_CTEXT = 0x40,
556 On encoding, encode such charsets not conforming to ISO-2022
557 by ESC % / ..., and encode non-supported Unicode characters by
558 ESC % G ... ESC % @@ . On decoding, handle those escape
561 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢ISO-2022 ¤Ë¹çÃפ·¤Ê¤¤Ê¸»ú½¸¹ç¤ò ESC % / ...
562 ¤Ç¥¨¥ó¥³¡¼¥É¤¹¤ë¡£¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ Unicode ʸ»ú¤Ï ESC % G ...
563 ESC % @@ ¤Ç¥¨¥ó¥³¡¼¥É¤¹¤ë¡£
564 ¥Ç¥³¡¼¥É¤ÎºÝ¡¢¤³¤ì¤é¤Î¥¨¥¹¥±¡¼¥×¡¦¥·¡¼¥±¥ó¥¹¤ò²ò¼á¤¹¤ë¡£ */
565 MCODING_ISO_DESIGNATION_CTEXT_EXT = 0x80,
568 Use locking shift. */
570 ¥í¥Ã¥¥ó¥°¥·¥Õ¥È¤ò»È¤¦¡£ */
571 MCODING_ISO_LOCKING_SHIFT = 0x100,
574 Use single shift (SS2 (0x8E or ESC N), SS3 (0x8F or ESC O)). */
576 ¥·¥ó¥°¥ë¥·¥Õ¥È (SS2 (0x8E or ESC N), SS3 (0x8F or ESC O)) ¤ò»È¤¦¡£ */
577 MCODING_ISO_SINGLE_SHIFT = 0x200,
580 Use 7-bit single shift 2 (SS2 (0x19)). */
582 7¥Ó¥Ã¥È¥·¥ó¥°¥ë¥·¥Õ¥È 2 (SS2 (0x19)) ¤ò»È¤¦¡£ */
583 MCODING_ISO_SINGLE_SHIFT_7 = 0x400,
586 Use EUC-TW like special shifting. */
588 EUC-TW É÷¤ÎÆÃÊ̤ʥ·¥Õ¥È¤ò»È¤¦¡£ */
589 MCODING_ISO_EUC_TW_SHIFT = 0x800,
592 Use ISO-6429 escape sequences to indicate direction.
593 Not yet implemented. */
595 ISO-6429 ¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥¯¥¨¥ó¥¹¤ÇÊý¸þ¤ò»Ø¼¨¤¹¤ë¡£Ì¤¼ÂÁõ¡£ */
596 MCODING_ISO_ISO6429 = 0x1000,
599 On encoding, if a charset has revision number, produce escape
600 sequences to specify the number. */
602 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Ê¸»ú¥»¥Ã¥È¤Ë revision number
603 ¤¬¤¢¤ì¤Ð¤½¤ì¤òɽ¤ï¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥¯¥¨¥ó¥¹¤òÀ¸À®¤¹¤ë¡£ */
604 MCODING_ISO_REVISION_NUMBER = 0x2000,
607 Support all ISO-2022 charsets. */
609 ISO-2022 ¤ÎÁ´Ê¸»ú½¸¹ç¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£ */
610 MCODING_ISO_FULL_SUPPORT = 0x3000,
616 /*** @ingroup m17nConv */
618 @brief Structure for a coding system of type #MCODING_TYPE_ISO_2022.
620 Structure for extra information about a coding system of type
621 MCODING_TYPE_ISO_2022. */
624 @brief #MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѹ½Â¤ÂÎ.
626 MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѤòÊÝ»ý¤¹¤ë¤¿¤á¤Î¹½Â¤ÂΡ£
628 @latexonly \IPAlabel{MCodingInfoISO2022} @endlatexonly */
633 Table of numbers of an ISO2022 code extension element invoked
634 to each graphic plane (Graphic Left and Graphic Right). -1
635 means no code extension element is invoked to that plane. */
638 ³Æ¿Þ·Áʸ»úÎΰè (Graphic Left ¤È Graphic Right) ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤ë¡¢
639 ISO2022 Éä¹ç³ÈÄ¥Í×ÁǤÎÈÖ¹æ¤Î¥Æ¡¼¥Ö¥ë¡£-1
640 ¤Ï¤½¤ÎÎΰè¤Ë¤É¤ÎÉä¹ç³ÈÄ¥Í×ÁǤâ¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò¼¨¤¹¡£ */
642 int initial_invocation[2];
645 Table of code extension elements. The Nth element corresponds
646 to the Nth charset in $CHARSET_NAMES, which is an argument given
647 to the mconv_define_coding () function.
649 If an element value is 0..3, it specifies a graphic register
650 number to designate the corresponds charset. In addition, the
651 charset is initially designated to that graphic register.
653 If the value is -4..-1, it specifies a graphic register number
654 0..3 respectively to designate the corresponds charset.
655 Initially, the charset is not designated to any graphic
659 Éä¹ç³ÈÄ¥Í×ÁǤΥơ¼¥Ö¥ë¡£NÈÖÌܤÎÍ×ÁǤϡ¢$CHARSET_NAMES ¤Î N
660 ÈÖÌܤÎʸ»ú¥»¥Ã¥È¤ËÂбþ¤¹¤ë¡£$CHARSET_NAMES ¤Ï´Ø¿ô
661 mconv_define_coding () ¤Î°ú¿ô¤È¤Ê¤ë¡£
663 Ãͤ¬ 0..3 ¤À¤Ã¤¿¤é¡¢Âбþ¤¹¤ëʸ»ú¥»¥Ã¥È¤ò G0..G3
664 ¤Î¤½¤ì¤¾¤ì¤Ë»Ø¼¨¤¹¤ë¤³¤È¡¢¤Þ¤¿½é´ü¾õÂ֤Ǥ¹¤Ç¤Ë G0..G3
665 ¤Ë»Ø¼¨¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
667 Ãͤ¬ -4..-1 ¤À¤Ã¤¿¤é¡¢Âбþ¤¹¤ëʸ»ú¥»¥Ã¥È¤ò G0..G3
668 ¤Î¤½¤ì¤¾¤ì¤Ë»Ø¼¨¤¹¤ë¤³¤È¡¢¤·¤«¤·½é´ü¾õÂ֤ǤϤɤ³¤Ë¤â»Ø¼¨¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
671 char designations[32];
674 Bitwise OR of @c enum @c MCodingFlagISO2022 . */
677 @c enum @c MCodingFlagISO2022 ¤Î¥Ó¥Ã¥Èñ°Ì¤Ç¤ÎÏÀÍý OR */
681 } MCodingInfoISO2022;
684 /*** @ingroup m17nConv */
686 @brief Structure for extra information about a coding system of type #MCODING_TYPE_UTF.
690 @brief #MCODING_TYPE_UTF ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѤι½Â¤ÂÎ.
692 @latexonly \IPApage{MCodingInfoUTF} @endlatexonly
694 @latexonly \IPAlabel{MCodingInfoUTF} @endlatexonly */
699 Specify bits of a code unit. The value must be 8, 16, or 32. */
701 ¥³¡¼¥ÉĹ¡Ê¥Ó¥Ã¥È¿ô¡Ë¤Î»ØÄê¡£ÃÍ¤Ï 8, 16, 32 ¤Î¤¤¤º¤ì¤«¡£ */
705 Specify how to handle the heading BOM (byte order mark). The
706 value must be 0, 1, or 2. The meanings are as follows:
708 0: On decoding, check the first two byte. If they are BOM,
709 decide endian by them. If not, decide endian by the member @c
710 endian. On encoding, produce byte sequence according to
711 @c endian with heading BOM.
713 1: On decoding, do not handle the first two bytes as BOM, and
714 decide endian by @c endian. On encoding, produce byte sequence
715 according to @c endian without BOM.
717 2: On decoding, handle the first two bytes as BOM and decide
718 ending by them. On encoding, produce byte sequence according to
719 @c endian with heading BOM.
721 If <code_unit_bits> is 8, the value has no meaning. */
724 ÀèƬ¤Î BOM (¥Ð¥¤¥È¥ª¡¼¥À¡¼¥Þ¡¼¥¯) ¤Î¼è¤ê°·¤¤¤ò»ØÄꤹ¤ë¡£ÃÍ¤Ï 0,
725 1, 2 ¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ê¡¢¤½¤ì¤¾¤ì¤Î°ÕÌ£¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
727 0: ¥Ç¥³¡¼¥É¤ÎºÝ¤ËºÇ½é¤Î 2 ¥Ð¥¤¥È¤òÄ´¤Ù¤ë¡£¤â¤·¤½¤ì¤¬ BOM
728 ¤Ç¤¢¤ì¤Ð¡¢¥¨¥ó¥Ç¥£¥¢¥ó¤ò¤½¤ì¤ÇȽÄꤹ¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢¥á¥ó¥Ð @c
729 endian ¤Ë½¾¤Ã¤Æ¥¨¥ó¥Ç¥£¥¢¥ó¤ò·èÄꤹ¤ë¡£¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï @c
730 endian ¤Ë½¾¤Ã¤¿¥Ð¥¤¥ÈÎó¤òÀèƬ¤Ë BOM ÉÕ¤ÇÀ¸À®¤¹¤ë¡£
732 1: ¥Ç¥³¡¼¥É¤ÎºÝ¡¢ºÇ½é¤Î 2 ¥Ð¥¤¥È¤ò BOM ¤È¤·¤Æ°·¤ï¤º¡¢¥¨¥ó¥Ç¥£¥¢¥ó¤Ï
733 @c endian ¤ÇȽÄꤹ¤ë¡£¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï¡¢BOM ¤ò½ÐÎϤ»¤º¡¢
734 @c endian ¤Ë±þ¤¸¤¿¥Ð¥¤¥ÈÎó¤òÀ¸À®¤¹¤ë¡£
736 2: ¥Ç¥³¡¼¥É¤ÎºÝ¤ËºÇ½é¤Î2¥Ð¥¤¥È¤ò BOM¤È¤·¤Æ°·¤¤¡¢¤½¤ì¤Ë½¾¤Ã¤Æ¥¨¥ó¥Ç¥£¥¢¥ó¤òȽÄꤹ¤ë¡£
737 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï @c endian ¤Ë±þ¤¸¤¿¥Ð¥¤¥ÈÎó¤òÀèƬ¤Ë BOM ÉÕ¤¤ÇÀ¸À®¤¹¤ë¡£ */
741 Specify the endian type. The value must be 0 or 1. 0 means
742 little endian, and 1 means big endian.
744 If <code_unit_bits> is 8, the value has no meaning. */
746 ¥¨¥ó¥Ç¥£¥¢¥ó¤Î¥¿¥¤¥×¤ò»ØÄꤹ¤ë¡£ÃÍ¤Ï 0 ¤« 1 ¤Ç¤¢¤ê¡¢0
747 ¤Ê¤é¤Ð¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó¡¢1 ¤Ê¤é¤Ð¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó¤Ç¤¢¤ë¡£
749 <code_unit_bits> ¤¬ 8 ¤Î¾ì¹ç¤Ë¤Ï¡¢¤³¤ÎÃͤϰÕÌ£¤ò»ý¤¿¤Ê¤¤¡£
755 extern MSymbol mconv_define_coding (const char *name, MPlist *plist,
756 int (*resetter) (MConverter *),
757 int (*decoder) (const unsigned char *, int,
758 MText *, MConverter *),
759 int (*encoder) (MText *, int, int,
760 unsigned char *, int,
764 extern MSymbol mconv_resolve_coding (MSymbol symbol);
766 extern int mconv_list_codings (MSymbol **symbols);
768 extern MConverter *mconv_buffer_converter (MSymbol coding,
769 const unsigned char *buf,
772 extern MConverter *mconv_stream_converter (MSymbol coding, FILE *fp);
774 extern int mconv_reset_converter (MConverter *converter);
776 extern void mconv_free_converter (MConverter *converter);
778 extern MConverter *mconv_rebind_buffer (MConverter *converter,
779 const unsigned char *buf, int n);
781 extern MConverter *mconv_rebind_stream (MConverter *converter, FILE *fp);
783 extern MText *mconv_decode (MConverter *converter, MText *mt);
785 MText *mconv_decode_buffer (MSymbol name, const unsigned char *buf, int n);
787 MText *mconv_decode_stream (MSymbol name, FILE *fp);
789 extern int mconv_encode (MConverter *converter, MText *mt);
791 extern int mconv_encode_range (MConverter *converter, MText *mt,
794 extern int mconv_encode_buffer (MSymbol name, MText *mt,
795 unsigned char *buf, int n);
797 extern int mconv_encode_stream (MSymbol name, MText *mt, FILE *fp);
799 extern int mconv_getc (MConverter *converter);
801 extern int mconv_ungetc (MConverter *converter, int c);
803 extern int mconv_putc (MConverter *converter, int c);
805 extern MText *mconv_gets (MConverter *converter, MText *mt);
807 /* (S4) Locale related functions corresponding to libc functions */
809 /*** @ingroup m17nShell */
810 /***en @defgroup m17nLocale Locale */
811 /***ja @defgroup m17nLocale ¥í¥±¡¼¥ë */
814 /*** @ingroup m17nLocale */
816 @brief @c struct @c MLocale.
818 The structure @c MLocale is used to hold information about name,
819 language, territory, modifier, codeset, and the corresponding
820 coding system of locales.
822 The contents of this structure are implementation dependent. Its
823 internal structure is concealed from application programs. */
826 @brief @c MLocale ¹½Â¤ÂÎ.
828 @c MLocale ¹½Â¤ÂΤϡ¢¥í¥±¡¼¥ë¤Î̾Á°¡¢¸À¸ì¡¢ÃÏ°è¡¢¥â¥Ç¥£¥Õ¥¡¥¤¥¢¡¢¥³¡¼¥É¥»¥Ã¥È¡¢¤ª¤è¤ÓÂбþ¤¹¤ë¥³¡¼¥É·Ï¤Ë´Ø¤¹¤ë¾ðÊó¤òÊÝ»ý¤¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£
830 ¤³¤Î¹½Â¤ÂΤÎÆâÍƤϼÂÁõ¤Ë°Í¸¤¹¤ë¡£
831 ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */
835 mlocale_get_prop () */
837 typedef struct MLocale MLocale;
841 extern MSymbol Mlanguage;
842 extern MSymbol Miso639_1, Miso639_2;
843 extern MSymbol Mterritory;
844 extern MSymbol Mmodifier;
845 extern MSymbol Mcodeset;
847 extern MLocale *mlocale_set (int category, const char *locale);
849 extern MSymbol mlocale_get_prop (MLocale *locale, MSymbol key);
851 extern int mtext_ftime (MText *mt, const char *format, const struct tm *tm,
854 extern MText *mtext_getenv (const char *name);
856 extern int mtext_putenv (MText *mt);
858 extern int mtext_coll (MText *mt1, MText *mt2);
861 * (9) Miscellaneous functions of libc level (not yet implemented)
865 extern int mtext_width (MText *mt, int n);
866 extern MText *mtext_tolower (MText *mt);
867 extern MText *mtext_toupper (MText *mt);
874 /*** @ingroup m17nShell */
875 /***en @defgroup m17nInputMethod Input Method (basic) */
876 /***ja @defgroup m17nInputMethod ÆþÎϥ᥽¥Ã¥É (´ðËÜÉôʬ) */
879 /*** @addtogroup m17nInputMethod
882 /* Struct forward declaration. */
883 typedef struct MInputMethod MInputMethod;
884 typedef struct MInputContext MInputContext;
887 @brief Type of input method callback functions.
889 This is the type of callback functions called from input method
890 drivers. #IC is a pointer to an input context, #COMMAND is a name
891 of callback for which the function is called. */
893 @brief ÆþÎϥ᥽¥Ã¥É¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î·¿Àë¸À.
895 ÆþÎϥ᥽¥Ã¥É¤«¤é¸Æ¤Ð¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î·¿¤Ç¤¢¤ë¡£#IC
896 ¤ÏÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¡¢#COMMAND ¤Ï´Ø¿ô¤¬¸Æ¤Ð¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯¤Î̾Á°¤Ç¤¢¤ë¡£ */
898 typedef void (*MInputCallbackFunc) (MInputContext *ic, MSymbol command);
902 @brief Structure of input method driver.
904 The type @c MInputDriver is the structure of an input method driver that
905 contains several functions to handle an input method. */
908 @brief ÆþÎϥɥ饤¥ÐÍѹ½Â¤ÂÎ.
910 @c MInputDriver ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¤ò¼è¤ê°·¤¦´Ø¿ô¤ò´Þ¤àÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Î¹½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
912 typedef struct MInputDriver
915 @brief Open an input method.
917 This function opens the input method $IM. It is called from the
918 function minput_open_im () after all member of $IM but <info>
919 set. If opening $IM succeeds, it returns 0. Otherwise, it
920 returns -1. The function can setup $IM->info to keep various
921 information that is referred by the other driver functions. */
924 @brief ÆþÎϥ᥽¥Ã¥É¤ò¥ª¡¼¥×¥ó¤¹¤ë.
926 ¤³¤Î´Ø¿ô¤Ï¡¢ÆþÎϥ᥽¥Ã¥É $IM ¤ò¥ª¡¼¥×¥ó¤¹¤ë¡£$IM ¤Î <info>
927 °Ê³°¤ÎÁ´¥á¥ó¥Ð¡¼¤¬¥»¥Ã¥È¤µ¤ì¤¿¸å¤Ç¡¢´Ø¿ô minput_open_im ()
928 ¤«¤é¸Æ¤Ð¤ì¤ë¡£$IM ¤ò¥ª¡¼¥×¥ó¤Ç¤¤ì¤Ð 0 ¤ò¡¢¤Ç¤¤Ê¤±¤ì¤Ð -1¤òÊÖ¤¹¡£
930 ¤òÀßÄꤷ¤Æ¡¢Â¾¤Î¥É¥é¥¤¥Ð´Ø¿ô¤«¤é»²¾È¤µ¤ì¤ë¾ðÊó¤òÊÝ»ý¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
933 int (*open_im) (MInputMethod *im);
936 @brief Close an input method.
938 This function closes the input method $IM. It is called from
939 the function minput_close_im (). It frees all memory allocated
940 for $IM->info (if any) after finishing all the tasks of closing
941 the input method. But, the other members of $IM should not be
945 @brief ÆþÎϥ᥽¥Ã¥É¤ò¥¯¥í¡¼¥º¤¹¤ë.
947 ¤³¤Î´Ø¿ô¤Ï¡¢ÆþÎϥ᥽¥Ã¥É $IM ¤ò¥¯¥í¡¼¥º¤¹¤ë¡£´Ø¿ô
948 minput_close_im () ¤«¤é¸Æ¤Ð¤ì¤ë¡£
949 ÆþÎϥ᥽¥Ã¥É¤Î¥¯¥í¡¼¥º¤¬¤¹¤Ù¤Æ½ªÎ»¤·¤¿»þÅÀ¤Ç¡¢¤³¤Î´Ø¿ô¤Ï$IM->info
950 ¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥á¥â¥ê¤ò(¤¢¤ì¤Ð)¤¹¤Ù¤Æ³«Êü¤¹¤ë¡£
951 ¤¿¤À¤·¡¢$IM ¤Î¾¤Î¥á¥ó¥Ð¤Ë±Æ¶Á¤òÍ¿¤¨¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
954 void (*close_im) (MInputMethod *im);
957 @brief Create an input context.
959 This function creates the input context $IC. It is called from
960 the function minput_create_ic () after all members of $IC but
961 <info> are set. If creating $IC succeeds, it returns 0.
962 Otherwise, it returns -1. The function can setup $IC->info to
963 keep various information that is referred by the other driver
967 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÀ¸À®¤¹¤ë.
969 ¤³¤Î´Ø¿ô¤ÏÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC ¤òÀ¸À®¤¹¤ë¡£
970 $IC ¤Î <info> °Ê³°¤ÎÁ´¥á¥ó¥Ð¡¼¤¬¥»¥Ã¥È¤µ¤ì¤¿¸å¤Ç¡¢´Ø¿ô
971 minput_create_ic () ¤«¤é¸Æ¤Ð¤ì¤ë¡£
972 $IC ¤òÀ¸À®¤Ç¤¤ì¤Ð 0 ¤ò¡¢¤Ç¤¤Ê¤±¤ì¤Ð -1 ¤òÊÖ¤¹¡£
973 ¤³¤Î´Ø¿ô¤Ï $IC->info ¤òÀßÄꤷ¤Æ¡¢Â¾¤Î¥É¥é¥¤¥Ð´Ø¿ô¤«¤é»²¾È¤µ¤ì¤ë¾ðÊó¤òÊÝ»ý¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£ */
976 int (*create_ic) (MInputContext *ic);
979 @brief Destroy an input context.
981 This function is called from the function minput_destroy_ic ()
982 and destroys the input context $IC. It frees all memory
983 allocated for $IC->info (if any) after finishing all the tasks
984 of destroying the input method. But, the other members of $IC
985 should not be touched. */
988 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÇ˲õ¤¹¤ë.
990 ´Ø¿ô minput_destroy_ic () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC
991 ¤òÇ˲õ¤¹¤ë¡£ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÎÇ˲õ¤¬¤¹¤Ù¤Æ½ªÎ»¤·¤¿»þÅÀ¤Ç¡¢$IC->info
992 ¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥á¥â¥ê¤ò(¤¢¤ì¤Ð)¤¹¤Ù¤Æ³«Êü¤¹¤ë¡£¤¿¤À¤·¡¢$IC
993 ¤Î¾¤Î¥á¥ó¥Ð¤Ë±Æ¶Á¤òÍ¿¤¨¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ */
995 void (*destroy_ic) (MInputContext *ic);
998 @brief Filter an input key.
1000 This function is called from the function minput_filter () and
1001 filters an input key. $KEY and $ARG are the same as what given
1002 to minput_filter ().
1004 The task of the function is to handle $KEY, update the internal
1005 state of $IC. If $KEY is absorbed by the input method and no
1006 text is produced, it returns 1. Otherwise, it returns 0.
1008 It may update $IC->status, $IC->preedit, $IC->cursor_pos,
1009 $IC->ncandidates, $IC->candidates, and $IC->produced if that is
1010 necessary for the member <callback>.
1012 The meaning of $ARG depends on the input method river. See the
1013 documentation of @c minput_default_driver and @c
1014 minput_gui_driver for instance. */
1017 @brief ÆþÎÏ¥¡¼¤ò¥Õ¥£¥ë¥¿¤¹¤ë.
1019 ´Ø¿ô minput_filter () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥¡¼¤ò¥Õ¥£¥ë¥¿¤¹¤ë¡£°ú¿ô
1020 $KEY, $ARG ¤Ï´Ø¿ô minput_filter () ¤Î¤â¤Î¤ÈƱ¤¸¡£
1022 ¤³¤Î´Ø¿ô¤Ï $KEY ¤ò½èÍý¤·¡¢$IC ¤ÎÆâÉô¾õÂÖ¤ò¹¹¿·¤¹¤ë¡£ $KEY
1023 ¤¬ÆþÎϥ᥽¥Ã¥É¤ËµÛ¼ý¤µ¤ì¤Æ¥Æ¥¥¹¥È¤¬À¸À®¤µ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢
1024 1 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤¹¡£
1026 ¥á¥ó¥Ð <callback> ¤ËɬÍפǤ¢¤ì¤Ð¡¢$IC->status, $IC->preedit,
1027 $IC->cursor_pos, $IC->ncandidates, $IC->candidates,
1028 $IC->produced ¤ò¹¹¿·¤Ç¤¤ë¡£
1030 $ARG ¤Î°ÕÌ£¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë°Í¸¤¹¤ë¡£Îã¤Ï @c
1031 minput_default_driver ¤Þ¤¿¤Ï @c minput_gui_driver
1032 ¤ÎÀâÌÀ¤ò»²¾È¤Î¤³¤È¡£ */
1034 int (*filter) (MInputContext *ic, MSymbol key, void *arg);
1037 @brief Lookup a produced text in an input context.
1039 It is called from the function minput_lookup () and looks up a
1040 produced text in the input context $IC. This function
1041 concatenate a text produced by the input key $KEY (if any) to
1042 M-text $MT. If $KEY was correctly handled by the input method
1043 of $IC, it returns 0. Otherwise, it returns 1.
1045 The meaning of $ARG depends on the input method driver. See the
1046 documentation of @c minput_default_driver and @c
1047 minput_gui_driver for instance. */
1050 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÇÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È¤Î³ÍÆÀ.
1052 ´Ø¿ô minput_lookup () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC
1053 ¤ÇÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È¤ò¸¡º÷¤¹¤ë¡£ÆþÎÏ¥¡¼ $KEY
1054 ¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È¤¬¤¢¤ì¤Ð¡¢M-text $MT ¤ËÄɲ乤롣 $KEY
1055 ¤¬ÆþÎϥ᥽¥Ã¥É $IC ¤Ë¤è¤Ã¤ÆÀµ¤·¤¯½èÍý¤µ¤ì¤ì¤Ð 0 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 1 ¤òÊÖ¤¹¡£
1057 $ARG ¤Î°ÕÌ£¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë°Í¸¤¹¤ë¡£Îã¤Ï @c
1058 minput_default_driver ¤Þ¤¿¤Ï @c minput_gui_driver ¤ÎÀâÌÀ¤ò»²¾È¤Î
1061 int (*lookup) (MInputContext *ic, MSymbol key, void *arg, MText *mt);
1064 @brief List of callback functions.
1066 List of callback functions. Keys are one of
1067 #Minput_preedit_start, #Minput_preedit_draw,
1068 #Minput_preedit_done, #Minput_status_start, #Minput_status_draw,
1069 #Minput_status_done, #Minput_candidates_start,
1070 #Minput_candidates_draw, #Minput_candidates_done,
1071 #Minput_set_spot, #Minput_toggle, #Minput_reset.
1072 Values are functions of type #MInputCallbackFunc. */
1074 @brief ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î¥ê¥¹¥È.
1076 ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î¥ê¥¹¥È¡£¥¡¼¤Ï¼¡¤Î¤¤¤º¤ì¤«¡£
1077 #Minput_preedit_start, #Minput_preedit_draw,
1078 #Minput_preedit_done, #Minput_status_start, #Minput_status_draw,
1079 #Minput_status_done, #Minput_candidates_start,
1080 #Minput_candidates_draw, #Minput_candidates_done,
1081 #Minput_set_spot, #Minput_toggle, #Minput_reset¡£
1082 ÃͤÏ#MInputCallbackFunc ·¿¤Î´Ø¿ô¡£ */
1083 MPlist *callback_list;
1088 extern MInputDriver minput_default_driver;
1090 extern MSymbol Minput_driver;
1092 extern MInputDriver *minput_driver;
1094 /** Symbols for callback commands. */
1095 extern MSymbol Minput_preedit_start;
1096 extern MSymbol Minput_preedit_draw;
1097 extern MSymbol Minput_preedit_done;
1098 extern MSymbol Minput_status_start;
1099 extern MSymbol Minput_status_draw;
1100 extern MSymbol Minput_status_done;
1101 extern MSymbol Minput_candidates_start;
1102 extern MSymbol Minput_candidates_draw;
1103 extern MSymbol Minput_candidates_done;
1104 extern MSymbol Minput_set_spot;
1105 extern MSymbol Minput_toggle;
1106 extern MSymbol Minput_reset;
1109 @brief Structure of input method.
1111 The type @c MInputMethod is the structure of input method
1114 @brief ÆþÎϥ᥽¥Ã¥É¤Î¹½Â¤ÂÎ.
1116 @c MInputMethod ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¥ª¥Ö¥¸¥§¥¯¥ÈÍѤι½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
1120 /***en Which language this input method is for. The value is @c
1121 Mnil if the input method is foreign. */
1122 /***ja ¤É¤Î¸À¸ìÍѤÎÆþÎϥ᥽¥Ã¥É¤«¡£
1123 ÆþÎϥ᥽¥Ã¥É¤¬³°Éô¤Î¤â¤Î¤Ç¤¢¤ë¾ì¹ç¤ÎÃÍ¤Ï @c Mnil ¡£ */
1126 /***en Name of the input method. If the input method is foreign, it
1127 must has a property of key @c Minput_driver and the value must be a
1128 pointer to a proper input method driver. */
1129 /***ja ÆþÎϥ᥽¥Ã¥É¤Î̾Á°¡£³°Éô¥á¥½¥Ã¥É¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢@c
1130 Minput_driver ¤ò¥¡¼¤È¤¹¤ë¥×¥í¥Ñ¥Æ¥£¤ò»ý¤Á¡¢¤½¤ÎÃͤÏŬÀÚ¤ÊÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£*/
1133 /***en Input method driver of the input method. */
1134 /***ja ¤½¤ÎÆþÎϥ᥽¥Ã¥ÉÍѤÎÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¡£ */
1135 MInputDriver driver;
1137 /***en The argument given to minput_open_im (). */
1138 /***ja minput_open_im () ¤ËÅϤµ¤ì¤ë°ú¿ô¡£ */
1141 /***en Pointer to extra information that <driver>.open_im ()
1143 /***ja <driver>.open_im () ¤¬ÀßÄꤹ¤ëÄɲþðÊó¤Ø¤Î¥Ý¥¤¥ó¥¿¡£ */
1150 @brief Structure of input context.
1152 The type @c MInputContext is the structure of input context
1156 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥ÈÍѹ½Â¤ÂÎ.
1158 @c MInputContext ¤Ï¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¥ª¥Ö¥¸¥§¥¯¥ÈÍѤι½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
1160 struct MInputContext
1162 /***en Backward pointer to the input method. It is set up be the
1163 function minput_create_ic (). */
1164 /***ja ÆþÎϥ᥽¥Ã¥É¤Ø¤ÎµÕ¥Ý¥¤¥ó¥¿¡£´Ø¿ô minput_create_ic ()
1165 ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1168 /***en M-text produced by the input method. It is set up by the
1169 function minput_lookup () . */
1170 /***ja ÆþÎϥ᥽¥Ã¥É¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë M-text¡£´Ø¿ô minput_lookup ()
1171 ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1174 /***en Argument given to the function minput_create_im (). */
1175 /***ja ´Ø¿ô minput_create_ic () ¤ËÅϤµ¤ì¤ë°ú¿ô¡£ */
1178 /***en Flag telling whether the input context is currently active or
1179 inactive. The value is set to 1 (active) when the input context
1180 is created. It is toggled by the function minput_toggle (). */
1181 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬¥¢¥¯¥Æ¥£¥Ö¤«¤É¤¦¤«¤ò¼¨¤¹¥Õ¥é¥°¡£
1182 ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬À¸À®¤µ¤ì¤¿»þÅÀ¤Ç¤ÏÃÍ¤Ï 1 ¡Ê¥¢¥¯¥Æ¥£¥Ö¡Ë¤Ç¤¢¤ê¡¢´Ø¿ô
1183 minput_toggle () ¤Ë¤è¤Ã¤Æ¥È¥°¥ë¤µ¤ì¤ë¡£ */
1186 /***en Spot location and size of the input context. */
1187 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Î¥¹¥Ý¥Ã¥È¤Î°ÌÃÖ¤ÈÂ礤µ. */
1189 /***en X and Y coordinate of the spot. */
1190 /***ja ¥¹¥Ý¥Ã¥È¤Î X, Y ºÂɸ. */
1193 /***en Ascent and descent pixels of the line of the spot. */
1194 /***ja ¥¹¥Ý¥Ã¥È¤Î¥¢¥»¥ó¥È¤È¥Ç¥£¥»¥ó¥È¤Î¥Ô¥¯¥»¥ë¿ô. */
1195 int ascent, descent;
1197 /***en Font size for preedit text in 1/10 point. */
1198 /***ja preedit ¥Æ¥¥¹¥ÈÍѤΥե©¥ó¥È¥µ¥¤¥º (1/10 ¥Ý¥¤¥ó¥Èñ°Ì). */
1201 /***en M-text at the spot, or NULL. */
1202 /***ja ¥¹¥Ý¥Ã¥È¾å¤Î M-text¡¢¤Þ¤¿¤Ï NULL. */
1205 /***en Character position in <mt> at the spot. */
1206 /***ja <mt> ¤Ë¤ª¤±¤ë¥¹¥Ý¥Ã¥È¤Îʸ»ú°ÌÃÖ. */
1210 /***en The usage of the following members depends on the input
1211 method driver. The descriptions below are for the driver of an
1212 internal input method. They are set by the function
1213 <im>->driver.filter (). */
1214 /***ja °Ê²¼¤Î¥á¥ó¥Ð¤Î»ÈÍÑË¡¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë¡£
1215 °Ê²¼¤ÎÀâÌÀ¤Ï¡¢ÆâÉôÆþÎϥ᥽¥Ã¥ÉÍѤÎÆþÎϥɥ饤¥Ð¤ËÂФ¹¤ë¤â¤Î¤Ç¤¢¤ë¡£
1216 ¤³¤ì¤é¤Ï´Ø¿ô <im>->driver.filter () ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1218 /***en Pointer to extra information that <im>->driver.create_ic ()
1219 setups. It is used to record the internal state of the input
1221 /***ja <im>->driver.create_ic () ¤¬ÀßÄꤹ¤ëÄɲþðÊó¤Ø¤Î¥Ý¥¤¥ó¥¿¡£
1222 ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÎÆâÉô¾õÂÖ¤òµÏ¿¤¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£ */
1225 /***en M-text describing the current status of the input
1227 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Î¸½ºß¤Î¾õÂÖ¤òɽ¤¹ M-text */
1230 /***en The function <im>->driver.filter () sets the value to 1 when
1231 it changes <status>. */
1232 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢<status> ¤òÊѤ¨¤¿ºÝ¤Ë¤³¤ÎÃͤò 1
1236 /***en M-text containing the current preedit text. The function
1237 <im>->driver.filter () sets the value. */
1238 /***ja ¸½ºß¤Î preedit ¥Æ¥¥¹¥È¤ò´Þ¤à M-text¡£´Ø¿ô
1239 <im>->driver.filter () ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1242 /***en The function <im>->driver.filter () sets the value to 1 when
1243 it changes <preedit>. */
1244 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢<preedit> ¤òÊѤ¨¤¿ºÝ¤Ë¤³¤ÎÃͤò
1246 int preedit_changed;
1248 /***en Cursor position of <preedit>. */
1249 /***ja <preedit>¤Î¥«¡¼¥½¥ë°ÌÃÖ */
1252 /***en The function <im>->driver.filter () sets the value to 1 when
1253 it changes <cursor_pos>. */
1254 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢<cursor_pos> ¤òÊѤ¨¤¿ºÝ¤Ë¤³¤ÎÃͤò
1256 int cursor_pos_changed;
1258 /***en Plist of the current candidate groups. Each element is an
1259 M-text or a plist. If an element is an M-text (i.e. the key is Mtext),
1260 candidates in that group are characters in the M-text. If it is
1261 a plist (i.e. the key is Mplist), each element is an M-text, and
1262 candidates in that group are those M-texts. */
1263 /***ja ¸½ºß¤Î¸õÊ䥰¥ë¡¼¥×¤Î Plist ¡£³ÆÍ×ÁÇ¤Ï M-text ¤« plist ¤Ç¤¢¤ë¡£
1264 Í×ÁǤ¬ M-text ¤Î¾ì¹ç¡Ê¥¡¼¤¬ Mtext ¤Ç¤¢¤ë¾ì¹ç¡Ë¤Ë¤Ï¡¢¤½¤Î¥°¥ë¡¼¥×¤Î¸õÊä¤Ï¤½¤Î
1265 M-text Ãæ¤Î³Æʸ»ú¤Ç¤¢¤ë¡£ Í×ÁǤ¬ plist ¤Î¾ì¹ç¡Ê¥¡¼¤¬ Mplist
1266 ¤Ç¤¢¤ë¾ì¹ç¡Ë¤Ë¤Ï¡¢¤½¤Î¥ê¥¹¥È¤Î³ÆÍ×ÁÇ¤Ï M-text ¤Ç¤¢¤ê¡¢¤½¤ì¤é¤¬¤½¤Î¥°¥ë¡¼¥×¤Î¸õÊä¤È¤Ê¤ë¡£ */
1267 MPlist *candidate_list;
1269 /***en Index number of the currently selected candidate in all the
1270 candidates. The index of the first candidate is 0. If the
1271 number is 8, and the first candidate group contains 7
1272 candidates, the currently selected candidate is the second element of the
1273 second candidate group. */
1274 /***ja ¸½ºßÁªÂò¤µ¤ì¤Æ¤¤¤ë¸õÊ䤬Á´¸õÊäÃæ¤Ç²¿ÈÖÌܤ«¤ò¤ò¼¨¤¹¥¤¥ó¥Ç¥Ã¥¯¥¹¡£
1275 ºÇ½é¤Î¸õÊä¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï 0¡£ºÇ½é¤Î¸õÊ䥰¥ë¡¼¥×¤Ë¼·¤Ä¤Î¸õÊ䤬´Þ¤Þ¤ì¤Æ¤ª¤ê¡¢¤³¤ÎÃͤ¬
1276 8 ¤Ê¤é¤Ð¡¢¸½ºß¤Î¸õÊä¤ÏÆóÈÖÌܤθõÊ䥰¥ë¡¼¥×¤ÎÆóÈÖÌܤÎÍ×ÁǤȤ¤¤¦¤³¤È¤Ë¤Ê¤ë¡£
1278 int candidate_index;
1280 /***en Start and the end positions of the preedit text where
1281 <candidate_list> corresponds to. */
1282 /***ja preedit ¥Æ¥¥¹¥ÈÃæ¤Ç¡¢<candidate_list>¤ËÂбþ¤¹¤ëºÇ½é¤ÈºÇ¸å¤Î°ÌÃÖ¡£
1284 int candidate_from, candidate_to;
1286 /***en Flag telling whether the current candidate group must be
1287 shown or not. The function <im>->driver.filter () sets the
1288 value to 1 when an input method required to show candidates, and
1289 sets the value to 0 otherwise. */
1290 /***ja ¸½ºß¤Î¸õÊ䥰¥ë¡¼¥×¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«¤ò¼¨¤¹¥Õ¥é¥°¡£
1291 ´Ø¿ô <im>->driver.filter () ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¤¬¸õÊä¤Îɽ¼¨¤òÍ׵ᤷ¤¿»þ¤³¤ÎÃͤò
1292 1 ¤Ë¡¢¤½¤ì°Ê³°¤Î»þ 0 ¤ËÀßÄꤹ¤ë¡£ */
1295 /***en The function <im>->driver.filter () sets the value to 1 when
1296 it changed any of the above members (<candidate_XXX>), and sets
1297 the value to 0 otherwise. */
1298 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢¾åµ¤Î¥á¥ó¥Ð <candidate_XXX>
1299 ¤Î£±¤Ä¤Ç¤âÊѹ¹¤·¤¿ºÝ¤Ë¤Ï¡¢¤³¤ÎÃͤò 1 ¤ËÀßÄꤹ¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 0 ¤ËÀßÄꤹ¤ë¡£ */
1300 int candidates_changed;
1302 /***en Plist that can be freely used by <im>->driver functions.
1303 The driver of internal input method never use it. The function
1304 <im>->driver.create_ic () sets this to an empty plist, and the
1305 function <im>->driver.destroy_ic () frees it by using
1306 m17n_object_unref (). */
1307 /***ja <im>->driver ¤Î´Ø¿ô·²¤Ë¤è¤Ã¤Æ¼«Í³¤Ë»ÈÍѤǤ¤ë plist¡£
1308 ÆâÉôÆþÎϥ᥽¥Ã¥ÉÍѥɥ饤¥Ð¤Ï¤³¤ì¤ò»ÈÍѤ·¤Ê¤¤¡£´Ø¿ô
1309 <im>->driver.create_ic () ¤Ï¤³¤Î plist ¤ò¶õ¤ËÀßÄꤹ¤ë¡£´Ø¿ô
1310 <im>->driver.destroy_ic () ¤Ï m17n_object_unref () ¤òÍѤ¤¤Æ¤³¤Î
1311 plist ¤ò²òÊü¤¹¤ë¡£ */
1317 extern MInputMethod *minput_open_im (MSymbol language, MSymbol name,
1322 extern void minput_close_im (MInputMethod *im);
1324 extern MInputContext *minput_create_ic (MInputMethod *im, void *arg);
1326 extern void minput_destroy_ic (MInputContext *ic);
1328 extern int minput_filter (MInputContext *ic, MSymbol key, void *arg);
1330 extern int minput_lookup (MInputContext *ic, MSymbol key, void *arg,
1333 extern void minput_set_spot (MInputContext *ic, int x, int y,
1334 int ascent, int descent, int fontsize,
1335 MText *mt, int pos);
1337 extern void minput_toggle (MInputContext *ic);
1339 extern void minput_reset_ic (MInputContext *ic);
1341 extern MSymbol Mdetail_text;
1343 extern MText *minput_get_description (MSymbol language, MSymbol name);
1345 extern MPlist *minput_get_commands (MSymbol language, MSymbol name);
1347 extern int minput_assign_command_keys (MSymbol language, MSymbol name,
1348 MSymbol command, MPlist *keys);
1350 extern MPlist *minput_get_variables (MSymbol language, MSymbol name);
1352 extern int minput_set_variable (MSymbol language, MSymbol name,
1353 MSymbol variable, void *value);
1359 extern MInputMethod *mdebug_dump_im (MInputMethod *im, int indent);
1366 #endif /* _M17N_H_ */