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., 51 Franklin Street, Fifth Floor,
31 #include <m17n-core.h>
36 #if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
37 extern void m17n_init (void);
45 #else /* not _M17N_FLT_H_ */
46 #define M17N_INIT() m17n_init ()
47 #endif /* not _M17N_FLT_H_ */
49 extern void m17n_fini (void);
57 #else /* not _M17N_FLT_H_ */
58 #define M17N_FINI() m17n_fini ()
59 #endif /* not _M17N_FLT_H_ */
63 /***en @defgroup m17nShell SHELL API */
64 /***ja @defgroup m17nShell ¥·¥§¥ë API */
68 * (11) Functions related to the m17n database
73 /* (S2) Charset staffs */
76 /*** @ingroup m17nShell */
77 /***en @defgroup m17nCharset Charset */
78 /***ja @defgroup m17nCharset ʸ»ú¥»¥Ã¥È */
81 #if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
82 #define MCHAR_INVALID_CODE 0xFFFFFFFF
85 /* Predefined charsets */
86 extern MSymbol Mcharset_ascii;
87 extern MSymbol Mcharset_iso_8859_1;
88 extern MSymbol Mcharset_unicode;
89 extern MSymbol Mcharset_m17n;
90 extern MSymbol Mcharset_binary;
92 /* Predefined keys for mchar_define_charset (). */
93 extern MSymbol Mmethod;
94 extern MSymbol Mdimension;
95 extern MSymbol Mmin_range;
96 extern MSymbol Mmax_range;
97 extern MSymbol Mmin_code;
98 extern MSymbol Mmax_code;
99 extern MSymbol Mascii_compatible;
100 extern MSymbol Mfinal_byte;
101 extern MSymbol Mrevision;
102 extern MSymbol Mmin_char;
103 extern MSymbol Mmapfile;
104 extern MSymbol Mparents;
105 extern MSymbol Msubset_offset;
106 extern MSymbol Mdefine_coding;
107 extern MSymbol Maliases;
109 /* Methods of a charset. */
110 extern MSymbol Moffset;
112 extern MSymbol Munify;
113 extern MSymbol Msubset;
114 extern MSymbol Msuperset;
117 extern MSymbol mchar_define_charset (const char *name, MPlist *plist);
119 extern MSymbol mchar_resolve_charset (MSymbol symbol);
121 extern int mchar_list_charset (MSymbol **symbols);
123 extern int mchar_decode (MSymbol charset_name, unsigned code);
125 extern unsigned mchar_encode (MSymbol charset_name, int c);
127 extern int mchar_map_charset (MSymbol charset_name,
128 void (*func) (int from, int to, void *arg),
133 /* (S3) code conversion */
135 /*** @ingroup m17nShell */
136 /***en @defgroup m17nConv Code Conversion */
137 /***ja @defgroup m17nConv ¥³¡¼¥ÉÊÑ´¹ */
140 /* Predefined coding systems */
141 extern MSymbol Mcoding_us_ascii;
142 extern MSymbol Mcoding_iso_8859_1;
143 extern MSymbol Mcoding_utf_8;
144 extern MSymbol Mcoding_utf_8_full;
145 extern MSymbol Mcoding_utf_16;
146 extern MSymbol Mcoding_utf_16be;
147 extern MSymbol Mcoding_utf_16le;
148 extern MSymbol Mcoding_utf_32;
149 extern MSymbol Mcoding_utf_32be;
150 extern MSymbol Mcoding_utf_32le;
151 extern MSymbol Mcoding_sjis;
153 /* Parameter keys for mconv_define_coding (). */
154 extern MSymbol Mtype;
155 extern MSymbol Mcharsets;
156 extern MSymbol Mflags;
157 extern MSymbol Mdesignation;
158 extern MSymbol Minvocation;
159 extern MSymbol Mcode_unit;
161 extern MSymbol Mlittle_endian;
163 /* Symbols representing coding system type. */
165 extern MSymbol Miso_2022;
167 /* Symbols appearing in the value of Mfrag parameter. */
168 extern MSymbol Mreset_at_eol;
169 extern MSymbol Mreset_at_cntl;
170 extern MSymbol Meight_bit;
171 extern MSymbol Mlong_form;
172 extern MSymbol Mdesignation_g0;
173 extern MSymbol Mdesignation_g1;
174 extern MSymbol Mdesignation_ctext;
175 extern MSymbol Mdesignation_ctext_ext;
176 extern MSymbol Mlocking_shift;
177 extern MSymbol Msingle_shift;
178 extern MSymbol Msingle_shift_7;
179 extern MSymbol Meuc_tw_shift;
180 extern MSymbol Miso_6429;
181 extern MSymbol Mrevision_number;
182 extern MSymbol Mfull_support;
185 extern MSymbol Mcoding;
186 extern MSymbol Mmaybe;
188 /*** @ingroup m17nConv */
190 @brief Codes that represent the result of code conversion.
192 One of these values is set in @c MConverter-\>result. */
195 @brief ¥³¡¼¥ÉÊÑ´¹¤Î·ë²Ì¤ò¼¨¤¹¥³¡¼¥É.
197 ¤³¤ì¤é¤ÎÃͤΤ¦¤Á°ì¤Ä¤¬ @c MConverter-\>result ¤ËÀßÄꤵ¤ì¤ë¡£ */
199 enum MConversionResult
201 /***en Code conversion is successful. */
202 /***ja ¥³¡¼¥ÉÊÑ´¹¤ÏÀ®¸ù. */
203 MCONVERSION_RESULT_SUCCESS,
205 /***en On decoding, the source contains an invalid byte. */
206 /***ja ¥Ç¥³¡¼¥É»þ¡¢¥½¡¼¥¹¤ËÉÔÀµ¤Ê¥Ð¥¤¥È¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë. */
207 MCONVERSION_RESULT_INVALID_BYTE,
209 /***en On encoding, the source contains a character that cannot be
210 encoded by the specified coding system. */
211 /***ja ¥¨¥ó¥³¡¼¥É»þ¡¢»ØÄê¤Î¥³¡¼¥É·Ï¤Ç¥¨¥ó¥³¡¼¥É¤Ç¤¤Ê¤¤Ê¸»ú¤¬¥½¡¼¥¹¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë. */
212 MCONVERSION_RESULT_INVALID_CHAR,
214 /***en On decoding, the source ends with an incomplete byte sequence. */
215 /***ja ¥Ç¥³¡¼¥É»þ¡¢ÉÔ´°Á´¤Ê¥Ð¥¤¥ÈÎó¤Ç¥½¡¼¥¹¤¬½ª¤ï¤Ã¤Æ¤¤¤ë¡£*/
216 MCONVERSION_RESULT_INSUFFICIENT_SRC,
218 /***en On encoding, the destination is too short to store the result. */
219 /***ja ¥¨¥ó¥³¡¼¥É»þ¡¢·ë²Ì¤ò³ÊǼ¤¹¤ëÎΰ褬û¤«¤¹¤®¤ë¡£ */
220 MCONVERSION_RESULT_INSUFFICIENT_DST,
222 /***en An I/O error occurred in the conversion. */
223 /***ja ¥³¡¼¥ÉÊÑ´¹Ãæ¤Ë I/O ¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¡£ */
224 MCONVERSION_RESULT_IO_ERROR
228 /*** @ingroup m17nConv */
230 @brief Structure to be used in code conversion.
232 Structure to be used in code conversion. The first three members
233 are to control the conversion. */
236 @brief ¥³¡¼¥ÉÊÑ´¹¤ËÍѤ¤¤é¤ì¤ë¹½Â¤ÂÎ.
238 ¥³¡¼¥ÉÊÑ´¹¤ËÍѤ¤¤é¤ì¤ë¹½Â¤ÂΡ£ºÇ½é¤Î£³¤Ä¤Î¥á¥ó¥Ð¤ÏÊÑ´¹¤òÀ©¸æ¤¹¤ë¡£
240 @latexonly \IPAlabel{MConverter} @endlatexonly
246 Set the value to nonzero if the conversion should be lenient.
247 By default, the conversion is strict (i.e. not lenient).
249 If the conversion is strict, the converter stops at the first
250 invalid byte (on decoding) or at the first character not
251 supported by the coding system (on encoding). If this happens,
252 @c MConverter-\>result is set to @c
253 MCONVERSION_RESULT_INVALID_BYTE or @c
254 MCONVERSION_RESULT_INVALID_CHAR accordingly.
256 If the conversion is lenient, on decoding, an invalid byte is
257 kept per se, and on encoding, an invalid character is replaced
258 with "<U+XXXX>" (if the character is a Unicode character) or
259 with "<M+XXXXXX>" (otherwise). */
262 ¸·Ì©¤ÊÊÑ´¹¤¬É¬ÍפǤʤ¤¾ì¹ç¤ËÃͤò 0 °Ê³°¤Ë¤¹¤ë¡£
263 ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢ÊÑ´¹¤Ï¸·Ì©¤Ç¤¢¤ë¡£
265 ÊÑ´¹¤¬¸·Ì©¤È¤Ï¡¢¥Ç¥³¡¼¥É¤ÎºÝ¤Ë¤ÏºÇ½é¤ÎÉÔÀµ¤Ê¥Ð¥¤¥È¤Ç¥³¥ó¥Ð¡¼¥¿¤¬»ß¤Þ¤ë¤³¤È¡¢
266 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤ÏÊÑ´¹¤µ¤ì¤ë¥³¡¼¥É·Ï¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Ê¤¤ºÇ½é¤Îʸ»ú¤Ç¥³¥ó¥Ð¡¼¥¿¤¬»ß¤Þ¤ë¤³¤È¤ò»Ø¤¹¡£
267 ¤³¤ì¤é¤Î¾ì¹ç¡¢@c MConverter-\>result ¤Ï¤½¤ì¤¾¤ì @c
268 MCONVERSION_RESULT_INVALID_BYTE ¤«@c
269 MCONVERSION_RESULT_INVALID_CHAR ¤È¤Ê¤ë¡£
271 ÊÑ´¹¤¬¸·Ì©¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¥Ç¥³¡¼¥É¤ÎºÝ¤ÎÉÔÀµ¤Ê¥Ð¥¤¥È¤Ï¤½¤Î¥Ð¥¤¥È¤Î¤Þ¤Þ»Ä¤ë¡£
272 ¤Þ¤¿¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï¡¢ÉÔÀµ¤Êʸ»ú¤¬ Unicode ʸ»ú¤Î¾ì¹ç¤Ë¤Ï "<U+XXXX>"
273 ¤Ë¡¢¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï "<M+XXXXXX>" ¤ËÃÖ¤´¹¤¨¤é¤ì¤ë¡£ */
278 Set the value to nonzero before decoding or encoding the last
279 block of the byte sequence or the character sequence
280 respectively. The value influences the conversion as below.
282 On decoding, in the case that the last few bytes are too short
283 to form a valid byte sequence:
285 If the value is nonzero, the conversion terminates by error
286 (MCONVERSION_RESULT_INVALID_BYTE) at the first byte of the
289 If the value is zero, the conversion terminates successfully.
290 Those bytes are stored in the converter as carryover and are
291 prepended to the byte sequence of the further conversion.
293 On encoding, in the case that the coding system is context
296 If the value is nonzero, the conversion may produce a byte
297 sequence at the end to reset the context to the initial state
298 even if the source characters are zero.
300 If the value is zero, the conversion never produce such a byte
301 sequence at the end. */
305 ¥Ð¥¤¥ÈÎó¤Î½ªÃ¼¤Î¥Ö¥í¥Ã¥¯¤ò¥Ç¥³¡¼¥É¤¹¤ëºÝ¡¢¤Þ¤¿¤Ïʸ»úÎó¤Î½ªÃ¼¤Î¥Ö¥í¥Ã¥¯¤ò¥¨¥ó¥³¡¼¥É¤¹¤ëºÝ¤Ï¡¢Ãͤò
306 0 °Ê³°¤Ë¤¹¤ë¡£¤³¤ÎÃͤϰʲ¼¤Î¤è¤¦¤ËÊÑ´¹¤Ë±Æ¶Á¤¹¤ë¡£
308 ¥Ç¥³¡¼¥Ç¥£¥ó¥°¤ÎºÝ¤ËºÇ¸å¤Î¿ô¥Ð¥¤¥È¤¬Àµ¤·¤¤¥Ð¥¤¥È¥·¡¼¥¯¥¨¥ó¥¹¤ò·ÁÀ®¤¹¤ë¤Ë¤Ïû¤¹¤®¤ë¾ì¹ç¡§
310 Ãͤ¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÊÑ´¹¤Ï¤½¤Î¥·¡¼¥¯¥¨¥ó¥¹¤ÎºÇ½é¤Î¥Ð¥¤¥È¤Ë¤ª¤¤¤Æ¡¢¥¨¥é¡¼
311 (MCONVERSION_RESULT_INVALID_BYTE) ¤Ç½ª¤ë¡£
313 Ãͤ¬ 0 ¤Ê¤é¤Ð¡¢ÊÑ´¹¤ÏÀ®¸ù¤·¤Æ½ª¤ë¡£
314 ÌäÂê¤Î¿ô¥Ð¥¤¥È¤Ï¥¥ã¥ê¡¼¥ª¡¼¥Ð¤È¤·¤Æ¥³¥ó¥Ð¡¼¥¿¤ËÊÝ»ý¤µ¤ì¡¢ÊÑ´¹¤Î³¤¤ò¹Ô¤¦ºÝ¤ËÊÑ´¹¤¹¤ë¥Ð¥¤¥ÈÎó¤ÎÁ°¤ËÉÕ¤±¤é¤ì¤ë¡£
316 ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎºÝ¤Ë¥³¡¼¥É·Ï¤¬Ê¸Ì®°Í¸¤Î¾ì¹ç¡¢
318 Ãͤ¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥³¥ó¥Æ¥¥¹¥È¤òºÇ½é¤ËÌ᤹¤¿¤á¤Î¥Ð¥¤¥ÈÎ󤬥½¡¼¥¹¤Îʸ»ú¤È¤«¤«¤ï¤ê¤Ê¤¯ÊÑ´¹¤Î·ë²ÌÀ¸À®¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¡£
320 Ãͤ¬ 0 ¤Ê¤é¤Ð¡¢¤½¤Î¤è¤¦¤Ê¥Ð¥¤¥ÈÎó¤ÏÀ¸À®¤µ¤ì¤Ê¤¤¡£
327 If the value is nonzero, it specifies at most how many
328 characters to convert. */
330 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÊÑ´¹¤µ¤ì¤ëºÇÂç¤Îʸ»ú¿ô¤ò»ØÄꤹ¤ë¡£
336 The following three members are to report the result of the
339 °Ê²¼¤Î£³¤Ä¤Î¥á¥ó¥Ð¤ÏÊÑ´¹¤Î·ë²Ì¤òɽ¤¹¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£ */
342 Number of characters most recently decoded or encoded. */
344 ºÇ¶á¤Ë¥Ç¥³¡¼¥É/¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿Ê¸»ú¿ô¡£ */
349 Number of bytes recently decoded or encoded. */
352 ºÇ¶á¤Ë¥Ç¥³¡¼¥É/¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿¥Ð¥¤¥È¿ô¡£ */
357 Result code of the conversion. */
360 ¥³¡¼¥ÉÊÑ´¹¤Î·ë²Ì¤ò¼¨¤¹¥³¡¼¥É¡£ */
362 enum MConversionResult result;
365 Various information about the status of code conversion. The
366 contents depend on the type of coding system. It is assured
367 that @c status is aligned so that any type of casting is safe
368 and at least 256 bytes of memory space can be used. */
371 ¥³¡¼¥ÉÊÑ´¹¤Î¾õ¶·¤Ë´Ø¤¹¤ë¼ï¡¹¤Î¾ðÊó¡£ÆâÍƤϥ³¡¼¥É·Ï¤Î¥¿¥¤¥×¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë¡£
372 @c status ¤Ï¤É¤Î¤è¤¦¤Ê·¿¤Ø¤Î¥¥ã¥¹¥È¤ËÂФ·¤Æ¤â°ÂÁ´¤Ê¤è¤¦¤Ë¥á¥â¥ê¥¢¥é¥¤¥ó¤µ¤ì¤Æ¤ª¤ê¡¢¤Þ¤¿ºÇÄã256¥Ð¥¤¥È¤Î¥á¥â¥êÎΰ褬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ */
381 This member is for internally use only. An application program
382 should never touch it. */
383 /***ja ¤³¤Î¥á¥ó¥Ð¤ÏÆâÉôŪ¤Ë»ÈÍѤµ¤ì¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¿¨¤ì¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ */
388 /*** @ingroup m17nConv */
390 @brief Types of coding system. */
392 @brief ¥³¡¼¥É·Ï¤Î¥¿¥¤¥×. */
397 A coding system of this type supports charsets directly.
398 The dimension of each charset defines the length of bytes to
399 represent a single character of the charset, and a byte
400 sequence directly represents the code-point of a character.
401 The m17n library provides the default decoding and encoding
402 routines of this type. */
405 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ïʸ»ú¥»¥Ã¥È¤òľÀÜ¥µ¥Ý¡¼¥È¤¹¤ë¡£
406 ³Æʸ»ú¥»¥Ã¥È¤Î¼¡¸µ¤È¤Ï¡¢¤½¤Îʸ»ú¥»¥Ã¥È¤Ç°ìʸ»ú¤òɽ¸½¤¹¤ë¤¿¤á¤ËɬÍפʥХ¤¥È¿ô¤Ç¤¢¤ê¡¢¥Ð¥¤¥ÈÎó¤Ïʸ»ú¤Î¥³¡¼¥É¥Ý¥¤¥ó¥È¤òľÀÜɽ¤¹¡£
407 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
409 MCODING_TYPE_CHARSET,
412 A coding system of this type supports byte sequences of a
413 UTF (UTF-8, UTF-16, UTF-32) like structure.
414 The m17n library provides the default decoding and encoding
415 routines of this type. */
418 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢UTF ·Ï (UTF-8, UTF-16, UTF-32) ¤Î¥Ð¥¤¥ÈÎó¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£
419 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
424 A coding system of this type supports byte sequences of an
425 ISO-2022 like structure. The details of each structure are
426 specified by @c MCodingInfoISO2022 .
427 The m17n library provides decoding and encoding routines of
431 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢ISO-2022 ·Ï¤Î¥Ð¥¤¥ÈÎó¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£
432 ³Æ¥³¡¼¥É·Ï¤Î¹½Â¤¤Î¾ÜºÙ¤Ï @c MCodingInfoISO2022 ¤Ç»ØÄꤵ¤ì¤ë¡£
433 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
435 MCODING_TYPE_ISO_2022,
438 A coding system of this type is for byte sequences of
439 miscellaneous structures.
440 The m17n library does not provide decoding and encoding
441 routines of this type. They must be provided by the
442 application program. */
445 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢¤½¤Î¾¤Î¹½Â¤¤Î¥Ð¥¤¥ÈÎó¤Î¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£
446 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥ¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤·¤Ê¤¤¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¦¤Ç½àÈ÷¤¹¤ëɬÍפ¬¤¢¤ë¡£ */
452 /*** @ingroup m17nConv */
454 @brief Bit-masks to specify the detail of coding system whose type is MCODING_TYPE_ISO_2022. */
456 @brief MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Î¾ÜºÙ¤òɽ¤ï¤¹¥Ó¥Ã¥È¥Þ¥¹¥¯. */
458 enum MCodingFlagISO2022
461 On encoding, reset the invocation and designation status to
462 initial at end of line. */
463 /***ja ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢¹ÔËö¤Ç¸Æ¤Ó½Ð¤· (invocation) ¤È»Ø¼¨
464 (designation) ¤Î¾õÂÖ¤ò½é´üÃͤËÌ᤹¡£ */
465 MCODING_ISO_RESET_AT_EOL = 0x1,
468 On encoding, reset the invocation and designation status to
469 initial before any control codes. */
471 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢¤¹¤Ù¤Æ¤ÎÀ©¸æʸ»ú¤ÎÁ°¤Ç¡¢¸Æ¤Ó½Ð¤·
472 (invocation) ¤È»Ø¼¨ (designation) ¤Î¾õÂÖ¤ò½é´üÃͤËÌ᤹¡£ */
473 MCODING_ISO_RESET_AT_CNTL = 0x2,
476 Use the right graphic plane. */
478 ¿Þ·Áʸ»ú½¸¹ç¤Î±¦Â¦¤ò»È¤¦¡£ */
479 MCODING_ISO_EIGHT_BIT = 0x4,
482 Use the non-standard 4 bytes format for designation sequence
483 for charsets JISX0208-1978, GB2312, and JISX0208-1983. */
485 JISX0208-1978, GB2312, JISX0208-1983
486 ¤Îʸ»ú½¸¹ç¤ËÂФ¹¤ë»Ø¼¨¥·¡¼¥¯¥¨¥ó¥¹¤È¤·¤Æ¡¢Èóɸ½à¤Î4¥Ð¥¤¥È·Á¼°¤òÍѤ¤¤ë¡£ */
488 MCODING_ISO_LONG_FORM = 0x8,
491 On encoding, unless explicitly specified, designate charsets
494 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢Ê¸»ú½¸¹ç¤ò G0
496 MCODING_ISO_DESIGNATION_G0 = 0x10,
499 On encoding, unless explicitly specified, designate charsets
500 except for ASCII to G1. */
502 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢ASCII °Ê³°¤Îʸ»ú½¸¹ç¤ò
504 MCODING_ISO_DESIGNATION_G1 = 0x20,
507 On encoding, unless explicitly specified, designate 94-chars
508 charsets to G0, 96-chars charsets to G1. */
510 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢94ʸ»ú½¸¹ç¤ò G0
511 ¤Ë¡¢96ʸ»ú½¸¹ç¤ò G1 ¤Ë»Ø¼¨¤¹¤ë¡£*/
512 MCODING_ISO_DESIGNATION_CTEXT = 0x40,
515 On encoding, encode such charsets not conforming to ISO-2022
516 by ESC % / ..., and encode non-supported Unicode characters by
517 ESC % G ... ESC % @@ . On decoding, handle those escape
520 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢ISO-2022 ¤Ë¹çÃפ·¤Ê¤¤Ê¸»ú½¸¹ç¤ò ESC % / ...
521 ¤Ç¥¨¥ó¥³¡¼¥É¤¹¤ë¡£¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ Unicode ʸ»ú¤Ï ESC % G ...
522 ESC % @@ ¤Ç¥¨¥ó¥³¡¼¥É¤¹¤ë¡£
523 ¥Ç¥³¡¼¥É¤ÎºÝ¡¢¤³¤ì¤é¤Î¥¨¥¹¥±¡¼¥×¡¦¥·¡¼¥±¥ó¥¹¤ò²ò¼á¤¹¤ë¡£ */
524 MCODING_ISO_DESIGNATION_CTEXT_EXT = 0x80,
527 Use locking shift. */
529 ¥í¥Ã¥¥ó¥°¥·¥Õ¥È¤ò»È¤¦¡£ */
530 MCODING_ISO_LOCKING_SHIFT = 0x100,
533 Use single shift (SS2 (0x8E or ESC N), SS3 (0x8F or ESC O)). */
535 ¥·¥ó¥°¥ë¥·¥Õ¥È (SS2 (0x8E or ESC N), SS3 (0x8F or ESC O)) ¤ò»È¤¦¡£ */
536 MCODING_ISO_SINGLE_SHIFT = 0x200,
539 Use 7-bit single shift 2 (SS2 (0x19)). */
541 7¥Ó¥Ã¥È¥·¥ó¥°¥ë¥·¥Õ¥È 2 (SS2 (0x19)) ¤ò»È¤¦¡£ */
542 MCODING_ISO_SINGLE_SHIFT_7 = 0x400,
545 Use EUC-TW like special shifting. */
547 EUC-TW É÷¤ÎÆÃÊ̤ʥ·¥Õ¥È¤ò»È¤¦¡£ */
548 MCODING_ISO_EUC_TW_SHIFT = 0x800,
551 Use ISO-6429 escape sequences to indicate direction.
552 Not yet implemented. */
554 ISO-6429 ¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥¯¥¨¥ó¥¹¤ÇÊý¸þ¤ò»Ø¼¨¤¹¤ë¡£Ì¤¼ÂÁõ¡£ */
555 MCODING_ISO_ISO6429 = 0x1000,
558 On encoding, if a charset has revision number, produce escape
559 sequences to specify the number. */
561 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Ê¸»ú¥»¥Ã¥È¤Ë revision number
562 ¤¬¤¢¤ì¤Ð¤½¤ì¤òɽ¤ï¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥¯¥¨¥ó¥¹¤òÀ¸À®¤¹¤ë¡£ */
563 MCODING_ISO_REVISION_NUMBER = 0x2000,
566 Support all ISO-2022 charsets. */
568 ISO-2022 ¤ÎÁ´Ê¸»ú½¸¹ç¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£ */
569 MCODING_ISO_FULL_SUPPORT = 0x3000,
575 /*** @ingroup m17nConv */
577 @brief Structure for a coding system of type #MCODING_TYPE_ISO_2022.
579 Structure for extra information about a coding system of type
580 MCODING_TYPE_ISO_2022. */
583 @brief #MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѹ½Â¤ÂÎ.
585 MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѤòÊÝ»ý¤¹¤ë¤¿¤á¤Î¹½Â¤ÂΡ£
587 @latexonly \IPAlabel{MCodingInfoISO2022} @endlatexonly */
592 Table of numbers of an ISO2022 code extension element invoked
593 to each graphic plane (Graphic Left and Graphic Right). -1
594 means no code extension element is invoked to that plane. */
597 ³Æ¿Þ·Áʸ»úÎΰè (Graphic Left ¤È Graphic Right) ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤ë¡¢
598 ISO2022 Éä¹ç³ÈÄ¥Í×ÁǤÎÈÖ¹æ¤Î¥Æ¡¼¥Ö¥ë¡£-1
599 ¤Ï¤½¤ÎÎΰè¤Ë¤É¤ÎÉä¹ç³ÈÄ¥Í×ÁǤâ¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò¼¨¤¹¡£ */
601 int initial_invocation[2];
604 Table of code extension elements. The Nth element corresponds
605 to the Nth charset in $CHARSET_NAMES, which is an argument given
606 to the mconv_define_coding () function.
608 If an element value is 0..3, it specifies a graphic register
609 number to designate the corresponds charset. In addition, the
610 charset is initially designated to that graphic register.
612 If the value is -4..-1, it specifies a graphic register number
613 0..3 respectively to designate the corresponds charset.
614 Initially, the charset is not designated to any graphic
618 Éä¹ç³ÈÄ¥Í×ÁǤΥơ¼¥Ö¥ë¡£NÈÖÌܤÎÍ×ÁǤϡ¢$CHARSET_NAMES ¤Î N
619 ÈÖÌܤÎʸ»ú¥»¥Ã¥È¤ËÂбþ¤¹¤ë¡£$CHARSET_NAMES ¤Ï´Ø¿ô
620 mconv_define_coding () ¤Î°ú¿ô¤È¤Ê¤ë¡£
622 Ãͤ¬ 0..3 ¤À¤Ã¤¿¤é¡¢Âбþ¤¹¤ëʸ»ú¥»¥Ã¥È¤ò G0..G3
623 ¤Î¤½¤ì¤¾¤ì¤Ë»Ø¼¨¤¹¤ë¤³¤È¡¢¤Þ¤¿½é´ü¾õÂ֤Ǥ¹¤Ç¤Ë G0..G3
624 ¤Ë»Ø¼¨¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
626 Ãͤ¬ -4..-1 ¤À¤Ã¤¿¤é¡¢Âбþ¤¹¤ëʸ»ú¥»¥Ã¥È¤ò G0..G3
627 ¤Î¤½¤ì¤¾¤ì¤Ë»Ø¼¨¤¹¤ë¤³¤È¡¢¤·¤«¤·½é´ü¾õÂ֤ǤϤɤ³¤Ë¤â»Ø¼¨¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
630 char designations[32];
633 Bitwise OR of @c enum @c MCodingFlagISO2022 . */
636 @c enum @c MCodingFlagISO2022 ¤Î¥Ó¥Ã¥Èñ°Ì¤Ç¤ÎÏÀÍý OR */
640 } MCodingInfoISO2022;
643 /*** @ingroup m17nConv */
645 @brief Structure for extra information about a coding system of type #MCODING_TYPE_UTF.
649 @brief #MCODING_TYPE_UTF ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѤι½Â¤ÂÎ.
651 @latexonly \IPApage{MCodingInfoUTF} @endlatexonly
653 @latexonly \IPAlabel{MCodingInfoUTF} @endlatexonly */
658 Specify bits of a code unit. The value must be 8, 16, or 32. */
660 ¥³¡¼¥ÉĹ¡Ê¥Ó¥Ã¥È¿ô¡Ë¤Î»ØÄê¡£ÃÍ¤Ï 8, 16, 32 ¤Î¤¤¤º¤ì¤«¡£ */
664 Specify how to handle the heading BOM (byte order mark). The
665 value must be 0, 1, or 2. The meanings are as follows:
667 0: On decoding, check the first two byte. If they are BOM,
668 decide endian by them. If not, decide endian by the member @c
669 endian. On encoding, produce byte sequence according to
670 @c endian with heading BOM.
672 1: On decoding, do not handle the first two bytes as BOM, and
673 decide endian by @c endian. On encoding, produce byte sequence
674 according to @c endian without BOM.
676 2: On decoding, handle the first two bytes as BOM and decide
677 ending by them. On encoding, produce byte sequence according to
678 @c endian with heading BOM.
680 If <code_unit_bits> is 8, the value has no meaning. */
683 ÀèƬ¤Î BOM (¥Ð¥¤¥È¥ª¡¼¥À¡¼¥Þ¡¼¥¯) ¤Î¼è¤ê°·¤¤¤ò»ØÄꤹ¤ë¡£ÃÍ¤Ï 0,
684 1, 2 ¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ê¡¢¤½¤ì¤¾¤ì¤Î°ÕÌ£¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
686 0: ¥Ç¥³¡¼¥É¤ÎºÝ¤ËºÇ½é¤Î 2 ¥Ð¥¤¥È¤òÄ´¤Ù¤ë¡£¤â¤·¤½¤ì¤¬ BOM
687 ¤Ç¤¢¤ì¤Ð¡¢¥¨¥ó¥Ç¥£¥¢¥ó¤ò¤½¤ì¤ÇȽÄꤹ¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢¥á¥ó¥Ð @c
688 endian ¤Ë½¾¤Ã¤Æ¥¨¥ó¥Ç¥£¥¢¥ó¤ò·èÄꤹ¤ë¡£¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï @c
689 endian ¤Ë½¾¤Ã¤¿¥Ð¥¤¥ÈÎó¤òÀèƬ¤Ë BOM ÉÕ¤ÇÀ¸À®¤¹¤ë¡£
691 1: ¥Ç¥³¡¼¥É¤ÎºÝ¡¢ºÇ½é¤Î 2 ¥Ð¥¤¥È¤ò BOM ¤È¤·¤Æ°·¤ï¤º¡¢¥¨¥ó¥Ç¥£¥¢¥ó¤Ï
692 @c endian ¤ÇȽÄꤹ¤ë¡£¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï¡¢BOM ¤ò½ÐÎϤ»¤º¡¢
693 @c endian ¤Ë±þ¤¸¤¿¥Ð¥¤¥ÈÎó¤òÀ¸À®¤¹¤ë¡£
695 2: ¥Ç¥³¡¼¥É¤ÎºÝ¤ËºÇ½é¤Î2¥Ð¥¤¥È¤ò BOM¤È¤·¤Æ°·¤¤¡¢¤½¤ì¤Ë½¾¤Ã¤Æ¥¨¥ó¥Ç¥£¥¢¥ó¤òȽÄꤹ¤ë¡£
696 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï @c endian ¤Ë±þ¤¸¤¿¥Ð¥¤¥ÈÎó¤òÀèƬ¤Ë BOM ÉÕ¤¤ÇÀ¸À®¤¹¤ë¡£ */
700 Specify the endian type. The value must be 0 or 1. 0 means
701 little endian, and 1 means big endian.
703 If <code_unit_bits> is 8, the value has no meaning. */
705 ¥¨¥ó¥Ç¥£¥¢¥ó¤Î¥¿¥¤¥×¤ò»ØÄꤹ¤ë¡£ÃÍ¤Ï 0 ¤« 1 ¤Ç¤¢¤ê¡¢0
706 ¤Ê¤é¤Ð¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó¡¢1 ¤Ê¤é¤Ð¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó¤Ç¤¢¤ë¡£
708 <code_unit_bits> ¤¬ 8 ¤Î¾ì¹ç¤Ë¤Ï¡¢¤³¤ÎÃͤϰÕÌ£¤ò»ý¤¿¤Ê¤¤¡£
714 extern MSymbol mconv_define_coding (const char *name, MPlist *plist,
715 int (*resetter) (MConverter *),
716 int (*decoder) (const unsigned char *, int,
717 MText *, MConverter *),
718 int (*encoder) (MText *, int, int,
719 unsigned char *, int,
723 extern MSymbol mconv_resolve_coding (MSymbol symbol);
725 extern int mconv_list_codings (MSymbol **symbols);
727 extern MConverter *mconv_buffer_converter (MSymbol coding,
728 const unsigned char *buf,
731 extern MConverter *mconv_stream_converter (MSymbol coding, FILE *fp);
733 extern int mconv_reset_converter (MConverter *converter);
735 extern void mconv_free_converter (MConverter *converter);
737 extern MConverter *mconv_rebind_buffer (MConverter *converter,
738 const unsigned char *buf, int n);
740 extern MConverter *mconv_rebind_stream (MConverter *converter, FILE *fp);
742 extern MText *mconv_decode (MConverter *converter, MText *mt);
744 MText *mconv_decode_buffer (MSymbol name, const unsigned char *buf, int n);
746 MText *mconv_decode_stream (MSymbol name, FILE *fp);
748 extern int mconv_encode (MConverter *converter, MText *mt);
750 extern int mconv_encode_range (MConverter *converter, MText *mt,
753 extern int mconv_encode_buffer (MSymbol name, MText *mt,
754 unsigned char *buf, int n);
756 extern int mconv_encode_stream (MSymbol name, MText *mt, FILE *fp);
758 extern int mconv_getc (MConverter *converter);
760 extern int mconv_ungetc (MConverter *converter, int c);
762 extern int mconv_putc (MConverter *converter, int c);
764 extern MText *mconv_gets (MConverter *converter, MText *mt);
766 /* (S4) Locale related functions corresponding to libc functions */
768 /*** @ingroup m17nShell */
769 /***en @defgroup m17nLocale Locale */
770 /***ja @defgroup m17nLocale ¥í¥±¡¼¥ë */
773 /*** @ingroup m17nLocale */
775 @brief @c struct @c MLocale.
777 The structure @c MLocale is used to hold information about name,
778 language, territory, modifier, codeset, and the corresponding
779 coding system of locales.
781 The contents of this structure are implementation dependent. Its
782 internal structure is concealed from application programs. */
785 @brief @c MLocale ¹½Â¤ÂÎ.
787 @c MLocale ¹½Â¤ÂΤϡ¢¥í¥±¡¼¥ë¤Î̾Á°¡¢¸À¸ì¡¢ÃÏ°è¡¢¥â¥Ç¥£¥Õ¥¡¥¤¥¢¡¢¥³¡¼¥É¥»¥Ã¥È¡¢¤ª¤è¤ÓÂбþ¤¹¤ë¥³¡¼¥É·Ï¤Ë´Ø¤¹¤ë¾ðÊó¤òÊÝ»ý¤¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£
789 ¤³¤Î¹½Â¤ÂΤÎÆâÍƤϼÂÁõ¤Ë°Í¸¤¹¤ë¡£
790 ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */
794 mlocale_get_prop () */
796 typedef struct MLocale MLocale;
800 extern MSymbol Miso639_1, Miso639_2;
801 extern MSymbol Mterritory;
802 extern MSymbol Mmodifier;
803 extern MSymbol Mcodeset;
805 extern MPlist *mlanguage_list (void);
807 extern MSymbol mlanguage_code (MSymbol language, int len);
809 extern MPlist *mlanguage_name_list (MSymbol language, MSymbol target,
810 MSymbol script, MSymbol territory);
812 extern MText *mlanguage_text (MSymbol language);
814 extern MPlist *mscript_list (void);
816 extern MPlist *mscript_language_list (MSymbol script);
818 extern MSymbol mlanguage_name (MSymbol language);
820 extern MLocale *mlocale_set (int category, const char *locale);
822 extern MSymbol mlocale_get_prop (MLocale *locale, MSymbol key);
824 extern int mtext_ftime (MText *mt, const char *format, const struct tm *tm,
827 extern MText *mtext_getenv (const char *name);
829 extern int mtext_putenv (MText *mt);
831 extern int mtext_coll (MText *mt1, MText *mt2);
834 * (9) Miscellaneous functions of libc level (not yet implemented)
838 extern int mtext_width (MText *mt, int n);
839 extern MText *mtext_tolower (MText *mt);
840 extern MText *mtext_toupper (MText *mt);
847 /*** @ingroup m17nShell */
848 /***en @defgroup m17nInputMethod Input Method (basic) */
849 /***ja @defgroup m17nInputMethod ÆþÎϥ᥽¥Ã¥É (´ðËÜÉôʬ) */
852 /*** @addtogroup m17nInputMethod
855 /* Struct forward declaration. */
856 typedef struct MInputMethod MInputMethod;
857 typedef struct MInputContext MInputContext;
860 @brief Type of input method callback functions.
862 This is the type of callback functions called from input method
863 drivers. #IC is a pointer to an input context, #COMMAND is a name
864 of callback for which the function is called. */
866 @brief ÆþÎϥ᥽¥Ã¥É¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î·¿Àë¸À.
868 ÆþÎϥ᥽¥Ã¥É¤«¤é¸Æ¤Ð¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î·¿¤Ç¤¢¤ë¡£#IC
869 ¤ÏÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¡¢#COMMAND ¤Ï´Ø¿ô¤¬¸Æ¤Ð¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯¤Î̾Á°¤Ç¤¢¤ë¡£ */
871 typedef void (*MInputCallbackFunc) (MInputContext *ic, MSymbol command);
875 @brief Structure of input method driver.
877 The type @c MInputDriver is the structure of an input method driver that
878 contains several functions to handle an input method. */
881 @brief ÆþÎϥɥ饤¥ÐÍѹ½Â¤ÂÎ.
883 @c MInputDriver ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¤ò¼è¤ê°·¤¦´Ø¿ô¤ò´Þ¤àÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Î¹½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
885 typedef struct MInputDriver
888 @brief Open an input method.
890 This function opens the input method $IM. It is called from the
891 function minput_open_im () after all member of $IM but <info>
892 set. If opening $IM succeeds, it returns 0. Otherwise, it
893 returns -1. The function can setup $IM->info to keep various
894 information that is referred by the other driver functions. */
897 @brief ÆþÎϥ᥽¥Ã¥É¤ò¥ª¡¼¥×¥ó¤¹¤ë.
899 ¤³¤Î´Ø¿ô¤Ï¡¢ÆþÎϥ᥽¥Ã¥É $IM ¤ò¥ª¡¼¥×¥ó¤¹¤ë¡£$IM ¤Î <info>
900 °Ê³°¤ÎÁ´¥á¥ó¥Ð¡¼¤¬¥»¥Ã¥È¤µ¤ì¤¿¸å¤Ç¡¢´Ø¿ô minput_open_im ()
901 ¤«¤é¸Æ¤Ð¤ì¤ë¡£$IM ¤ò¥ª¡¼¥×¥ó¤Ç¤¤ì¤Ð 0 ¤ò¡¢¤Ç¤¤Ê¤±¤ì¤Ð -1¤òÊÖ¤¹¡£
903 ¤òÀßÄꤷ¤Æ¡¢Â¾¤Î¥É¥é¥¤¥Ð´Ø¿ô¤«¤é»²¾È¤µ¤ì¤ë¾ðÊó¤òÊÝ»ý¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
906 int (*open_im) (MInputMethod *im);
909 @brief Close an input method.
911 This function closes the input method $IM. It is called from
912 the function minput_close_im (). It frees all memory allocated
913 for $IM->info (if any) after finishing all the tasks of closing
914 the input method. But, the other members of $IM should not be
918 @brief ÆþÎϥ᥽¥Ã¥É¤ò¥¯¥í¡¼¥º¤¹¤ë.
920 ¤³¤Î´Ø¿ô¤Ï¡¢ÆþÎϥ᥽¥Ã¥É $IM ¤ò¥¯¥í¡¼¥º¤¹¤ë¡£´Ø¿ô
921 minput_close_im () ¤«¤é¸Æ¤Ð¤ì¤ë¡£
922 ÆþÎϥ᥽¥Ã¥É¤Î¥¯¥í¡¼¥º¤¬¤¹¤Ù¤Æ½ªÎ»¤·¤¿»þÅÀ¤Ç¡¢¤³¤Î´Ø¿ô¤Ï$IM->info
923 ¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥á¥â¥ê¤ò(¤¢¤ì¤Ð)¤¹¤Ù¤Æ³«Êü¤¹¤ë¡£
924 ¤¿¤À¤·¡¢$IM ¤Î¾¤Î¥á¥ó¥Ð¤Ë±Æ¶Á¤òÍ¿¤¨¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
927 void (*close_im) (MInputMethod *im);
930 @brief Create an input context.
932 This function creates the input context $IC. It is called from
933 the function minput_create_ic () after all members of $IC but
934 <info> are set. If creating $IC succeeds, it returns 0.
935 Otherwise, it returns -1. The function can setup $IC->info to
936 keep various information that is referred by the other driver
940 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÀ¸À®¤¹¤ë.
942 ¤³¤Î´Ø¿ô¤ÏÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC ¤òÀ¸À®¤¹¤ë¡£
943 $IC ¤Î <info> °Ê³°¤ÎÁ´¥á¥ó¥Ð¡¼¤¬¥»¥Ã¥È¤µ¤ì¤¿¸å¤Ç¡¢´Ø¿ô
944 minput_create_ic () ¤«¤é¸Æ¤Ð¤ì¤ë¡£
945 $IC ¤òÀ¸À®¤Ç¤¤ì¤Ð 0 ¤ò¡¢¤Ç¤¤Ê¤±¤ì¤Ð -1 ¤òÊÖ¤¹¡£
946 ¤³¤Î´Ø¿ô¤Ï $IC->info ¤òÀßÄꤷ¤Æ¡¢Â¾¤Î¥É¥é¥¤¥Ð´Ø¿ô¤«¤é»²¾È¤µ¤ì¤ë¾ðÊó¤òÊÝ»ý¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£ */
949 int (*create_ic) (MInputContext *ic);
952 @brief Destroy an input context.
954 This function is called from the function minput_destroy_ic ()
955 and destroys the input context $IC. It frees all memory
956 allocated for $IC->info (if any) after finishing all the tasks
957 of destroying the input method. But, the other members of $IC
958 should not be touched. */
961 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÇ˲õ¤¹¤ë.
963 ´Ø¿ô minput_destroy_ic () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC
964 ¤òÇ˲õ¤¹¤ë¡£ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÎÇ˲õ¤¬¤¹¤Ù¤Æ½ªÎ»¤·¤¿»þÅÀ¤Ç¡¢$IC->info
965 ¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥á¥â¥ê¤ò(¤¢¤ì¤Ð)¤¹¤Ù¤Æ³«Êü¤¹¤ë¡£¤¿¤À¤·¡¢$IC
966 ¤Î¾¤Î¥á¥ó¥Ð¤Ë±Æ¶Á¤òÍ¿¤¨¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ */
968 void (*destroy_ic) (MInputContext *ic);
971 @brief Filter an input key.
973 This function is called from the function minput_filter () and
974 filters an input key. $KEY and $ARG are the same as what given
977 The task of the function is to handle $KEY, update the internal
978 state of $IC. If $KEY is absorbed by the input method and no
979 text is produced, it returns 1. Otherwise, it returns 0.
981 It may update $IC->status, $IC->preedit, $IC->cursor_pos,
982 $IC->ncandidates, $IC->candidates, and $IC->produced if that is
983 necessary for the member <callback>.
985 The meaning of $ARG depends on the input method river. See the
986 documentation of @c minput_default_driver and @c
987 minput_gui_driver for instance. */
990 @brief ÆþÎÏ¥¡¼¤ò¥Õ¥£¥ë¥¿¤¹¤ë.
992 ´Ø¿ô minput_filter () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥¡¼¤ò¥Õ¥£¥ë¥¿¤¹¤ë¡£°ú¿ô
993 $KEY, $ARG ¤Ï´Ø¿ô minput_filter () ¤Î¤â¤Î¤ÈƱ¤¸¡£
995 ¤³¤Î´Ø¿ô¤Ï $KEY ¤ò½èÍý¤·¡¢$IC ¤ÎÆâÉô¾õÂÖ¤ò¹¹¿·¤¹¤ë¡£ $KEY
996 ¤¬ÆþÎϥ᥽¥Ã¥É¤ËµÛ¼ý¤µ¤ì¤Æ¥Æ¥¥¹¥È¤¬À¸À®¤µ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢
997 1 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤¹¡£
999 ¥á¥ó¥Ð <callback> ¤ËɬÍפǤ¢¤ì¤Ð¡¢$IC->status, $IC->preedit,
1000 $IC->cursor_pos, $IC->ncandidates, $IC->candidates,
1001 $IC->produced ¤ò¹¹¿·¤Ç¤¤ë¡£
1003 $ARG ¤Î°ÕÌ£¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë°Í¸¤¹¤ë¡£Îã¤Ï @c
1004 minput_default_driver ¤Þ¤¿¤Ï @c minput_gui_driver
1005 ¤ÎÀâÌÀ¤ò»²¾È¤Î¤³¤È¡£ */
1007 int (*filter) (MInputContext *ic, MSymbol key, void *arg);
1010 @brief Lookup a produced text in an input context.
1012 It is called from the function minput_lookup () and looks up a
1013 produced text in the input context $IC. This function
1014 concatenate a text produced by the input key $KEY (if any) to
1015 M-text $MT. If $KEY was correctly handled by the input method
1016 of $IC, it returns 0. Otherwise, it returns 1.
1018 The meaning of $ARG depends on the input method driver. See the
1019 documentation of @c minput_default_driver and @c
1020 minput_gui_driver for instance. */
1023 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÇÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È¤Î³ÍÆÀ.
1025 ´Ø¿ô minput_lookup () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC
1026 ¤ÇÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È¤ò¸¡º÷¤¹¤ë¡£ÆþÎÏ¥¡¼ $KEY
1027 ¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È¤¬¤¢¤ì¤Ð¡¢M-text $MT ¤ËÄɲ乤롣 $KEY
1028 ¤¬ÆþÎϥ᥽¥Ã¥É $IC ¤Ë¤è¤Ã¤ÆÀµ¤·¤¯½èÍý¤µ¤ì¤ì¤Ð 0 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 1 ¤òÊÖ¤¹¡£
1030 $ARG ¤Î°ÕÌ£¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë°Í¸¤¹¤ë¡£Îã¤Ï @c
1031 minput_default_driver ¤Þ¤¿¤Ï @c minput_gui_driver ¤ÎÀâÌÀ¤ò»²¾È¤Î
1034 int (*lookup) (MInputContext *ic, MSymbol key, void *arg, MText *mt);
1037 @brief List of callback functions.
1039 List of callback functions. Keys are one of
1040 #Minput_preedit_start, #Minput_preedit_draw,
1041 #Minput_preedit_done, #Minput_status_start, #Minput_status_draw,
1042 #Minput_status_done, #Minput_candidates_start,
1043 #Minput_candidates_draw, #Minput_candidates_done,
1044 #Minput_set_spot, #Minput_toggle, #Minput_reset,
1045 #Minput_get_surrounding_text, #Minput_delete_surrounding_text.
1046 Values are functions of type #MInputCallbackFunc. */
1048 @brief ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î¥ê¥¹¥È.
1050 ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î¥ê¥¹¥È¡£¥¡¼¤Ï¼¡¤Î¤¤¤º¤ì¤«¡£
1051 #Minput_preedit_start, #Minput_preedit_draw,
1052 #Minput_preedit_done, #Minput_status_start, #Minput_status_draw,
1053 #Minput_status_done, #Minput_candidates_start,
1054 #Minput_candidates_draw, #Minput_candidates_done,
1055 #Minput_set_spot, #Minput_toggle, #Minput_reset,
1056 #Minput_get_surrounding_text, #Minput_delete_surrounding_text¡£
1057 ÃͤÏ#MInputCallbackFunc ·¿¤Î´Ø¿ô¡£ */
1058 MPlist *callback_list;
1063 extern MInputDriver minput_default_driver;
1065 extern MSymbol Minput_driver;
1067 extern MInputDriver *minput_driver;
1069 /** Symbols for callback commands. */
1070 extern MSymbol Minput_preedit_start;
1071 extern MSymbol Minput_preedit_draw;
1072 extern MSymbol Minput_preedit_done;
1073 extern MSymbol Minput_status_start;
1074 extern MSymbol Minput_status_draw;
1075 extern MSymbol Minput_status_done;
1076 extern MSymbol Minput_candidates_start;
1077 extern MSymbol Minput_candidates_draw;
1078 extern MSymbol Minput_candidates_done;
1079 extern MSymbol Minput_set_spot;
1080 extern MSymbol Minput_toggle;
1081 extern MSymbol Minput_reset;
1082 extern MSymbol Minput_get_surrounding_text;
1083 extern MSymbol Minput_delete_surrounding_text;
1085 /** Symbols for special input key event. */
1086 extern MSymbol Minput_focus_move;
1087 extern MSymbol Minput_focus_in;
1088 extern MSymbol Minput_focus_out;
1090 /** Symbols describing input method command/variable. */
1091 extern MSymbol Minherited;
1092 extern MSymbol Mcustomized;
1093 extern MSymbol Mconfigured;
1096 @brief Structure of input method.
1098 The type @c MInputMethod is the structure of input method
1101 @brief ÆþÎϥ᥽¥Ã¥É¤Î¹½Â¤ÂÎ.
1103 @c MInputMethod ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¥ª¥Ö¥¸¥§¥¯¥ÈÍѤι½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
1107 /***en Which language this input method is for. The value is @c
1108 Mnil if the input method is foreign. */
1109 /***ja ¤É¤Î¸À¸ìÍѤÎÆþÎϥ᥽¥Ã¥É¤«¡£
1110 ÆþÎϥ᥽¥Ã¥É¤¬³°Éô¤Î¤â¤Î¤Ç¤¢¤ë¾ì¹ç¤ÎÃÍ¤Ï @c Mnil ¡£ */
1113 /***en Name of the input method. If the input method is foreign, it
1114 must has a property of key @c Minput_driver and the value must be a
1115 pointer to a proper input method driver. */
1116 /***ja ÆþÎϥ᥽¥Ã¥É¤Î̾Á°¡£³°Éô¥á¥½¥Ã¥É¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢@c
1117 Minput_driver ¤ò¥¡¼¤È¤¹¤ë¥×¥í¥Ñ¥Æ¥£¤ò»ý¤Á¡¢¤½¤ÎÃͤÏŬÀÚ¤ÊÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£*/
1120 /***en Input method driver of the input method. */
1121 /***ja ¤½¤ÎÆþÎϥ᥽¥Ã¥ÉÍѤÎÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¡£ */
1122 MInputDriver driver;
1124 /***en The argument given to minput_open_im (). */
1125 /***ja minput_open_im () ¤ËÅϤµ¤ì¤ë°ú¿ô¡£ */
1128 /***en Pointer to extra information that <driver>.open_im ()
1130 /***ja <driver>.open_im () ¤¬ÀßÄꤹ¤ëÄɲþðÊó¤Ø¤Î¥Ý¥¤¥ó¥¿¡£ */
1137 @brief Bit-masks to specify how candidates of input method is changed. */
1140 @brief ÆþÎϥ᥽¥Ã¥É¤ÎÆþÎϸõÊ䤬¤É¤¦Êѹ¹¤µ¤ì¤¿¤«¤ò¼¨¤¹¥Ó¥Ã¥È¥Þ¥¹¥¯. */
1142 enum MInputCandidatesChanged
1144 MINPUT_CANDIDATES_LIST_CHANGED = 1,
1145 MINPUT_CANDIDATES_INDEX_CHANGED = 2,
1146 MINPUT_CANDIDATES_SHOW_CHANGED = 4,
1147 MINPUT_CANDIDATES_CHANGED_MAX
1154 @brief Structure of input context.
1156 The type @c MInputContext is the structure of input context
1160 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥ÈÍѹ½Â¤ÂÎ.
1162 @c MInputContext ¤Ï¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¥ª¥Ö¥¸¥§¥¯¥ÈÍѤι½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
1164 struct MInputContext
1166 /***en Backward pointer to the input method. It is set up be the
1167 function minput_create_ic (). */
1168 /***ja ÆþÎϥ᥽¥Ã¥É¤Ø¤ÎµÕ¥Ý¥¤¥ó¥¿¡£´Ø¿ô minput_create_ic ()
1169 ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1172 /***en M-text produced by the input method. It is set up by the
1173 function minput_lookup () . */
1174 /***ja ÆþÎϥ᥽¥Ã¥É¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë M-text¡£´Ø¿ô minput_lookup ()
1175 ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1178 /***en Argument given to the function minput_create_im (). */
1179 /***ja ´Ø¿ô minput_create_ic () ¤ËÅϤµ¤ì¤ë°ú¿ô¡£ */
1182 /***en Flag telling whether the input context is currently active or
1183 inactive. The value is set to 1 (active) when the input context
1184 is created. It is toggled by the function minput_toggle (). */
1185 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬¥¢¥¯¥Æ¥£¥Ö¤«¤É¤¦¤«¤ò¼¨¤¹¥Õ¥é¥°¡£
1186 ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬À¸À®¤µ¤ì¤¿»þÅÀ¤Ç¤ÏÃÍ¤Ï 1 ¡Ê¥¢¥¯¥Æ¥£¥Ö¡Ë¤Ç¤¢¤ê¡¢´Ø¿ô
1187 minput_toggle () ¤Ë¤è¤Ã¤Æ¥È¥°¥ë¤µ¤ì¤ë¡£ */
1190 /***en Spot location and size of the input context. */
1191 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Î¥¹¥Ý¥Ã¥È¤Î°ÌÃÖ¤ÈÂ礤µ. */
1193 /***en X and Y coordinate of the spot. */
1194 /***ja ¥¹¥Ý¥Ã¥È¤Î X, Y ºÂɸ. */
1197 /***en Ascent and descent pixels of the line of the spot. */
1198 /***ja ¥¹¥Ý¥Ã¥È¤Î¥¢¥»¥ó¥È¤È¥Ç¥£¥»¥ó¥È¤Î¥Ô¥¯¥»¥ë¿ô. */
1199 int ascent, descent;
1201 /***en Font size for preedit text in 1/10 point. */
1202 /***ja preedit ¥Æ¥¥¹¥ÈÍѤΥե©¥ó¥È¥µ¥¤¥º (1/10 ¥Ý¥¤¥ó¥Èñ°Ì). */
1205 /***en M-text at the spot, or NULL. */
1206 /***ja ¥¹¥Ý¥Ã¥È¾å¤Î M-text¡¢¤Þ¤¿¤Ï NULL. */
1209 /***en Character position in <mt> at the spot. */
1210 /***ja <mt> ¤Ë¤ª¤±¤ë¥¹¥Ý¥Ã¥È¤Îʸ»ú°ÌÃÖ. */
1214 /***en The usage of the following members depends on the input
1215 method driver. The descriptions below are for the driver of an
1216 internal input method. They are set by the function
1217 <im>->driver.filter (). */
1218 /***ja °Ê²¼¤Î¥á¥ó¥Ð¤Î»ÈÍÑË¡¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë¡£
1219 °Ê²¼¤ÎÀâÌÀ¤Ï¡¢ÆâÉôÆþÎϥ᥽¥Ã¥ÉÍѤÎÆþÎϥɥ饤¥Ð¤ËÂФ¹¤ë¤â¤Î¤Ç¤¢¤ë¡£
1220 ¤³¤ì¤é¤Ï´Ø¿ô <im>->driver.filter () ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1222 /***en Pointer to extra information that <im>->driver.create_ic ()
1223 setups. It is used to record the internal state of the input
1225 /***ja <im>->driver.create_ic () ¤¬ÀßÄꤹ¤ëÄɲþðÊó¤Ø¤Î¥Ý¥¤¥ó¥¿¡£
1226 ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÎÆâÉô¾õÂÖ¤òµÏ¿¤¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£ */
1229 /***en M-text describing the current status of the input
1231 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Î¸½ºß¤Î¾õÂÖ¤òɽ¤¹ M-text */
1234 /***en The function <im>->driver.filter () sets the value to 1 when
1235 it changes <status>. */
1236 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢<status> ¤òÊѤ¨¤¿ºÝ¤Ë¤³¤ÎÃͤò 1
1240 /***en M-text containing the current preedit text. The function
1241 <im>->driver.filter () sets the value. */
1242 /***ja ¸½ºß¤Î preedit ¥Æ¥¥¹¥È¤ò´Þ¤à M-text¡£´Ø¿ô
1243 <im>->driver.filter () ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1246 /***en The function <im>->driver.filter () sets the value to 1 when
1247 it changes <preedit>. */
1248 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢<preedit> ¤òÊѤ¨¤¿ºÝ¤Ë¤³¤ÎÃͤò
1250 int preedit_changed;
1252 /***en Cursor position of <preedit>. */
1253 /***ja <preedit>¤Î¥«¡¼¥½¥ë°ÌÃÖ */
1256 /***en The function <im>->driver.filter () sets the value to 1 when
1257 it changes <cursor_pos>. */
1258 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢<cursor_pos> ¤òÊѤ¨¤¿ºÝ¤Ë¤³¤ÎÃͤò
1260 int cursor_pos_changed;
1262 /***en Plist of the current candidate groups. Each element is an
1263 M-text or a plist. If an element is an M-text (i.e. the key is Mtext),
1264 candidates in that group are characters in the M-text. If it is
1265 a plist (i.e. the key is Mplist), each element is an M-text, and
1266 candidates in that group are those M-texts. */
1267 /***ja ¸½ºß¤Î¸õÊ䥰¥ë¡¼¥×¤Î Plist ¡£³ÆÍ×ÁÇ¤Ï M-text ¤« plist ¤Ç¤¢¤ë¡£
1268 Í×ÁǤ¬ M-text ¤Î¾ì¹ç¡Ê¥¡¼¤¬ Mtext ¤Ç¤¢¤ë¾ì¹ç¡Ë¤Ë¤Ï¡¢¤½¤Î¥°¥ë¡¼¥×¤Î¸õÊä¤Ï¤½¤Î
1269 M-text Ãæ¤Î³Æʸ»ú¤Ç¤¢¤ë¡£ Í×ÁǤ¬ plist ¤Î¾ì¹ç¡Ê¥¡¼¤¬ Mplist
1270 ¤Ç¤¢¤ë¾ì¹ç¡Ë¤Ë¤Ï¡¢¤½¤Î¥ê¥¹¥È¤Î³ÆÍ×ÁÇ¤Ï M-text ¤Ç¤¢¤ê¡¢¤½¤ì¤é¤¬¤½¤Î¥°¥ë¡¼¥×¤Î¸õÊä¤È¤Ê¤ë¡£ */
1271 MPlist *candidate_list;
1273 /***en Index number of the currently selected candidate in all the
1274 candidates. The index of the first candidate is 0. If the
1275 number is 8, and the first candidate group contains 7
1276 candidates, the currently selected candidate is the second element of the
1277 second candidate group. */
1278 /***ja ¸½ºßÁªÂò¤µ¤ì¤Æ¤¤¤ë¸õÊ䤬Á´¸õÊäÃæ¤Ç²¿ÈÖÌܤ«¤ò¤ò¼¨¤¹¥¤¥ó¥Ç¥Ã¥¯¥¹¡£
1279 ºÇ½é¤Î¸õÊä¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï 0¡£ºÇ½é¤Î¸õÊ䥰¥ë¡¼¥×¤Ë¼·¤Ä¤Î¸õÊ䤬´Þ¤Þ¤ì¤Æ¤ª¤ê¡¢¤³¤ÎÃͤ¬
1280 8 ¤Ê¤é¤Ð¡¢¸½ºß¤Î¸õÊä¤ÏÆóÈÖÌܤθõÊ䥰¥ë¡¼¥×¤ÎÆóÈÖÌܤÎÍ×ÁǤȤ¤¤¦¤³¤È¤Ë¤Ê¤ë¡£
1282 int candidate_index;
1284 /***en Start and the end positions of the preedit text where
1285 <candidate_list> corresponds to. */
1286 /***ja preedit ¥Æ¥¥¹¥ÈÃæ¤Ç¡¢<candidate_list>¤ËÂбþ¤¹¤ëºÇ½é¤ÈºÇ¸å¤Î°ÌÃÖ¡£
1288 int candidate_from, candidate_to;
1290 /***en Flag telling whether the current candidate group must be
1291 shown or not. The function <im>->driver.filter () sets the
1292 value to 1 when an input method required to show candidates, and
1293 sets the value to 0 otherwise. */
1294 /***ja ¸½ºß¤Î¸õÊ䥰¥ë¡¼¥×¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«¤ò¼¨¤¹¥Õ¥é¥°¡£
1295 ´Ø¿ô <im>->driver.filter () ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¤¬¸õÊä¤Îɽ¼¨¤òÍ׵ᤷ¤¿»þ¤³¤ÎÃͤò
1296 1 ¤Ë¡¢¤½¤ì°Ê³°¤Î»þ 0 ¤ËÀßÄꤹ¤ë¡£ */
1299 /***en The function <im>->driver.filter () sets the value to bitwise
1300 OR of @c enum @c MInputCandidatesChanged when it changed any of
1301 the above members (<candidate_XXX>), and sets the value to 0
1303 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢¾åµ¤Î¥á¥ó¥Ð <candidate_XXX>
1304 ¤Î£±¤Ä¤Ç¤âÊѹ¹¤·¤¿ºÝ¤Ë¤Ï¡¢¤³¤ÎÃͤò @c enum @c
1305 MInputCandidatesChanged ¤Î¥Ó¥Ã¥Èñ°Ì¤Ç¤ÎÏÀÍý OR ¤ËÀßÄꤹ¤ë¡£¤½¤¦
1306 ¤Ç¤Ê¤±¤ì¤Ð 0 ¤ËÀßÄꤹ¤ë¡£ */
1307 int candidates_changed;
1309 /***en Plist that can be freely used by <im>->driver functions.
1310 The driver of internal input method uses it to exchange extra
1311 arguments and result for callback functions. The function
1312 <im>->driver.create_ic () sets this to an empty plist, and the
1313 function <im>->driver.destroy_ic () frees it by using
1314 m17n_object_unref (). */
1315 /***ja <im>->driver ¤Î´Ø¿ô·²¤Ë¤è¤Ã¤Æ¼«Í³¤Ë»ÈÍѤǤ¤ë plist¡£
1316 ÆâÉôÆþÎϥ᥽¥Ã¥ÉÍѥɥ饤¥Ð¤Ï¤³¤ì¤ò¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤È¤Î°ú¿ô¤äÊÖÃÍ
1317 ¤Î¼õÅϤ·¤Ë»ÈÍѤ¹¤ë¡£´Ø¿ô <im>->driver.create_ic () ¤Ï¤³¤Î plist
1318 ¤ò¶õ¤ËÀßÄꤹ¤ë¡£´Ø¿ô<im>->driver.destroy_ic () ¤Ï
1319 m17n_object_unref () ¤òÍѤ¤¤Æ¤³¤Î plist ¤ò²òÊü¤¹¤ë¡£ */
1325 extern MInputMethod *minput_open_im (MSymbol language, MSymbol name,
1330 extern void minput_close_im (MInputMethod *im);
1332 extern MInputContext *minput_create_ic (MInputMethod *im, void *arg);
1334 extern void minput_destroy_ic (MInputContext *ic);
1336 extern int minput_filter (MInputContext *ic, MSymbol key, void *arg);
1338 extern int minput_lookup (MInputContext *ic, MSymbol key, void *arg,
1340 extern void minput_set_spot (MInputContext *ic, int x, int y, int ascent,
1341 int descent, int fontsize, MText *mt, int pos);
1342 extern void minput_toggle (MInputContext *ic);
1344 extern void minput_reset_ic (MInputContext *ic);
1346 extern MText *minput_get_description (MSymbol language, MSymbol name);
1348 extern MPlist *minput_get_title_icon (MSymbol language, MSymbol name);
1350 extern MPlist *minput_get_command (MSymbol language, MSymbol name,
1352 extern int minput_config_command (MSymbol language, MSymbol name,
1353 MSymbol command, MPlist *keyseq);
1354 extern MPlist *minput_get_variable (MSymbol language, MSymbol name,
1356 extern int minput_config_variable (MSymbol language, MSymbol name,
1357 MSymbol variable, MPlist *value);
1358 extern char *minput_config_file (void);
1360 extern int minput_save_config (void);
1362 extern int minput_callback (MInputContext *ic, MSymbol command);
1364 /* obsolete functions */
1365 extern MPlist *minput_get_commands (MSymbol language, MSymbol name);
1367 extern int minput_assign_command_keys (MSymbol language, MSymbol name,
1368 MSymbol command, MPlist *keys);
1369 extern MPlist *minput_get_variables (MSymbol language, MSymbol name);
1371 extern int minput_set_variable (MSymbol language, MSymbol name,
1372 MSymbol variable, void *value);
1376 extern MInputMethod *mdebug_dump_im (MInputMethod *im, int indent);
1381 #endif /* _M17N_H_ */