1 /* m17n.h -- header file for the SHELL API of the m17n library.
2 Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
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 @brief API provided by libm17n.so */
65 /***ja @defgroup m17nShell ¥·¥§¥ë API
66 @brief libm17n.so ¤¬Ä󶡤¹¤ë API */
70 * (11) Functions related to the m17n database
75 /* (S2) Charset staffs */
78 /*** @ingroup m17nShell */
79 /***en @defgroup m17nCharset Charset */
80 /***ja @defgroup m17nCharset ʸ»ú¥»¥Ã¥È */
83 #if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
84 #define MCHAR_INVALID_CODE 0xFFFFFFFF
87 /* Predefined charsets */
88 extern MSymbol Mcharset_ascii;
89 extern MSymbol Mcharset_iso_8859_1;
90 extern MSymbol Mcharset_unicode;
91 extern MSymbol Mcharset_m17n;
92 extern MSymbol Mcharset_binary;
94 /* Predefined keys for mchar_define_charset (). */
95 extern MSymbol Mmethod;
96 extern MSymbol Mdimension;
97 extern MSymbol Mmin_range;
98 extern MSymbol Mmax_range;
99 extern MSymbol Mmin_code;
100 extern MSymbol Mmax_code;
101 extern MSymbol Mascii_compatible;
102 extern MSymbol Mfinal_byte;
103 extern MSymbol Mrevision;
104 extern MSymbol Mmin_char;
105 extern MSymbol Mmapfile;
106 extern MSymbol Mparents;
107 extern MSymbol Msubset_offset;
108 extern MSymbol Mdefine_coding;
109 extern MSymbol Maliases;
111 /* Methods of a charset. */
112 extern MSymbol Moffset;
114 extern MSymbol Munify;
115 extern MSymbol Msubset;
116 extern MSymbol Msuperset;
119 extern MSymbol mchar_define_charset (const char *name, MPlist *plist);
121 extern MSymbol mchar_resolve_charset (MSymbol symbol);
123 extern int mchar_list_charset (MSymbol **symbols);
125 extern int mchar_decode (MSymbol charset_name, unsigned code);
127 extern unsigned mchar_encode (MSymbol charset_name, int c);
129 extern int mchar_map_charset (MSymbol charset_name,
130 void (*func) (int from, int to, void *arg),
135 /* (S3) code conversion */
137 /*** @ingroup m17nShell */
138 /***en @defgroup m17nConv Code Conversion */
139 /***ja @defgroup m17nConv ¥³¡¼¥ÉÊÑ´¹ */
142 /* Predefined coding systems */
143 extern MSymbol Mcoding_us_ascii;
144 extern MSymbol Mcoding_iso_8859_1;
145 extern MSymbol Mcoding_utf_8;
146 extern MSymbol Mcoding_utf_8_full;
147 extern MSymbol Mcoding_utf_16;
148 extern MSymbol Mcoding_utf_16be;
149 extern MSymbol Mcoding_utf_16le;
150 extern MSymbol Mcoding_utf_32;
151 extern MSymbol Mcoding_utf_32be;
152 extern MSymbol Mcoding_utf_32le;
153 extern MSymbol Mcoding_sjis;
155 /* Parameter keys for mconv_define_coding (). */
156 extern MSymbol Mtype;
157 extern MSymbol Mcharsets;
158 extern MSymbol Mflags;
159 extern MSymbol Mdesignation;
160 extern MSymbol Minvocation;
161 extern MSymbol Mcode_unit;
163 extern MSymbol Mlittle_endian;
165 /* Symbols representing coding system type. */
167 extern MSymbol Miso_2022;
169 /* Symbols appearing in the value of Mfrag parameter. */
170 extern MSymbol Mreset_at_eol;
171 extern MSymbol Mreset_at_cntl;
172 extern MSymbol Meight_bit;
173 extern MSymbol Mlong_form;
174 extern MSymbol Mdesignation_g0;
175 extern MSymbol Mdesignation_g1;
176 extern MSymbol Mdesignation_ctext;
177 extern MSymbol Mdesignation_ctext_ext;
178 extern MSymbol Mlocking_shift;
179 extern MSymbol Msingle_shift;
180 extern MSymbol Msingle_shift_7;
181 extern MSymbol Meuc_tw_shift;
182 extern MSymbol Miso_6429;
183 extern MSymbol Mrevision_number;
184 extern MSymbol Mfull_support;
187 extern MSymbol Mcoding;
188 extern MSymbol Mmaybe;
190 /*** @ingroup m17nConv */
192 @brief Codes that represent the result of code conversion.
194 One of these values is set in @c MConverter-\>result. */
197 @brief ¥³¡¼¥ÉÊÑ´¹¤Î·ë²Ì¤ò¼¨¤¹¥³¡¼¥É.
199 ¤³¤ì¤é¤ÎÃͤΤ¦¤Á°ì¤Ä¤¬ @c MConverter-\>result ¤ËÀßÄꤵ¤ì¤ë¡£ */
201 enum MConversionResult
203 /***en Code conversion is successful. */
204 /***ja ¥³¡¼¥ÉÊÑ´¹¤ÏÀ®¸ù. */
205 MCONVERSION_RESULT_SUCCESS,
207 /***en On decoding, the source contains an invalid byte. */
208 /***ja ¥Ç¥³¡¼¥É»þ¡¢¥½¡¼¥¹¤ËÉÔÀµ¤Ê¥Ð¥¤¥È¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë. */
209 MCONVERSION_RESULT_INVALID_BYTE,
211 /***en On encoding, the source contains a character that cannot be
212 encoded by the specified coding system. */
213 /***ja ¥¨¥ó¥³¡¼¥É»þ¡¢»ØÄê¤Î¥³¡¼¥É·Ï¤Ç¥¨¥ó¥³¡¼¥É¤Ç¤¤Ê¤¤Ê¸»ú¤¬¥½¡¼¥¹¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë. */
214 MCONVERSION_RESULT_INVALID_CHAR,
216 /***en On decoding, the source ends with an incomplete byte sequence. */
217 /***ja ¥Ç¥³¡¼¥É»þ¡¢ÉÔ´°Á´¤Ê¥Ð¥¤¥ÈÎó¤Ç¥½¡¼¥¹¤¬½ª¤ï¤Ã¤Æ¤¤¤ë¡£*/
218 MCONVERSION_RESULT_INSUFFICIENT_SRC,
220 /***en On encoding, the destination is too short to store the result. */
221 /***ja ¥¨¥ó¥³¡¼¥É»þ¡¢·ë²Ì¤ò³ÊǼ¤¹¤ëÎΰ褬û¤«¤¹¤®¤ë¡£ */
222 MCONVERSION_RESULT_INSUFFICIENT_DST,
224 /***en An I/O error occurred in the conversion. */
225 /***ja ¥³¡¼¥ÉÊÑ´¹Ãæ¤Ë I/O ¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¡£ */
226 MCONVERSION_RESULT_IO_ERROR
230 /*** @ingroup m17nConv */
232 @brief Structure to be used in code conversion.
234 Structure to be used in code conversion. The first three members
235 are to control the conversion. */
238 @brief ¥³¡¼¥ÉÊÑ´¹¤ËÍѤ¤¤é¤ì¤ë¹½Â¤ÂÎ.
240 ¥³¡¼¥ÉÊÑ´¹¤ËÍѤ¤¤é¤ì¤ë¹½Â¤ÂΡ£ºÇ½é¤Î£³¤Ä¤Î¥á¥ó¥Ð¤ÏÊÑ´¹¤òÀ©¸æ¤¹¤ë¡£
242 @latexonly \IPAlabel{MConverter} @endlatexonly
248 Set the value to nonzero if the conversion should be lenient.
249 By default, the conversion is strict (i.e. not lenient).
251 If the conversion is strict, the converter stops at the first
252 invalid byte (on decoding) or at the first character not
253 supported by the coding system (on encoding). If this happens,
254 @c MConverter-\>result is set to @c
255 MCONVERSION_RESULT_INVALID_BYTE or @c
256 MCONVERSION_RESULT_INVALID_CHAR accordingly.
258 If the conversion is lenient, on decoding, an invalid byte is
259 kept per se, and on encoding, an invalid character is replaced
260 with "<U+XXXX>" (if the character is a Unicode character) or
261 with "<M+XXXXXX>" (otherwise). */
264 ¸·Ì©¤ÊÊÑ´¹¤¬É¬ÍפǤʤ¤¾ì¹ç¤ËÃͤò 0 °Ê³°¤Ë¤¹¤ë¡£
265 ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢ÊÑ´¹¤Ï¸·Ì©¤Ç¤¢¤ë¡£
267 ÊÑ´¹¤¬¸·Ì©¤È¤Ï¡¢¥Ç¥³¡¼¥É¤ÎºÝ¤Ë¤ÏºÇ½é¤ÎÉÔÀµ¤Ê¥Ð¥¤¥È¤Ç¥³¥ó¥Ð¡¼¥¿¤¬»ß¤Þ¤ë¤³¤È¡¢
268 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤ÏÊÑ´¹¤µ¤ì¤ë¥³¡¼¥É·Ï¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Ê¤¤ºÇ½é¤Îʸ»ú¤Ç¥³¥ó¥Ð¡¼¥¿¤¬»ß¤Þ¤ë¤³¤È¤ò»Ø¤¹¡£
269 ¤³¤ì¤é¤Î¾ì¹ç¡¢@c MConverter-\>result ¤Ï¤½¤ì¤¾¤ì @c
270 MCONVERSION_RESULT_INVALID_BYTE ¤«@c
271 MCONVERSION_RESULT_INVALID_CHAR ¤È¤Ê¤ë¡£
273 ÊÑ´¹¤¬¸·Ì©¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¥Ç¥³¡¼¥É¤ÎºÝ¤ÎÉÔÀµ¤Ê¥Ð¥¤¥È¤Ï¤½¤Î¥Ð¥¤¥È¤Î¤Þ¤Þ»Ä¤ë¡£
274 ¤Þ¤¿¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï¡¢ÉÔÀµ¤Êʸ»ú¤¬ Unicode ʸ»ú¤Î¾ì¹ç¤Ë¤Ï "<U+XXXX>"
275 ¤Ë¡¢¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï "<M+XXXXXX>" ¤ËÃÖ¤´¹¤¨¤é¤ì¤ë¡£ */
280 Set the value to nonzero before decoding or encoding the last
281 block of the byte sequence or the character sequence
282 respectively. The value influences the conversion as below.
284 On decoding, in the case that the last few bytes are too short
285 to form a valid byte sequence:
287 If the value is nonzero, the conversion terminates by error
288 (MCONVERSION_RESULT_INVALID_BYTE) at the first byte of the
291 If the value is zero, the conversion terminates successfully.
292 Those bytes are stored in the converter as carryover and are
293 prepended to the byte sequence of the further conversion.
295 On encoding, in the case that the coding system is context
298 If the value is nonzero, the conversion may produce a byte
299 sequence at the end to reset the context to the initial state
300 even if the source characters are zero.
302 If the value is zero, the conversion never produce such a byte
303 sequence at the end. */
307 ¥Ð¥¤¥ÈÎó¤Î½ªÃ¼¤Î¥Ö¥í¥Ã¥¯¤ò¥Ç¥³¡¼¥É¤¹¤ëºÝ¡¢¤Þ¤¿¤Ïʸ»úÎó¤Î½ªÃ¼¤Î¥Ö¥í¥Ã¥¯¤ò¥¨¥ó¥³¡¼¥É¤¹¤ëºÝ¤Ï¡¢Ãͤò
308 0 °Ê³°¤Ë¤¹¤ë¡£¤³¤ÎÃͤϰʲ¼¤Î¤è¤¦¤ËÊÑ´¹¤Ë±Æ¶Á¤¹¤ë¡£
310 ¥Ç¥³¡¼¥Ç¥£¥ó¥°¤ÎºÝ¤ËºÇ¸å¤Î¿ô¥Ð¥¤¥È¤¬Àµ¤·¤¤¥Ð¥¤¥È¥·¡¼¥¯¥¨¥ó¥¹¤ò·ÁÀ®¤¹¤ë¤Ë¤Ïû¤¹¤®¤ë¾ì¹ç¡§
312 Ãͤ¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÊÑ´¹¤Ï¤½¤Î¥·¡¼¥¯¥¨¥ó¥¹¤ÎºÇ½é¤Î¥Ð¥¤¥È¤Ë¤ª¤¤¤Æ¡¢¥¨¥é¡¼
313 (MCONVERSION_RESULT_INVALID_BYTE) ¤Ç½ª¤ë¡£
315 Ãͤ¬ 0 ¤Ê¤é¤Ð¡¢ÊÑ´¹¤ÏÀ®¸ù¤·¤Æ½ª¤ë¡£
316 ÌäÂê¤Î¿ô¥Ð¥¤¥È¤Ï¥¥ã¥ê¡¼¥ª¡¼¥Ð¤È¤·¤Æ¥³¥ó¥Ð¡¼¥¿¤ËÊÝ»ý¤µ¤ì¡¢ÊÑ´¹¤Î³¤¤ò¹Ô¤¦ºÝ¤ËÊÑ´¹¤¹¤ë¥Ð¥¤¥ÈÎó¤ÎÁ°¤ËÉÕ¤±¤é¤ì¤ë¡£
318 ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎºÝ¤Ë¥³¡¼¥É·Ï¤¬Ê¸Ì®°Í¸¤Î¾ì¹ç¡¢
320 Ãͤ¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥³¥ó¥Æ¥¥¹¥È¤òºÇ½é¤ËÌ᤹¤¿¤á¤Î¥Ð¥¤¥ÈÎ󤬥½¡¼¥¹¤Îʸ»ú¤È¤«¤«¤ï¤ê¤Ê¤¯ÊÑ´¹¤Î·ë²ÌÀ¸À®¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¡£
322 Ãͤ¬ 0 ¤Ê¤é¤Ð¡¢¤½¤Î¤è¤¦¤Ê¥Ð¥¤¥ÈÎó¤ÏÀ¸À®¤µ¤ì¤Ê¤¤¡£
329 If the value is nonzero, it specifies at most how many
330 characters to convert. */
332 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÊÑ´¹¤µ¤ì¤ëºÇÂç¤Îʸ»ú¿ô¤ò»ØÄꤹ¤ë¡£
338 The following three members are to report the result of the
341 °Ê²¼¤Î£³¤Ä¤Î¥á¥ó¥Ð¤ÏÊÑ´¹¤Î·ë²Ì¤òɽ¤¹¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£ */
344 Number of characters most recently decoded or encoded. */
346 ºÇ¶á¤Ë¥Ç¥³¡¼¥É/¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿Ê¸»ú¿ô¡£ */
351 Number of bytes recently decoded or encoded. */
354 ºÇ¶á¤Ë¥Ç¥³¡¼¥É/¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿¥Ð¥¤¥È¿ô¡£ */
359 Result code of the conversion. */
362 ¥³¡¼¥ÉÊÑ´¹¤Î·ë²Ì¤ò¼¨¤¹¥³¡¼¥É¡£ */
364 enum MConversionResult result;
367 Various information about the status of code conversion. The
368 contents depend on the type of coding system. It is assured
369 that @c status is aligned so that any type of casting is safe
370 and at least 256 bytes of memory space can be used. */
373 ¥³¡¼¥ÉÊÑ´¹¤Î¾õ¶·¤Ë´Ø¤¹¤ë¼ï¡¹¤Î¾ðÊó¡£ÆâÍƤϥ³¡¼¥É·Ï¤Î¥¿¥¤¥×¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë¡£
374 @c status ¤Ï¤É¤Î¤è¤¦¤Ê·¿¤Ø¤Î¥¥ã¥¹¥È¤ËÂФ·¤Æ¤â°ÂÁ´¤Ê¤è¤¦¤Ë¥á¥â¥ê¥¢¥é¥¤¥ó¤µ¤ì¤Æ¤ª¤ê¡¢¤Þ¤¿ºÇÄã256¥Ð¥¤¥È¤Î¥á¥â¥êÎΰ褬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ */
383 This member is for internally use only. An application program
384 should never touch it. */
385 /***ja ¤³¤Î¥á¥ó¥Ð¤ÏÆâÉôŪ¤Ë»ÈÍѤµ¤ì¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¿¨¤ì¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ */
390 /*** @ingroup m17nConv */
392 @brief Types of coding system. */
394 @brief ¥³¡¼¥É·Ï¤Î¥¿¥¤¥×. */
399 A coding system of this type supports charsets directly.
400 The dimension of each charset defines the length of bytes to
401 represent a single character of the charset, and a byte
402 sequence directly represents the code-point of a character.
403 The m17n library provides the default decoding and encoding
404 routines of this type. */
407 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ïʸ»ú¥»¥Ã¥È¤òľÀÜ¥µ¥Ý¡¼¥È¤¹¤ë¡£
408 ³Æʸ»ú¥»¥Ã¥È¤Î¼¡¸µ¤È¤Ï¡¢¤½¤Îʸ»ú¥»¥Ã¥È¤Ç°ìʸ»ú¤òɽ¸½¤¹¤ë¤¿¤á¤ËɬÍפʥХ¤¥È¿ô¤Ç¤¢¤ê¡¢¥Ð¥¤¥ÈÎó¤Ïʸ»ú¤Î¥³¡¼¥É¥Ý¥¤¥ó¥È¤òľÀÜɽ¤¹¡£
409 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
411 MCODING_TYPE_CHARSET,
414 A coding system of this type supports byte sequences of a
415 UTF (UTF-8, UTF-16, UTF-32) like structure.
416 The m17n library provides the default decoding and encoding
417 routines of this type. */
420 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢UTF ·Ï (UTF-8, UTF-16, UTF-32) ¤Î¥Ð¥¤¥ÈÎó¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£
421 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
426 A coding system of this type supports byte sequences of an
427 ISO-2022 like structure. The details of each structure are
428 specified by @c MCodingInfoISO2022 .
429 The m17n library provides decoding and encoding routines of
433 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢ISO-2022 ·Ï¤Î¥Ð¥¤¥ÈÎó¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£
434 ³Æ¥³¡¼¥É·Ï¤Î¹½Â¤¤Î¾ÜºÙ¤Ï @c MCodingInfoISO2022 ¤Ç»ØÄꤵ¤ì¤ë¡£
435 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
437 MCODING_TYPE_ISO_2022,
440 A coding system of this type is for byte sequences of
441 miscellaneous structures.
442 The m17n library does not provide decoding and encoding
443 routines of this type. They must be provided by the
444 application program. */
447 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢¤½¤Î¾¤Î¹½Â¤¤Î¥Ð¥¤¥ÈÎó¤Î¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£
448 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥ¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤·¤Ê¤¤¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¦¤Ç½àÈ÷¤¹¤ëɬÍפ¬¤¢¤ë¡£ */
454 /*** @ingroup m17nConv */
456 @brief Bit-masks to specify the detail of coding system whose type is MCODING_TYPE_ISO_2022. */
458 @brief MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Î¾ÜºÙ¤òɽ¤ï¤¹¥Ó¥Ã¥È¥Þ¥¹¥¯. */
460 enum MCodingFlagISO2022
463 On encoding, reset the invocation and designation status to
464 initial at end of line. */
465 /***ja ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢¹ÔËö¤Ç¸Æ¤Ó½Ð¤· (invocation) ¤È»Ø¼¨
466 (designation) ¤Î¾õÂÖ¤ò½é´üÃͤËÌ᤹¡£ */
467 MCODING_ISO_RESET_AT_EOL = 0x1,
470 On encoding, reset the invocation and designation status to
471 initial before any control codes. */
473 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢¤¹¤Ù¤Æ¤ÎÀ©¸æʸ»ú¤ÎÁ°¤Ç¡¢¸Æ¤Ó½Ð¤·
474 (invocation) ¤È»Ø¼¨ (designation) ¤Î¾õÂÖ¤ò½é´üÃͤËÌ᤹¡£ */
475 MCODING_ISO_RESET_AT_CNTL = 0x2,
478 Use the right graphic plane. */
480 ¿Þ·Áʸ»ú½¸¹ç¤Î±¦Â¦¤ò»È¤¦¡£ */
481 MCODING_ISO_EIGHT_BIT = 0x4,
484 Use the non-standard 4 bytes format for designation sequence
485 for charsets JISX0208-1978, GB2312, and JISX0208-1983. */
487 JISX0208-1978, GB2312, JISX0208-1983
488 ¤Îʸ»ú½¸¹ç¤ËÂФ¹¤ë»Ø¼¨¥·¡¼¥¯¥¨¥ó¥¹¤È¤·¤Æ¡¢Èóɸ½à¤Î4¥Ð¥¤¥È·Á¼°¤òÍѤ¤¤ë¡£ */
490 MCODING_ISO_LONG_FORM = 0x8,
493 On encoding, unless explicitly specified, designate charsets
496 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢Ê¸»ú½¸¹ç¤ò G0
498 MCODING_ISO_DESIGNATION_G0 = 0x10,
501 On encoding, unless explicitly specified, designate charsets
502 except for ASCII to G1. */
504 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢ASCII °Ê³°¤Îʸ»ú½¸¹ç¤ò
506 MCODING_ISO_DESIGNATION_G1 = 0x20,
509 On encoding, unless explicitly specified, designate 94-chars
510 charsets to G0, 96-chars charsets to G1. */
512 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢94ʸ»ú½¸¹ç¤ò G0
513 ¤Ë¡¢96ʸ»ú½¸¹ç¤ò G1 ¤Ë»Ø¼¨¤¹¤ë¡£*/
514 MCODING_ISO_DESIGNATION_CTEXT = 0x40,
517 On encoding, encode such charsets not conforming to ISO-2022
518 by ESC % / ..., and encode non-supported Unicode characters by
519 ESC % G ... ESC % @@ . On decoding, handle those escape
522 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢ISO-2022 ¤Ë¹çÃפ·¤Ê¤¤Ê¸»ú½¸¹ç¤ò ESC % / ...
523 ¤Ç¥¨¥ó¥³¡¼¥É¤¹¤ë¡£¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ Unicode ʸ»ú¤Ï ESC % G ...
524 ESC % @@ ¤Ç¥¨¥ó¥³¡¼¥É¤¹¤ë¡£
525 ¥Ç¥³¡¼¥É¤ÎºÝ¡¢¤³¤ì¤é¤Î¥¨¥¹¥±¡¼¥×¡¦¥·¡¼¥±¥ó¥¹¤ò²ò¼á¤¹¤ë¡£ */
526 MCODING_ISO_DESIGNATION_CTEXT_EXT = 0x80,
529 Use locking shift. */
531 ¥í¥Ã¥¥ó¥°¥·¥Õ¥È¤ò»È¤¦¡£ */
532 MCODING_ISO_LOCKING_SHIFT = 0x100,
535 Use single shift (SS2 (0x8E or ESC N), SS3 (0x8F or ESC O)). */
537 ¥·¥ó¥°¥ë¥·¥Õ¥È (SS2 (0x8E or ESC N), SS3 (0x8F or ESC O)) ¤ò»È¤¦¡£ */
538 MCODING_ISO_SINGLE_SHIFT = 0x200,
541 Use 7-bit single shift 2 (SS2 (0x19)). */
543 7¥Ó¥Ã¥È¥·¥ó¥°¥ë¥·¥Õ¥È 2 (SS2 (0x19)) ¤ò»È¤¦¡£ */
544 MCODING_ISO_SINGLE_SHIFT_7 = 0x400,
547 Use EUC-TW like special shifting. */
549 EUC-TW É÷¤ÎÆÃÊ̤ʥ·¥Õ¥È¤ò»È¤¦¡£ */
550 MCODING_ISO_EUC_TW_SHIFT = 0x800,
553 Use ISO-6429 escape sequences to indicate direction.
554 Not yet implemented. */
556 ISO-6429 ¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥¯¥¨¥ó¥¹¤ÇÊý¸þ¤ò»Ø¼¨¤¹¤ë¡£Ì¤¼ÂÁõ¡£ */
557 MCODING_ISO_ISO6429 = 0x1000,
560 On encoding, if a charset has revision number, produce escape
561 sequences to specify the number. */
563 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Ê¸»ú¥»¥Ã¥È¤Ë revision number
564 ¤¬¤¢¤ì¤Ð¤½¤ì¤òɽ¤ï¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥¯¥¨¥ó¥¹¤òÀ¸À®¤¹¤ë¡£ */
565 MCODING_ISO_REVISION_NUMBER = 0x2000,
568 Support all ISO-2022 charsets. */
570 ISO-2022 ¤ÎÁ´Ê¸»ú½¸¹ç¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£ */
571 MCODING_ISO_FULL_SUPPORT = 0x3000,
577 /*** @ingroup m17nConv */
579 @brief Structure for a coding system of type #MCODING_TYPE_ISO_2022.
581 Structure for extra information about a coding system of type
582 MCODING_TYPE_ISO_2022. */
585 @brief #MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѹ½Â¤ÂÎ.
587 MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѤòÊÝ»ý¤¹¤ë¤¿¤á¤Î¹½Â¤ÂΡ£
589 @latexonly \IPAlabel{MCodingInfoISO2022} @endlatexonly */
594 Table of numbers of an ISO2022 code extension element invoked
595 to each graphic plane (Graphic Left and Graphic Right). -1
596 means no code extension element is invoked to that plane. */
599 ³Æ¿Þ·Áʸ»úÎΰè (Graphic Left ¤È Graphic Right) ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤ë¡¢
600 ISO2022 Éä¹ç³ÈÄ¥Í×ÁǤÎÈÖ¹æ¤Î¥Æ¡¼¥Ö¥ë¡£-1
601 ¤Ï¤½¤ÎÎΰè¤Ë¤É¤ÎÉä¹ç³ÈÄ¥Í×ÁǤâ¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò¼¨¤¹¡£ */
603 int initial_invocation[2];
606 Table of code extension elements. The Nth element corresponds
607 to the Nth charset in $CHARSET_NAMES, which is an argument given
608 to the mconv_define_coding () function.
610 If an element value is 0..3, it specifies a graphic register
611 number to designate the corresponds charset. In addition, the
612 charset is initially designated to that graphic register.
614 If the value is -4..-1, it specifies a graphic register number
615 0..3 respectively to designate the corresponds charset.
616 Initially, the charset is not designated to any graphic
620 Éä¹ç³ÈÄ¥Í×ÁǤΥơ¼¥Ö¥ë¡£NÈÖÌܤÎÍ×ÁǤϡ¢$CHARSET_NAMES ¤Î N
621 ÈÖÌܤÎʸ»ú¥»¥Ã¥È¤ËÂбþ¤¹¤ë¡£$CHARSET_NAMES ¤Ï´Ø¿ô
622 mconv_define_coding () ¤Î°ú¿ô¤È¤Ê¤ë¡£
624 Ãͤ¬ 0..3 ¤À¤Ã¤¿¤é¡¢Âбþ¤¹¤ëʸ»ú¥»¥Ã¥È¤ò G0..G3
625 ¤Î¤½¤ì¤¾¤ì¤Ë»Ø¼¨¤¹¤ë¤³¤È¡¢¤Þ¤¿½é´ü¾õÂ֤Ǥ¹¤Ç¤Ë G0..G3
626 ¤Ë»Ø¼¨¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
628 Ãͤ¬ -4..-1 ¤À¤Ã¤¿¤é¡¢Âбþ¤¹¤ëʸ»ú¥»¥Ã¥È¤ò G0..G3
629 ¤Î¤½¤ì¤¾¤ì¤Ë»Ø¼¨¤¹¤ë¤³¤È¡¢¤·¤«¤·½é´ü¾õÂ֤ǤϤɤ³¤Ë¤â»Ø¼¨¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
632 char designations[32];
635 Bitwise OR of @c enum @c MCodingFlagISO2022 . */
638 @c enum @c MCodingFlagISO2022 ¤Î¥Ó¥Ã¥Èñ°Ì¤Ç¤ÎÏÀÍý OR */
642 } MCodingInfoISO2022;
645 /*** @ingroup m17nConv */
647 @brief Structure for extra information about a coding system of type #MCODING_TYPE_UTF.
651 @brief #MCODING_TYPE_UTF ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѤι½Â¤ÂÎ.
653 @latexonly \IPApage{MCodingInfoUTF} @endlatexonly
655 @latexonly \IPAlabel{MCodingInfoUTF} @endlatexonly */
660 Specify bits of a code unit. The value must be 8, 16, or 32. */
662 ¥³¡¼¥ÉĹ¡Ê¥Ó¥Ã¥È¿ô¡Ë¤Î»ØÄê¡£ÃÍ¤Ï 8, 16, 32 ¤Î¤¤¤º¤ì¤«¡£ */
666 Specify how to handle the heading BOM (byte order mark). The
667 value must be 0, 1, or 2. The meanings are as follows:
669 0: On decoding, check the first two byte. If they are BOM,
670 decide endian by them. If not, decide endian by the member @c
671 endian. On encoding, produce byte sequence according to
672 @c endian with heading BOM.
674 1: On decoding, do not handle the first two bytes as BOM, and
675 decide endian by @c endian. On encoding, produce byte sequence
676 according to @c endian without BOM.
678 2: On decoding, handle the first two bytes as BOM and decide
679 ending by them. On encoding, produce byte sequence according to
680 @c endian with heading BOM.
682 If \<code_unit_bits\> is 8, the value has no meaning. */
685 ÀèƬ¤Î BOM (¥Ð¥¤¥È¥ª¡¼¥À¡¼¥Þ¡¼¥¯) ¤Î¼è¤ê°·¤¤¤ò»ØÄꤹ¤ë¡£ÃÍ¤Ï 0,
686 1, 2 ¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ê¡¢¤½¤ì¤¾¤ì¤Î°ÕÌ£¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
688 0: ¥Ç¥³¡¼¥É¤ÎºÝ¤ËºÇ½é¤Î 2 ¥Ð¥¤¥È¤òÄ´¤Ù¤ë¡£¤â¤·¤½¤ì¤¬ BOM
689 ¤Ç¤¢¤ì¤Ð¡¢¥¨¥ó¥Ç¥£¥¢¥ó¤ò¤½¤ì¤ÇȽÄꤹ¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢¥á¥ó¥Ð @c
690 endian ¤Ë½¾¤Ã¤Æ¥¨¥ó¥Ç¥£¥¢¥ó¤ò·èÄꤹ¤ë¡£¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï @c
691 endian ¤Ë½¾¤Ã¤¿¥Ð¥¤¥ÈÎó¤òÀèƬ¤Ë BOM ÉÕ¤ÇÀ¸À®¤¹¤ë¡£
693 1: ¥Ç¥³¡¼¥É¤ÎºÝ¡¢ºÇ½é¤Î 2 ¥Ð¥¤¥È¤ò BOM ¤È¤·¤Æ°·¤ï¤º¡¢¥¨¥ó¥Ç¥£¥¢¥ó¤Ï
694 @c endian ¤ÇȽÄꤹ¤ë¡£¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï¡¢BOM ¤ò½ÐÎϤ»¤º¡¢
695 @c endian ¤Ë±þ¤¸¤¿¥Ð¥¤¥ÈÎó¤òÀ¸À®¤¹¤ë¡£
697 2: ¥Ç¥³¡¼¥É¤ÎºÝ¤ËºÇ½é¤Î2¥Ð¥¤¥È¤ò BOM¤È¤·¤Æ°·¤¤¡¢¤½¤ì¤Ë½¾¤Ã¤Æ¥¨¥ó¥Ç¥£¥¢¥ó¤òȽÄꤹ¤ë¡£
698 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï @c endian ¤Ë±þ¤¸¤¿¥Ð¥¤¥ÈÎó¤òÀèƬ¤Ë BOM ÉÕ¤¤ÇÀ¸À®¤¹¤ë¡£ */
702 Specify the endian type. The value must be 0 or 1. 0 means
703 little endian, and 1 means big endian.
705 If \<code_unit_bits\> is 8, the value has no meaning. */
707 ¥¨¥ó¥Ç¥£¥¢¥ó¤Î¥¿¥¤¥×¤ò»ØÄꤹ¤ë¡£ÃÍ¤Ï 0 ¤« 1 ¤Ç¤¢¤ê¡¢0
708 ¤Ê¤é¤Ð¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó¡¢1 ¤Ê¤é¤Ð¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó¤Ç¤¢¤ë¡£
710 \<code_unit_bits\> ¤¬ 8 ¤Î¾ì¹ç¤Ë¤Ï¡¢¤³¤ÎÃͤϰÕÌ£¤ò»ý¤¿¤Ê¤¤¡£
716 extern MSymbol mconv_define_coding (const char *name, MPlist *plist,
717 int (*resetter) (MConverter *),
718 int (*decoder) (const unsigned char *, int,
719 MText *, MConverter *),
720 int (*encoder) (MText *, int, int,
721 unsigned char *, int,
725 extern MSymbol mconv_resolve_coding (MSymbol symbol);
727 extern int mconv_list_codings (MSymbol **symbols);
729 extern MConverter *mconv_buffer_converter (MSymbol coding,
730 const unsigned char *buf,
733 extern MConverter *mconv_stream_converter (MSymbol coding, FILE *fp);
735 extern int mconv_reset_converter (MConverter *converter);
737 extern void mconv_free_converter (MConverter *converter);
739 extern MConverter *mconv_rebind_buffer (MConverter *converter,
740 const unsigned char *buf, int n);
742 extern MConverter *mconv_rebind_stream (MConverter *converter, FILE *fp);
744 extern MText *mconv_decode (MConverter *converter, MText *mt);
746 MText *mconv_decode_buffer (MSymbol name, const unsigned char *buf, int n);
748 MText *mconv_decode_stream (MSymbol name, FILE *fp);
750 extern int mconv_encode (MConverter *converter, MText *mt);
752 extern int mconv_encode_range (MConverter *converter, MText *mt,
755 extern int mconv_encode_buffer (MSymbol name, MText *mt,
756 unsigned char *buf, int n);
758 extern int mconv_encode_stream (MSymbol name, MText *mt, FILE *fp);
760 extern int mconv_getc (MConverter *converter);
762 extern int mconv_ungetc (MConverter *converter, int c);
764 extern int mconv_putc (MConverter *converter, int c);
766 extern MText *mconv_gets (MConverter *converter, MText *mt);
768 /* (S4) Locale related functions corresponding to libc functions */
770 /*** @ingroup m17nShell */
771 /***en @defgroup m17nLocale Locale */
772 /***ja @defgroup m17nLocale ¥í¥±¡¼¥ë */
775 /*** @ingroup m17nLocale */
777 @brief @c struct @c MLocale.
779 The structure @c MLocale is used to hold information about name,
780 language, territory, modifier, codeset, and the corresponding
781 coding system of locales.
783 The contents of this structure are implementation dependent. Its
784 internal structure is concealed from application programs. */
787 @brief @c MLocale ¹½Â¤ÂÎ.
789 @c MLocale ¹½Â¤ÂΤϡ¢¥í¥±¡¼¥ë¤Î̾Á°¡¢¸À¸ì¡¢ÃÏ°è¡¢¥â¥Ç¥£¥Õ¥¡¥¤¥¢¡¢¥³¡¼¥É¥»¥Ã¥È¡¢¤ª¤è¤ÓÂбþ¤¹¤ë¥³¡¼¥É·Ï¤Ë´Ø¤¹¤ë¾ðÊó¤òÊÝ»ý¤¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£
791 ¤³¤Î¹½Â¤ÂΤÎÆâÍƤϼÂÁõ¤Ë°Í¸¤¹¤ë¡£
792 ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */
796 mlocale_get_prop () */
798 typedef struct MLocale MLocale;
802 extern MSymbol Miso639_1, Miso639_2;
803 extern MSymbol Mterritory;
804 extern MSymbol Mmodifier;
805 extern MSymbol Mcodeset;
807 extern MPlist *mlanguage_list (void);
809 extern MSymbol mlanguage_code (MSymbol language, int len);
811 extern MPlist *mlanguage_name_list (MSymbol language, MSymbol target,
812 MSymbol script, MSymbol territory);
814 extern MText *mlanguage_text (MSymbol language);
816 extern MPlist *mscript_list (void);
818 extern MPlist *mscript_language_list (MSymbol script);
820 extern MSymbol mlanguage_name (MSymbol language);
822 extern MLocale *mlocale_set (int category, const char *locale);
824 extern MSymbol mlocale_get_prop (MLocale *locale, MSymbol key);
826 extern int mtext_ftime (MText *mt, const char *format, const struct tm *tm,
829 extern MText *mtext_getenv (const char *name);
831 extern int mtext_putenv (MText *mt);
833 extern int mtext_coll (MText *mt1, MText *mt2);
836 * (9) Miscellaneous functions of libc level (not yet implemented)
840 extern int mtext_width (MText *mt, int n);
841 extern MText *mtext_tolower (MText *mt);
842 extern MText *mtext_toupper (MText *mt);
849 /*** @ingroup m17nShell */
850 /***en @defgroup m17nInputMethod Input Method (basic) */
851 /***ja @defgroup m17nInputMethod ÆþÎϥ᥽¥Ã¥É (´ðËÜÉôʬ) */
854 /*** @addtogroup m17nInputMethod
857 /* Struct forward declaration. */
859 @brief See struct MInputMethod */
860 typedef struct MInputMethod MInputMethod;
863 @brief See struct MInputContext */
864 typedef struct MInputContext MInputContext;
868 @brief Type of input method callback functions.
870 This is the type of callback functions called from input method
871 drivers. $IC is a pointer to an input context, $COMMAND is a name
872 of callback for which the function is called. */
874 @brief ÆþÎϥ᥽¥Ã¥É¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î·¿Àë¸À.
876 ÆþÎϥ᥽¥Ã¥É¤«¤é¸Æ¤Ð¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î·¿¤Ç¤¢¤ë¡£$IC
877 ¤ÏÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¡¢$COMMAND ¤Ï´Ø¿ô¤¬¸Æ¤Ð¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯¤Î̾Á°¤Ç¤¢¤ë¡£ */
879 typedef void (*MInputCallbackFunc) (MInputContext *ic, MSymbol command);
883 @brief Structure of input method driver.
885 The type @c MInputDriver is the structure of an input method driver that
886 contains several functions to handle an input method. */
889 @brief ÆþÎϥɥ饤¥ÐÍѹ½Â¤ÂÎ.
891 @c MInputDriver ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¤ò¼è¤ê°·¤¦´Ø¿ô¤ò´Þ¤àÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Î¹½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
893 typedef struct MInputDriver
896 @brief Open an input method.
898 This function opens the input method $IM. It is called from the
899 function minput_open_im () after all member of $IM but \<info\>
900 set. If opening $IM succeeds, it returns 0. Otherwise, it
901 returns -1. The function can setup $IM->info to keep various
902 information that is referred by the other driver functions. */
905 @brief ÆþÎϥ᥽¥Ã¥É¤ò¥ª¡¼¥×¥ó¤¹¤ë.
907 ¤³¤Î´Ø¿ô¤Ï¡¢ÆþÎϥ᥽¥Ã¥É $IM ¤ò¥ª¡¼¥×¥ó¤¹¤ë¡£$IM ¤Î \<info\>
908 °Ê³°¤ÎÁ´¥á¥ó¥Ð¡¼¤¬¥»¥Ã¥È¤µ¤ì¤¿¸å¤Ç¡¢´Ø¿ô minput_open_im ()
909 ¤«¤é¸Æ¤Ð¤ì¤ë¡£$IM ¤ò¥ª¡¼¥×¥ó¤Ç¤¤ì¤Ð 0 ¤ò¡¢¤Ç¤¤Ê¤±¤ì¤Ð -1¤òÊÖ¤¹¡£
911 ¤òÀßÄꤷ¤Æ¡¢Â¾¤Î¥É¥é¥¤¥Ð´Ø¿ô¤«¤é»²¾È¤µ¤ì¤ë¾ðÊó¤òÊÝ»ý¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
914 int (*open_im) (MInputMethod *im);
917 @brief Close an input method.
919 This function closes the input method $IM. It is called from
920 the function minput_close_im (). It frees all memory allocated
921 for $IM->info (if any) after finishing all the tasks of closing
922 the input method. But, the other members of $IM should not be
926 @brief ÆþÎϥ᥽¥Ã¥É¤ò¥¯¥í¡¼¥º¤¹¤ë.
928 ¤³¤Î´Ø¿ô¤Ï¡¢ÆþÎϥ᥽¥Ã¥É $IM ¤ò¥¯¥í¡¼¥º¤¹¤ë¡£´Ø¿ô
929 minput_close_im () ¤«¤é¸Æ¤Ð¤ì¤ë¡£
930 ÆþÎϥ᥽¥Ã¥É¤Î¥¯¥í¡¼¥º¤¬¤¹¤Ù¤Æ½ªÎ»¤·¤¿»þÅÀ¤Ç¡¢¤³¤Î´Ø¿ô¤Ï$IM->info
931 ¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥á¥â¥ê¤ò(¤¢¤ì¤Ð)¤¹¤Ù¤Æ³«Êü¤¹¤ë¡£
932 ¤¿¤À¤·¡¢$IM ¤Î¾¤Î¥á¥ó¥Ð¤Ë±Æ¶Á¤òÍ¿¤¨¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
935 void (*close_im) (MInputMethod *im);
938 @brief Create an input context.
940 This function creates the input context $IC. It is called from
941 the function minput_create_ic () after all members of $IC but
942 \<info\> are set. If creating $IC succeeds, it returns 0.
943 Otherwise, it returns -1. The function can setup $IC->info to
944 keep various information that is referred by the other driver
948 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÀ¸À®¤¹¤ë.
950 ¤³¤Î´Ø¿ô¤ÏÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC ¤òÀ¸À®¤¹¤ë¡£
951 $IC ¤Î \<info\> °Ê³°¤ÎÁ´¥á¥ó¥Ð¡¼¤¬¥»¥Ã¥È¤µ¤ì¤¿¸å¤Ç¡¢´Ø¿ô
952 minput_create_ic () ¤«¤é¸Æ¤Ð¤ì¤ë¡£
953 $IC ¤òÀ¸À®¤Ç¤¤ì¤Ð 0 ¤ò¡¢¤Ç¤¤Ê¤±¤ì¤Ð -1 ¤òÊÖ¤¹¡£
954 ¤³¤Î´Ø¿ô¤Ï $IC->info ¤òÀßÄꤷ¤Æ¡¢Â¾¤Î¥É¥é¥¤¥Ð´Ø¿ô¤«¤é»²¾È¤µ¤ì¤ë¾ðÊó¤òÊÝ»ý¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£ */
957 int (*create_ic) (MInputContext *ic);
960 @brief Destroy an input context.
962 This function is called from the function minput_destroy_ic ()
963 and destroys the input context $IC. It frees all memory
964 allocated for $IC->info (if any) after finishing all the tasks
965 of destroying the input method. But, the other members of $IC
966 should not be touched. */
969 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÇ˲õ¤¹¤ë.
971 ´Ø¿ô minput_destroy_ic () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC
972 ¤òÇ˲õ¤¹¤ë¡£ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÎÇ˲õ¤¬¤¹¤Ù¤Æ½ªÎ»¤·¤¿»þÅÀ¤Ç¡¢$IC->info
973 ¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥á¥â¥ê¤ò(¤¢¤ì¤Ð)¤¹¤Ù¤Æ³«Êü¤¹¤ë¡£¤¿¤À¤·¡¢$IC
974 ¤Î¾¤Î¥á¥ó¥Ð¤Ë±Æ¶Á¤òÍ¿¤¨¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ */
976 void (*destroy_ic) (MInputContext *ic);
979 @brief Filter an input key.
981 This function is called from the function minput_filter () and
982 filters an input key. $KEY and $ARG are the same as what given
985 The task of the function is to handle $KEY, update the internal
986 state of $IC. If $KEY is absorbed by the input method and no
987 text is produced, it returns 1. Otherwise, it returns 0.
989 It may update $IC->status, $IC->preedit, $IC->cursor_pos,
990 $IC->ncandidates, $IC->candidates, and $IC->produced if that is
991 necessary for the member \<callback\>.
993 The meaning of $ARG depends on the input method river. See the
994 documentation of @c minput_default_driver and @c
995 minput_gui_driver for instance. */
998 @brief ÆþÎÏ¥¡¼¤ò¥Õ¥£¥ë¥¿¤¹¤ë.
1000 ´Ø¿ô minput_filter () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥¡¼¤ò¥Õ¥£¥ë¥¿¤¹¤ë¡£°ú¿ô
1001 $KEY, $ARG ¤Ï´Ø¿ô minput_filter () ¤Î¤â¤Î¤ÈƱ¤¸¡£
1003 ¤³¤Î´Ø¿ô¤Ï $KEY ¤ò½èÍý¤·¡¢$IC ¤ÎÆâÉô¾õÂÖ¤ò¹¹¿·¤¹¤ë¡£ $KEY
1004 ¤¬ÆþÎϥ᥽¥Ã¥É¤ËµÛ¼ý¤µ¤ì¤Æ¥Æ¥¥¹¥È¤¬À¸À®¤µ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢
1005 1 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤¹¡£
1007 ¥á¥ó¥Ð \<callback\> ¤ËɬÍפǤ¢¤ì¤Ð¡¢$IC->status, $IC->preedit,
1008 $IC->cursor_pos, $IC->ncandidates, $IC->candidates,
1009 $IC->produced ¤ò¹¹¿·¤Ç¤¤ë¡£
1011 $ARG ¤Î°ÕÌ£¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë°Í¸¤¹¤ë¡£Îã¤Ï @c
1012 minput_default_driver ¤Þ¤¿¤Ï @c minput_gui_driver
1013 ¤ÎÀâÌÀ¤ò»²¾È¤Î¤³¤È¡£ */
1015 int (*filter) (MInputContext *ic, MSymbol key, void *arg);
1018 @brief Lookup a produced text in an input context.
1020 It is called from the function minput_lookup () and looks up a
1021 produced text in the input context $IC. This function
1022 concatenate a text produced by the input key $KEY (if any) to
1023 M-text $MT. If $KEY was correctly handled by the input method
1024 of $IC, it returns 0. Otherwise, it returns 1.
1026 The meaning of $ARG depends on the input method driver. See the
1027 documentation of @c minput_default_driver and @c
1028 minput_gui_driver for instance. */
1031 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÇÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È¤Î³ÍÆÀ.
1033 ´Ø¿ô minput_lookup () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC
1034 ¤ÇÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È¤ò¸¡º÷¤¹¤ë¡£ÆþÎÏ¥¡¼ $KEY
1035 ¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È¤¬¤¢¤ì¤Ð¡¢M-text $MT ¤ËÄɲ乤롣 $KEY
1036 ¤¬ÆþÎϥ᥽¥Ã¥É $IC ¤Ë¤è¤Ã¤ÆÀµ¤·¤¯½èÍý¤µ¤ì¤ì¤Ð 0 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 1 ¤òÊÖ¤¹¡£
1038 $ARG ¤Î°ÕÌ£¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë°Í¸¤¹¤ë¡£Îã¤Ï @c
1039 minput_default_driver ¤Þ¤¿¤Ï @c minput_gui_driver ¤ÎÀâÌÀ¤ò»²¾È¤Î
1042 int (*lookup) (MInputContext *ic, MSymbol key, void *arg, MText *mt);
1045 @brief List of callback functions.
1047 List of callback functions. Keys are one of
1048 @b Minput_preedit_start, @b Minput_preedit_draw,
1049 @b Minput_preedit_done, @b Minput_status_start, @b Minput_status_draw,
1050 @b Minput_status_done, @b Minput_candidates_start,
1051 @b Minput_candidates_draw, @b Minput_candidates_done,
1052 @b Minput_set_spot, @b Minput_toggle, @b Minput_reset,
1053 @b Minput_get_surrounding_text, @b Minput_delete_surrounding_text.
1054 Values are functions of type #MInputCallbackFunc. */
1056 @brief ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î¥ê¥¹¥È.
1058 ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î¥ê¥¹¥È¡£¥¡¼¤Ï¼¡¤Î¤¤¤º¤ì¤«¡£
1059 @b Minput_preedit_start, @b Minput_preedit_draw,
1060 @b Minput_preedit_done, @b Minput_status_start, @b Minput_status_draw,
1061 @b Minput_status_done, @b Minput_candidates_start,
1062 @b Minput_candidates_draw, @b Minput_candidates_done,
1063 @b Minput_set_spot, @b Minput_toggle, @b Minput_reset,
1064 @b Minput_get_surrounding_text, @b Minput_delete_surrounding_text¡£
1065 ÃͤÏ#MInputCallbackFunc ·¿¤Î´Ø¿ô¡£ */
1066 MPlist *callback_list;
1073 extern MInputDriver minput_default_driver;
1075 extern MSymbol Minput_method;
1076 extern MSymbol Minput_driver;
1078 extern MInputDriver *minput_driver;
1080 /** Symbols for callback commands. */
1081 extern MSymbol Minput_preedit_start;
1082 extern MSymbol Minput_preedit_draw;
1083 extern MSymbol Minput_preedit_done;
1084 extern MSymbol Minput_status_start;
1085 extern MSymbol Minput_status_draw;
1086 extern MSymbol Minput_status_done;
1087 extern MSymbol Minput_candidates_start;
1088 extern MSymbol Minput_candidates_draw;
1089 extern MSymbol Minput_candidates_done;
1090 extern MSymbol Minput_set_spot;
1091 extern MSymbol Minput_toggle;
1092 extern MSymbol Minput_reset;
1093 extern MSymbol Minput_get_surrounding_text;
1094 extern MSymbol Minput_delete_surrounding_text;
1096 /** Symbols for special input key event. */
1097 extern MSymbol Minput_focus_move;
1098 extern MSymbol Minput_focus_in;
1099 extern MSymbol Minput_focus_out;
1101 /** Symbols describing input method command/variable. */
1102 extern MSymbol Minherited;
1103 extern MSymbol Mcustomized;
1104 extern MSymbol Mconfigured;
1106 /*** @addtogroup m17nInputMethod
1110 @brief Structure of input method.
1112 The type @c MInputMethod is the structure of input method
1115 @brief ÆþÎϥ᥽¥Ã¥É¤Î¹½Â¤ÂÎ.
1117 @c MInputMethod ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¥ª¥Ö¥¸¥§¥¯¥ÈÍѤι½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
1121 /***en Which language this input method is for. The value is @c
1122 Mnil if the input method is foreign. */
1123 /***ja ¤É¤Î¸À¸ìÍѤÎÆþÎϥ᥽¥Ã¥É¤«¡£
1124 ÆþÎϥ᥽¥Ã¥É¤¬³°Éô¤Î¤â¤Î¤Ç¤¢¤ë¾ì¹ç¤ÎÃÍ¤Ï @c Mnil ¡£ */
1127 /***en Name of the input method. If the input method is foreign, it
1128 must has a property of key @c Minput_driver and the value must be a
1129 pointer to a proper input method driver. */
1130 /***ja ÆþÎϥ᥽¥Ã¥É¤Î̾Á°¡£³°Éô¥á¥½¥Ã¥É¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢@c
1131 Minput_driver ¤ò¥¡¼¤È¤¹¤ë¥×¥í¥Ñ¥Æ¥£¤ò»ý¤Á¡¢¤½¤ÎÃͤÏŬÀÚ¤ÊÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£*/
1134 /***en Input method driver of the input method. */
1135 /***ja ¤½¤ÎÆþÎϥ᥽¥Ã¥ÉÍѤÎÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¡£ */
1136 MInputDriver driver;
1138 /***en The argument given to minput_open_im (). */
1139 /***ja minput_open_im () ¤ËÅϤµ¤ì¤ë°ú¿ô¡£ */
1142 /***en Pointer to extra information that \<driver\>.open_im ()
1144 /***ja \<driver\>.open_im () ¤¬ÀßÄꤹ¤ëÄɲþðÊó¤Ø¤Î¥Ý¥¤¥ó¥¿¡£ */
1151 @brief Bit-masks to specify how candidates of input method is changed. */
1154 @brief ÆþÎϥ᥽¥Ã¥É¤ÎÆþÎϸõÊ䤬¤É¤¦Êѹ¹¤µ¤ì¤¿¤«¤ò¼¨¤¹¥Ó¥Ã¥È¥Þ¥¹¥¯. */
1156 enum MInputCandidatesChanged
1158 MINPUT_CANDIDATES_LIST_CHANGED = 1,
1159 MINPUT_CANDIDATES_INDEX_CHANGED = 2,
1160 MINPUT_CANDIDATES_SHOW_CHANGED = 4,
1161 MINPUT_CANDIDATES_CHANGED_MAX
1168 @brief Structure of input context.
1170 The type @c MInputContext is the structure of input context
1174 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥ÈÍѹ½Â¤ÂÎ.
1176 @c MInputContext ¤Ï¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¥ª¥Ö¥¸¥§¥¯¥ÈÍѤι½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
1178 struct MInputContext
1180 /***en Backward pointer to the input method. It is set up be the
1181 function minput_create_ic (). */
1182 /***ja ÆþÎϥ᥽¥Ã¥É¤Ø¤ÎµÕ¥Ý¥¤¥ó¥¿¡£´Ø¿ô minput_create_ic ()
1183 ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1186 /***en M-text produced by the input method. It is set up by the
1187 function minput_lookup () . */
1188 /***ja ÆþÎϥ᥽¥Ã¥É¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë M-text¡£´Ø¿ô minput_lookup ()
1189 ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1192 /***en Argument given to the function minput_create_im (). */
1193 /***ja ´Ø¿ô minput_create_ic () ¤ËÅϤµ¤ì¤ë°ú¿ô¡£ */
1196 /***en Flag telling whether the input context is currently active or
1197 inactive. The value is set to 1 (active) when the input context
1198 is created. It is toggled by the function minput_toggle (). */
1199 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬¥¢¥¯¥Æ¥£¥Ö¤«¤É¤¦¤«¤ò¼¨¤¹¥Õ¥é¥°¡£
1200 ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬À¸À®¤µ¤ì¤¿»þÅÀ¤Ç¤ÏÃÍ¤Ï 1 ¡Ê¥¢¥¯¥Æ¥£¥Ö¡Ë¤Ç¤¢¤ê¡¢´Ø¿ô
1201 minput_toggle () ¤Ë¤è¤Ã¤Æ¥È¥°¥ë¤µ¤ì¤ë¡£ */
1204 /***en Spot location and size of the input context. */
1205 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Î¥¹¥Ý¥Ã¥È¤Î°ÌÃÖ¤ÈÂ礤µ. */
1207 /***en X and Y coordinate of the spot. */
1208 /***ja ¥¹¥Ý¥Ã¥È¤Î X, Y ºÂɸ. */
1211 /***en Ascent and descent pixels of the line of the spot. */
1212 /***ja ¥¹¥Ý¥Ã¥È¤Î¥¢¥»¥ó¥È¤È¥Ç¥£¥»¥ó¥È¤Î¥Ô¥¯¥»¥ë¿ô. */
1213 int ascent, descent;
1215 /***en Font size for preedit text in 1/10 point. */
1216 /***ja preedit ¥Æ¥¥¹¥ÈÍѤΥե©¥ó¥È¥µ¥¤¥º (1/10 ¥Ý¥¤¥ó¥Èñ°Ì). */
1219 /***en M-text at the spot, or NULL. */
1220 /***ja ¥¹¥Ý¥Ã¥È¾å¤Î M-text¡¢¤Þ¤¿¤Ï NULL. */
1223 /***en Character position in \<mt\> at the spot. */
1224 /***ja \<mt\> ¤Ë¤ª¤±¤ë¥¹¥Ý¥Ã¥È¤Îʸ»ú°ÌÃÖ. */
1228 /***en The usage of the following members depends on the input
1229 method driver. The descriptions below are for the driver of an
1230 internal input method. They are set by the function
1231 \<im\>->driver.filter (). */
1232 /***ja °Ê²¼¤Î¥á¥ó¥Ð¤Î»ÈÍÑË¡¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë¡£
1233 °Ê²¼¤ÎÀâÌÀ¤Ï¡¢ÆâÉôÆþÎϥ᥽¥Ã¥ÉÍѤÎÆþÎϥɥ饤¥Ð¤ËÂФ¹¤ë¤â¤Î¤Ç¤¢¤ë¡£
1234 ¤³¤ì¤é¤Ï´Ø¿ô \<im\>->driver.filter () ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1236 /***en Pointer to extra information that \<im\>->driver.create_ic ()
1237 setups. It is used to record the internal state of the input
1239 /***ja \<im\>->driver.create_ic () ¤¬ÀßÄꤹ¤ëÄɲþðÊó¤Ø¤Î¥Ý¥¤¥ó¥¿¡£
1240 ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÎÆâÉô¾õÂÖ¤òµÏ¿¤¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£ */
1243 /***en M-text describing the current status of the input
1245 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Î¸½ºß¤Î¾õÂÖ¤òɽ¤¹ M-text */
1248 /***en The function \<im\>->driver.filter () sets the value to 1 when
1249 it changes \<status\>. */
1250 /***ja ´Ø¿ô \<im\>->driver.filter () ¤Ï¡¢\<status\> ¤òÊѤ¨¤¿ºÝ¤Ë¤³¤ÎÃͤò 1
1254 /***en M-text containing the current preedit text. The function
1255 \<im\>->driver.filter () sets the value. */
1256 /***ja ¸½ºß¤Î preedit ¥Æ¥¥¹¥È¤ò´Þ¤à M-text¡£´Ø¿ô
1257 \<im\>->driver.filter () ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1260 /***en The function \<im\>->driver.filter () sets the value to 1 when
1261 it changes \<preedit\>. */
1262 /***ja ´Ø¿ô \<im\>->driver.filter () ¤Ï¡¢\<preedit\> ¤òÊѤ¨¤¿ºÝ¤Ë¤³¤ÎÃͤò
1264 int preedit_changed;
1266 /***en Cursor position of \<preedit\>. */
1267 /***ja \<preedit\>¤Î¥«¡¼¥½¥ë°ÌÃÖ */
1270 /***en The function \<im\>->driver.filter () sets the value to 1 when
1271 it changes \<cursor_pos\>. */
1272 /***ja ´Ø¿ô \<im\>->driver.filter () ¤Ï¡¢\<cursor_pos\> ¤òÊѤ¨¤¿ºÝ¤Ë¤³¤ÎÃͤò
1274 int cursor_pos_changed;
1276 /***en Plist of the current candidate groups. Each element is an
1277 M-text or a plist. If an element is an M-text (i.e. the key is Mtext),
1278 candidates in that group are characters in the M-text. If it is
1279 a plist (i.e. the key is Mplist), each element is an M-text, and
1280 candidates in that group are those M-texts. */
1281 /***ja ¸½ºß¤Î¸õÊ䥰¥ë¡¼¥×¤Î Plist ¡£³ÆÍ×ÁÇ¤Ï M-text ¤« plist ¤Ç¤¢¤ë¡£
1282 Í×ÁǤ¬ M-text ¤Î¾ì¹ç¡Ê¥¡¼¤¬ Mtext ¤Ç¤¢¤ë¾ì¹ç¡Ë¤Ë¤Ï¡¢¤½¤Î¥°¥ë¡¼¥×¤Î¸õÊä¤Ï¤½¤Î
1283 M-text Ãæ¤Î³Æʸ»ú¤Ç¤¢¤ë¡£ Í×ÁǤ¬ plist ¤Î¾ì¹ç¡Ê¥¡¼¤¬ Mplist
1284 ¤Ç¤¢¤ë¾ì¹ç¡Ë¤Ë¤Ï¡¢¤½¤Î¥ê¥¹¥È¤Î³ÆÍ×ÁÇ¤Ï M-text ¤Ç¤¢¤ê¡¢¤½¤ì¤é¤¬¤½¤Î¥°¥ë¡¼¥×¤Î¸õÊä¤È¤Ê¤ë¡£ */
1285 MPlist *candidate_list;
1287 /***en Index number of the currently selected candidate in all the
1288 candidates. The index of the first candidate is 0. If the
1289 number is 8, and the first candidate group contains 7
1290 candidates, the currently selected candidate is the second element of the
1291 second candidate group. */
1292 /***ja ¸½ºßÁªÂò¤µ¤ì¤Æ¤¤¤ë¸õÊ䤬Á´¸õÊäÃæ¤Ç²¿ÈÖÌܤ«¤ò¤ò¼¨¤¹¥¤¥ó¥Ç¥Ã¥¯¥¹¡£
1293 ºÇ½é¤Î¸õÊä¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï 0¡£ºÇ½é¤Î¸õÊ䥰¥ë¡¼¥×¤Ë¼·¤Ä¤Î¸õÊ䤬´Þ¤Þ¤ì¤Æ¤ª¤ê¡¢¤³¤ÎÃͤ¬
1294 8 ¤Ê¤é¤Ð¡¢¸½ºß¤Î¸õÊä¤ÏÆóÈÖÌܤθõÊ䥰¥ë¡¼¥×¤ÎÆóÈÖÌܤÎÍ×ÁǤȤ¤¤¦¤³¤È¤Ë¤Ê¤ë¡£
1296 int candidate_index;
1299 /***en Start and the end positions of the preedit text where
1300 \<candidate_list\> corresponds to. */
1301 /***ja preedit ¥Æ¥¥¹¥ÈÃæ¤Ç¡¢\<candidate_list\>¤ËÂбþ¤¹¤ëºÇ½é¤ÈºÇ¸å¤Î°ÌÃÖ¡£
1303 int candidate_from, candidate_to;
1306 /***en Flag telling whether the current candidate group must be
1307 shown or not. The function \<im\>->driver.filter () sets the
1308 value to 1 when an input method required to show candidates, and
1309 sets the value to 0 otherwise. */
1310 /***ja ¸½ºß¤Î¸õÊ䥰¥ë¡¼¥×¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«¤ò¼¨¤¹¥Õ¥é¥°¡£
1311 ´Ø¿ô \<im\>->driver.filter () ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¤¬¸õÊä¤Îɽ¼¨¤òÍ׵ᤷ¤¿»þ¤³¤ÎÃͤò
1312 1 ¤Ë¡¢¤½¤ì°Ê³°¤Î»þ 0 ¤ËÀßÄꤹ¤ë¡£ */
1315 /***en The function \<im\>->driver.filter () sets the value to bitwise
1316 OR of @c enum @c MInputCandidatesChanged when it changed any of
1317 the above members (\<candidate_XXX\>), and sets the value to 0
1319 /***ja ´Ø¿ô \<im\>->driver.filter () ¤Ï¡¢¾åµ¤Î¥á¥ó¥Ð \<candidate_XXX\>
1320 ¤Î£±¤Ä¤Ç¤âÊѹ¹¤·¤¿ºÝ¤Ë¤Ï¡¢¤³¤ÎÃͤò @c enum @c
1321 MInputCandidatesChanged ¤Î¥Ó¥Ã¥Èñ°Ì¤Ç¤ÎÏÀÍý OR ¤ËÀßÄꤹ¤ë¡£¤½¤¦
1322 ¤Ç¤Ê¤±¤ì¤Ð 0 ¤ËÀßÄꤹ¤ë¡£ */
1323 int candidates_changed;
1325 /***en Plist that can be freely used by \<im\>->driver functions.
1326 The driver of internal input method uses it to exchange extra
1327 arguments and result for callback functions. The function
1328 \<im\>->driver.create_ic () sets this to an empty plist, and the
1329 function \<im\>->driver.destroy_ic () frees it by using
1330 m17n_object_unref (). */
1331 /***ja \<im\>->driver ¤Î´Ø¿ô·²¤Ë¤è¤Ã¤Æ¼«Í³¤Ë»ÈÍѤǤ¤ë plist¡£
1332 ÆâÉôÆþÎϥ᥽¥Ã¥ÉÍѥɥ饤¥Ð¤Ï¤³¤ì¤ò¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤È¤Î°ú¿ô¤äÊÖÃÍ
1333 ¤Î¼õÅϤ·¤Ë»ÈÍѤ¹¤ë¡£´Ø¿ô \<im\>->driver.create_ic () ¤Ï¤³¤Î plist
1334 ¤ò¶õ¤ËÀßÄꤹ¤ë¡£´Ø¿ô\<im\>->driver.destroy_ic () ¤Ï
1335 m17n_object_unref () ¤òÍѤ¤¤Æ¤³¤Î plist ¤ò²òÊü¤¹¤ë¡£ */
1343 extern MInputMethod *minput_open_im (MSymbol language, MSymbol name,
1348 extern void minput_close_im (MInputMethod *im);
1350 extern MInputContext *minput_create_ic (MInputMethod *im, void *arg);
1352 extern void minput_destroy_ic (MInputContext *ic);
1354 extern int minput_filter (MInputContext *ic, MSymbol key, void *arg);
1356 extern int minput_lookup (MInputContext *ic, MSymbol key, void *arg,
1358 extern void minput_set_spot (MInputContext *ic, int x, int y, int ascent,
1359 int descent, int fontsize, MText *mt, int pos);
1360 extern void minput_toggle (MInputContext *ic);
1362 extern void minput_reset_ic (MInputContext *ic);
1364 extern MText *minput_get_description (MSymbol language, MSymbol name);
1366 extern MPlist *minput_get_title_icon (MSymbol language, MSymbol name);
1368 extern MPlist *minput_get_command (MSymbol language, MSymbol name,
1370 extern int minput_config_command (MSymbol language, MSymbol name,
1371 MSymbol command, MPlist *keyseq);
1372 extern MPlist *minput_get_variable (MSymbol language, MSymbol name,
1374 extern int minput_config_variable (MSymbol language, MSymbol name,
1375 MSymbol variable, MPlist *value);
1376 extern char *minput_config_file (void);
1378 extern int minput_save_config (void);
1380 extern int minput_callback (MInputContext *ic, MSymbol command);
1382 /* obsolete functions */
1383 extern MPlist *minput_get_commands (MSymbol language, MSymbol name);
1385 extern int minput_assign_command_keys (MSymbol language, MSymbol name,
1386 MSymbol command, MPlist *keys);
1387 extern MPlist *minput_get_variables (MSymbol language, MSymbol name);
1389 extern int minput_set_variable (MSymbol language, MSymbol name,
1390 MSymbol variable, void *value);
1392 extern MInputMethod *mdebug_dump_im (MInputMethod *im, int indent);
1396 #endif /* _M17N_H_ */