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);
39 #define M17N_INIT() m17n_init ()
41 extern void m17n_fini (void);
43 #define M17N_FINI() m17n_fini ()
46 /***en @defgroup m17nShell SHELL API */
47 /***ja @defgroup m17nShell ¥·¥§¥ë API */
51 * (11) Functions related to the m17n database
56 /* (S2) Charset staffs */
59 /*** @ingroup m17nShell */
60 /***en @defgroup m17nCharset Charset */
61 /***ja @defgroup m17nCharset ʸ»ú¥»¥Ã¥È */
64 #if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
65 #define MCHAR_INVALID_CODE 0xFFFFFFFF
68 /* Predefined charsets */
69 extern MSymbol Mcharset_ascii;
70 extern MSymbol Mcharset_iso_8859_1;
71 extern MSymbol Mcharset_unicode;
72 extern MSymbol Mcharset_m17n;
73 extern MSymbol Mcharset_binary;
75 /* Predefined keys for mchar_define_charset (). */
76 extern MSymbol Mmethod;
77 extern MSymbol Mdimension;
78 extern MSymbol Mmin_range;
79 extern MSymbol Mmax_range;
80 extern MSymbol Mmin_code;
81 extern MSymbol Mmax_code;
82 extern MSymbol Mascii_compatible;
83 extern MSymbol Mfinal_byte;
84 extern MSymbol Mrevision;
85 extern MSymbol Mmin_char;
86 extern MSymbol Mmapfile;
87 extern MSymbol Mparents;
88 extern MSymbol Msubset_offset;
89 extern MSymbol Mdefine_coding;
90 extern MSymbol Maliases;
92 /* Methods of a charset. */
93 extern MSymbol Moffset;
95 extern MSymbol Munify;
96 extern MSymbol Msubset;
97 extern MSymbol Msuperset;
100 extern MSymbol mchar_define_charset (const char *name, MPlist *plist);
102 extern MSymbol mchar_resolve_charset (MSymbol symbol);
104 extern int mchar_list_charset (MSymbol **symbols);
106 extern int mchar_decode (MSymbol charset_name, unsigned code);
108 extern unsigned mchar_encode (MSymbol charset_name, int c);
110 extern int mchar_map_charset (MSymbol charset_name,
111 void (*func) (int from, int to, void *arg),
116 /* (S3) code conversion */
118 /*** @ingroup m17nShell */
119 /***en @defgroup m17nConv Code Conversion */
120 /***ja @defgroup m17nConv ¥³¡¼¥ÉÊÑ´¹ */
123 /* Predefined coding systems */
124 extern MSymbol Mcoding_us_ascii;
125 extern MSymbol Mcoding_iso_8859_1;
126 extern MSymbol Mcoding_utf_8;
127 extern MSymbol Mcoding_utf_8_full;
128 extern MSymbol Mcoding_utf_16;
129 extern MSymbol Mcoding_utf_16be;
130 extern MSymbol Mcoding_utf_16le;
131 extern MSymbol Mcoding_utf_32;
132 extern MSymbol Mcoding_utf_32be;
133 extern MSymbol Mcoding_utf_32le;
134 extern MSymbol Mcoding_sjis;
136 /* Parameter keys for mconv_define_coding (). */
137 extern MSymbol Mtype;
138 extern MSymbol Mcharsets;
139 extern MSymbol Mflags;
140 extern MSymbol Mdesignation;
141 extern MSymbol Minvocation;
142 extern MSymbol Mcode_unit;
144 extern MSymbol Mlittle_endian;
146 /* Symbols representing coding system type. */
148 extern MSymbol Miso_2022;
150 /* Symbols appearing in the value of Mfrag parameter. */
151 extern MSymbol Mreset_at_eol;
152 extern MSymbol Mreset_at_cntl;
153 extern MSymbol Meight_bit;
154 extern MSymbol Mlong_form;
155 extern MSymbol Mdesignation_g0;
156 extern MSymbol Mdesignation_g1;
157 extern MSymbol Mdesignation_ctext;
158 extern MSymbol Mdesignation_ctext_ext;
159 extern MSymbol Mlocking_shift;
160 extern MSymbol Msingle_shift;
161 extern MSymbol Msingle_shift_7;
162 extern MSymbol Meuc_tw_shift;
163 extern MSymbol Miso_6429;
164 extern MSymbol Mrevision_number;
165 extern MSymbol Mfull_support;
168 extern MSymbol Mcoding;
169 extern MSymbol Mmaybe;
171 /*** @ingroup m17nConv */
173 @brief Codes that represent the result of code conversion.
175 One of these values is set in @c MConverter-\>result. */
178 @brief ¥³¡¼¥ÉÊÑ´¹¤Î·ë²Ì¤ò¼¨¤¹¥³¡¼¥É.
180 ¤³¤ì¤é¤ÎÃͤΤ¦¤Á°ì¤Ä¤¬ @c MConverter-\>result ¤ËÀßÄꤵ¤ì¤ë¡£ */
182 enum MConversionResult
184 /***en Code conversion is successful. */
185 /***ja ¥³¡¼¥ÉÊÑ´¹¤ÏÀ®¸ù. */
186 MCONVERSION_RESULT_SUCCESS,
188 /***en On decoding, the source contains an invalid byte. */
189 /***ja ¥Ç¥³¡¼¥É»þ¡¢¥½¡¼¥¹¤ËÉÔÀµ¤Ê¥Ð¥¤¥È¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë. */
190 MCONVERSION_RESULT_INVALID_BYTE,
192 /***en On encoding, the source contains a character that cannot be
193 encoded by the specified coding system. */
194 /***ja ¥¨¥ó¥³¡¼¥É»þ¡¢»ØÄê¤Î¥³¡¼¥É·Ï¤Ç¥¨¥ó¥³¡¼¥É¤Ç¤¤Ê¤¤Ê¸»ú¤¬¥½¡¼¥¹¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë. */
195 MCONVERSION_RESULT_INVALID_CHAR,
197 /***en On decoding, the source ends with an incomplete byte sequence. */
198 /***ja ¥Ç¥³¡¼¥É»þ¡¢ÉÔ´°Á´¤Ê¥Ð¥¤¥ÈÎó¤Ç¥½¡¼¥¹¤¬½ª¤ï¤Ã¤Æ¤¤¤ë¡£*/
199 MCONVERSION_RESULT_INSUFFICIENT_SRC,
201 /***en On encoding, the destination is too short to store the result. */
202 /***ja ¥¨¥ó¥³¡¼¥É»þ¡¢·ë²Ì¤ò³ÊǼ¤¹¤ëÎΰ褬û¤«¤¹¤®¤ë¡£ */
203 MCONVERSION_RESULT_INSUFFICIENT_DST,
205 /***en An I/O error occurred in the conversion. */
206 /***ja ¥³¡¼¥ÉÊÑ´¹Ãæ¤Ë I/O ¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¡£ */
207 MCONVERSION_RESULT_IO_ERROR
211 /*** @ingroup m17nConv */
213 @brief Structure to be used in code conversion.
215 Structure to be used in code conversion. The first three members
216 are to control the conversion. */
219 @brief ¥³¡¼¥ÉÊÑ´¹¤ËÍѤ¤¤é¤ì¤ë¹½Â¤ÂÎ.
221 ¥³¡¼¥ÉÊÑ´¹¤ËÍѤ¤¤é¤ì¤ë¹½Â¤ÂΡ£ºÇ½é¤Î£³¤Ä¤Î¥á¥ó¥Ð¤ÏÊÑ´¹¤òÀ©¸æ¤¹¤ë¡£
223 @latexonly \IPAlabel{MConverter} @endlatexonly
229 Set the value to nonzero if the conversion should be lenient.
230 By default, the conversion is strict (i.e. not lenient).
232 If the conversion is strict, the converter stops at the first
233 invalid byte (on decoding) or at the first character not
234 supported by the coding system (on encoding). If this happens,
235 @c MConverter-\>result is set to @c
236 MCONVERSION_RESULT_INVALID_BYTE or @c
237 MCONVERSION_RESULT_INVALID_CHAR accordingly.
239 If the conversion is lenient, on decoding, an invalid byte is
240 kept per se, and on encoding, an invalid character is replaced
241 with "<U+XXXX>" (if the character is a Unicode character) or
242 with "<M+XXXXXX>" (otherwise). */
245 ¸·Ì©¤ÊÊÑ´¹¤¬É¬ÍפǤʤ¤¾ì¹ç¤ËÃͤò 0 °Ê³°¤Ë¤¹¤ë¡£
246 ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢ÊÑ´¹¤Ï¸·Ì©¤Ç¤¢¤ë¡£
248 ÊÑ´¹¤¬¸·Ì©¤È¤Ï¡¢¥Ç¥³¡¼¥É¤ÎºÝ¤Ë¤ÏºÇ½é¤ÎÉÔÀµ¤Ê¥Ð¥¤¥È¤Ç¥³¥ó¥Ð¡¼¥¿¤¬»ß¤Þ¤ë¤³¤È¡¢
249 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤ÏÊÑ´¹¤µ¤ì¤ë¥³¡¼¥É·Ï¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Ê¤¤ºÇ½é¤Îʸ»ú¤Ç¥³¥ó¥Ð¡¼¥¿¤¬»ß¤Þ¤ë¤³¤È¤ò»Ø¤¹¡£
250 ¤³¤ì¤é¤Î¾ì¹ç¡¢@c MConverter-\>result ¤Ï¤½¤ì¤¾¤ì @c
251 MCONVERSION_RESULT_INVALID_BYTE ¤«@c
252 MCONVERSION_RESULT_INVALID_CHAR ¤È¤Ê¤ë¡£
254 ÊÑ´¹¤¬¸·Ì©¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¥Ç¥³¡¼¥É¤ÎºÝ¤ÎÉÔÀµ¤Ê¥Ð¥¤¥È¤Ï¤½¤Î¥Ð¥¤¥È¤Î¤Þ¤Þ»Ä¤ë¡£
255 ¤Þ¤¿¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï¡¢ÉÔÀµ¤Êʸ»ú¤¬ Unicode ʸ»ú¤Î¾ì¹ç¤Ë¤Ï "<U+XXXX>"
256 ¤Ë¡¢¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï "<M+XXXXXX>" ¤ËÃÖ¤´¹¤¨¤é¤ì¤ë¡£ */
261 Set the value to nonzero before decoding or encoding the last
262 block of the byte sequence or the character sequence
263 respectively. The value influences the conversion as below.
265 On decoding, in the case that the last few bytes are too short
266 to form a valid byte sequence:
268 If the value is nonzero, the conversion terminates by error
269 (MCONVERSION_RESULT_INVALID_BYTE) at the first byte of the
272 If the value is zero, the conversion terminates successfully.
273 Those bytes are stored in the converter as carryover and are
274 prepended to the byte sequence of the further conversion.
276 On encoding, in the case that the coding system is context
279 If the value is nonzero, the conversion may produce a byte
280 sequence at the end to reset the context to the initial state
281 even if the source characters are zero.
283 If the value is zero, the conversion never produce such a byte
284 sequence at the end. */
288 ¥Ð¥¤¥ÈÎó¤Î½ªÃ¼¤Î¥Ö¥í¥Ã¥¯¤ò¥Ç¥³¡¼¥É¤¹¤ëºÝ¡¢¤Þ¤¿¤Ïʸ»úÎó¤Î½ªÃ¼¤Î¥Ö¥í¥Ã¥¯¤ò¥¨¥ó¥³¡¼¥É¤¹¤ëºÝ¤Ï¡¢Ãͤò
289 0 °Ê³°¤Ë¤¹¤ë¡£¤³¤ÎÃͤϰʲ¼¤Î¤è¤¦¤ËÊÑ´¹¤Ë±Æ¶Á¤¹¤ë¡£
291 ¥Ç¥³¡¼¥Ç¥£¥ó¥°¤ÎºÝ¤ËºÇ¸å¤Î¿ô¥Ð¥¤¥È¤¬Àµ¤·¤¤¥Ð¥¤¥È¥·¡¼¥¯¥¨¥ó¥¹¤ò·ÁÀ®¤¹¤ë¤Ë¤Ïû¤¹¤®¤ë¾ì¹ç¡§
293 Ãͤ¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÊÑ´¹¤Ï¤½¤Î¥·¡¼¥¯¥¨¥ó¥¹¤ÎºÇ½é¤Î¥Ð¥¤¥È¤Ë¤ª¤¤¤Æ¡¢¥¨¥é¡¼
294 (MCONVERSION_RESULT_INVALID_BYTE) ¤Ç½ª¤ë¡£
296 Ãͤ¬ 0 ¤Ê¤é¤Ð¡¢ÊÑ´¹¤ÏÀ®¸ù¤·¤Æ½ª¤ë¡£
297 ÌäÂê¤Î¿ô¥Ð¥¤¥È¤Ï¥¥ã¥ê¡¼¥ª¡¼¥Ð¤È¤·¤Æ¥³¥ó¥Ð¡¼¥¿¤ËÊÝ»ý¤µ¤ì¡¢ÊÑ´¹¤Î³¤¤ò¹Ô¤¦ºÝ¤ËÊÑ´¹¤¹¤ë¥Ð¥¤¥ÈÎó¤ÎÁ°¤ËÉÕ¤±¤é¤ì¤ë¡£
299 ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎºÝ¤Ë¥³¡¼¥É·Ï¤¬Ê¸Ì®°Í¸¤Î¾ì¹ç¡¢
301 Ãͤ¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥³¥ó¥Æ¥¥¹¥È¤òºÇ½é¤ËÌ᤹¤¿¤á¤Î¥Ð¥¤¥ÈÎ󤬥½¡¼¥¹¤Îʸ»ú¤È¤«¤«¤ï¤ê¤Ê¤¯ÊÑ´¹¤Î·ë²ÌÀ¸À®¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¡£
303 Ãͤ¬ 0 ¤Ê¤é¤Ð¡¢¤½¤Î¤è¤¦¤Ê¥Ð¥¤¥ÈÎó¤ÏÀ¸À®¤µ¤ì¤Ê¤¤¡£
310 If the value is nonzero, it specifies at most how many
311 characters to convert. */
313 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÊÑ´¹¤µ¤ì¤ëºÇÂç¤Îʸ»ú¿ô¤ò»ØÄꤹ¤ë¡£
319 The following three members are to report the result of the
322 °Ê²¼¤Î£³¤Ä¤Î¥á¥ó¥Ð¤ÏÊÑ´¹¤Î·ë²Ì¤òɽ¤¹¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£ */
325 Number of characters most recently decoded or encoded. */
327 ºÇ¶á¤Ë¥Ç¥³¡¼¥É/¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿Ê¸»ú¿ô¡£ */
332 Number of bytes recently decoded or encoded. */
335 ºÇ¶á¤Ë¥Ç¥³¡¼¥É/¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿¥Ð¥¤¥È¿ô¡£ */
340 Result code of the conversion. */
343 ¥³¡¼¥ÉÊÑ´¹¤Î·ë²Ì¤ò¼¨¤¹¥³¡¼¥É¡£ */
345 enum MConversionResult result;
348 Various information about the status of code conversion. The
349 contents depend on the type of coding system. It is assured
350 that @c status is aligned so that any type of casting is safe
351 and at least 256 bytes of memory space can be used. */
354 ¥³¡¼¥ÉÊÑ´¹¤Î¾õ¶·¤Ë´Ø¤¹¤ë¼ï¡¹¤Î¾ðÊó¡£ÆâÍƤϥ³¡¼¥É·Ï¤Î¥¿¥¤¥×¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë¡£
355 @c status ¤Ï¤É¤Î¤è¤¦¤Ê·¿¤Ø¤Î¥¥ã¥¹¥È¤ËÂФ·¤Æ¤â°ÂÁ´¤Ê¤è¤¦¤Ë¥á¥â¥ê¥¢¥é¥¤¥ó¤µ¤ì¤Æ¤ª¤ê¡¢¤Þ¤¿ºÇÄã256¥Ð¥¤¥È¤Î¥á¥â¥êÎΰ褬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ */
364 This member is for internally use only. An application program
365 should never touch it. */
366 /***ja ¤³¤Î¥á¥ó¥Ð¤ÏÆâÉôŪ¤Ë»ÈÍѤµ¤ì¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¿¨¤ì¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ */
371 /*** @ingroup m17nConv */
373 @brief Types of coding system. */
375 @brief ¥³¡¼¥É·Ï¤Î¥¿¥¤¥×. */
380 A coding system of this type supports charsets directly.
381 The dimension of each charset defines the length of bytes to
382 represent a single character of the charset, and a byte
383 sequence directly represents the code-point of a character.
385 The m17n library provides the default decoding and encoding
386 routines of this type. */
389 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ïʸ»ú¥»¥Ã¥È¤òľÀÜ¥µ¥Ý¡¼¥È¤¹¤ë¡£
390 ³Æʸ»ú¥»¥Ã¥È¤Î¼¡¸µ¤È¤Ï¡¢¤½¤Îʸ»ú¥»¥Ã¥È¤Ç°ìʸ»ú¤òɽ¸½¤¹¤ë¤¿¤á¤ËɬÍפʥХ¤¥È¿ô¤Ç¤¢¤ê¡¢¥Ð¥¤¥ÈÎó¤Ïʸ»ú¤Î¥³¡¼¥É¥Ý¥¤¥ó¥È¤òľÀÜɽ¤¹¡£
392 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
394 MCODING_TYPE_CHARSET,
397 A coding system of this type supports byte sequences of a
398 UTF (UTF-8, UTF-16, UTF-32) like structure.
400 The m17n library provides the default decoding and encoding
401 routines of this type. */
404 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢UTF ·Ï (UTF-8, UTF-16, UTF-32) ¤Î¥Ð¥¤¥ÈÎó¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£
406 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
411 A coding system of this type supports byte sequences of an
412 ISO-2022 like structure. The details of each structure are
413 specified by @c MCodingInfoISO2022 .
415 The m17n library provides decoding and encoding routines of
419 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢ISO-2022 ·Ï¤Î¥Ð¥¤¥ÈÎó¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£
420 ³Æ¥³¡¼¥É·Ï¤Î¹½Â¤¤Î¾ÜºÙ¤Ï @c MCodingInfoISO2022 ¤Ç»ØÄꤵ¤ì¤ë¡£
422 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
424 MCODING_TYPE_ISO_2022,
427 A coding system of this type is for byte sequences of
428 miscellaneous structures.
430 The m17n library does not provide decoding and encoding
431 routines of this type. They must be provided by the
432 application program. */
435 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢¤½¤Î¾¤Î¹½Â¤¤Î¥Ð¥¤¥ÈÎó¤Î¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£
437 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥ¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤·¤Ê¤¤¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¦¤Ç½àÈ÷¤¹¤ëɬÍפ¬¤¢¤ë¡£ */
443 /*** @ingroup m17nConv */
445 @brief Bit-masks to specify the detail of coding system whose type is MCODING_TYPE_ISO_2022. */
447 @brief MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Î¾ÜºÙ¤òɽ¤ï¤¹¥Ó¥Ã¥È¥Þ¥¹¥¯. */
449 enum MCodingFlagISO2022
452 On encoding, reset the invocation and designation status to
453 initial at end of line. */
454 /***ja ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢¹ÔËö¤Ç¸Æ¤Ó½Ð¤· (invocation) ¤È»Ø¼¨
455 (designation) ¤Î¾õÂÖ¤ò½é´üÃͤËÌ᤹¡£ */
456 MCODING_ISO_RESET_AT_EOL = 0x1,
459 On encoding, reset the invocation and designation status to
460 initial before any control codes. */
462 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢¤¹¤Ù¤Æ¤ÎÀ©¸æʸ»ú¤ÎÁ°¤Ç¡¢¸Æ¤Ó½Ð¤·
463 (invocation) ¤È»Ø¼¨ (designation) ¤Î¾õÂÖ¤ò½é´üÃͤËÌ᤹¡£ */
464 MCODING_ISO_RESET_AT_CNTL = 0x2,
467 Use the right graphic plane. */
469 ¿Þ·Áʸ»ú½¸¹ç¤Î±¦Â¦¤ò»È¤¦¡£ */
470 MCODING_ISO_EIGHT_BIT = 0x4,
473 Use the non-standard 4 bytes format for designation sequence
474 for charsets JISX0208-1978, GB2312, and JISX0208-1983. */
476 JISX0208-1978, GB2312, JISX0208-1983
477 ¤Îʸ»ú½¸¹ç¤ËÂФ¹¤ë»Ø¼¨¥·¡¼¥¯¥¨¥ó¥¹¤È¤·¤Æ¡¢Èóɸ½à¤Î4¥Ð¥¤¥È·Á¼°¤òÍѤ¤¤ë¡£ */
479 MCODING_ISO_LONG_FORM = 0x8,
482 On encoding, unless explicitly specified, designate charsets
485 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢Ê¸»ú½¸¹ç¤ò G0
487 MCODING_ISO_DESIGNATION_G0 = 0x10,
490 On encoding, unless explicitly specified, designate charsets
491 except for ASCII to G1. */
493 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢ASCII °Ê³°¤Îʸ»ú½¸¹ç¤ò
495 MCODING_ISO_DESIGNATION_G1 = 0x20,
498 On encoding, unless explicitly specified, designate 94-chars
499 charsets to G0, 96-chars charsets to G1. */
501 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢94ʸ»ú½¸¹ç¤ò G0
502 ¤Ë¡¢96ʸ»ú½¸¹ç¤ò G1 ¤Ë»Ø¼¨¤¹¤ë¡£*/
503 MCODING_ISO_DESIGNATION_CTEXT = 0x40,
506 On encoding, encode such charsets not conforming to ISO-2022
507 by ESC % / ..., and encode non-supported Unicode characters by
508 ESC % G ... ESC % @@ . On decoding, handle those escape
511 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢ISO-2022 ¤Ë¹çÃפ·¤Ê¤¤Ê¸»ú½¸¹ç¤ò ESC % / ...
512 ¤Ç¥¨¥ó¥³¡¼¥É¤¹¤ë¡£¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ Unicode ʸ»ú¤Ï ESC % G ...
513 ESC % @@ ¤Ç¥¨¥ó¥³¡¼¥É¤¹¤ë¡£
514 ¥Ç¥³¡¼¥É¤ÎºÝ¡¢¤³¤ì¤é¤Î¥¨¥¹¥±¡¼¥×¡¦¥·¡¼¥±¥ó¥¹¤ò²ò¼á¤¹¤ë¡£ */
515 MCODING_ISO_DESIGNATION_CTEXT_EXT = 0x80,
518 Use locking shift. */
520 ¥í¥Ã¥¥ó¥°¥·¥Õ¥È¤ò»È¤¦¡£ */
521 MCODING_ISO_LOCKING_SHIFT = 0x100,
524 Use single shift (SS2 (0x8E or ESC N), SS3 (0x8F or ESC O)). */
526 ¥·¥ó¥°¥ë¥·¥Õ¥È (SS2 (0x8E or ESC N), SS3 (0x8F or ESC O)) ¤ò»È¤¦¡£ */
527 MCODING_ISO_SINGLE_SHIFT = 0x200,
530 Use 7-bit single shift 2 (SS2 (0x19)). */
532 7¥Ó¥Ã¥È¥·¥ó¥°¥ë¥·¥Õ¥È 2 (SS2 (0x19)) ¤ò»È¤¦¡£ */
533 MCODING_ISO_SINGLE_SHIFT_7 = 0x400,
536 Use EUC-TW like special shifting. */
538 EUC-TW É÷¤ÎÆÃÊ̤ʥ·¥Õ¥È¤ò»È¤¦¡£ */
539 MCODING_ISO_EUC_TW_SHIFT = 0x800,
542 Use ISO-6429 escape sequences to indicate direction.
543 Not yet implemented. */
545 ISO-6429 ¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥¯¥¨¥ó¥¹¤ÇÊý¸þ¤ò»Ø¼¨¤¹¤ë¡£Ì¤¼ÂÁõ¡£ */
546 MCODING_ISO_ISO6429 = 0x1000,
549 On encoding, if a charset has revision number, produce escape
550 sequences to specify the number. */
552 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Ê¸»ú¥»¥Ã¥È¤Ë revision number
553 ¤¬¤¢¤ì¤Ð¤½¤ì¤òɽ¤ï¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥¯¥¨¥ó¥¹¤òÀ¸À®¤¹¤ë¡£ */
554 MCODING_ISO_REVISION_NUMBER = 0x2000,
557 Support all ISO-2022 charsets. */
559 ISO-2022 ¤ÎÁ´Ê¸»ú½¸¹ç¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£ */
560 MCODING_ISO_FULL_SUPPORT = 0x3000,
566 /*** @ingroup m17nConv */
568 @brief Structure for a coding system of type #MCODING_TYPE_ISO_2022.
570 Structure for extra information about a coding system of type
571 MCODING_TYPE_ISO_2022. */
574 @brief #MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѹ½Â¤ÂÎ.
576 MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѤòÊÝ»ý¤¹¤ë¤¿¤á¤Î¹½Â¤ÂΡ£
578 @latexonly \IPAlabel{MCodingInfoISO2022} @endlatexonly */
583 Table of numbers of an ISO2022 code extension element invoked
584 to each graphic plane (Graphic Left and Graphic Right). -1
585 means no code extension element is invoked to that plane. */
588 ³Æ¿Þ·Áʸ»úÎΰè (Graphic Left ¤È Graphic Right) ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤ë¡¢
589 ISO2022 Éä¹ç³ÈÄ¥Í×ÁǤÎÈÖ¹æ¤Î¥Æ¡¼¥Ö¥ë¡£-1
590 ¤Ï¤½¤ÎÎΰè¤Ë¤É¤ÎÉä¹ç³ÈÄ¥Í×ÁǤâ¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò¼¨¤¹¡£ */
592 int initial_invocation[2];
595 Table of code extension elements. The Nth element corresponds
596 to the Nth charset in $CHARSET_NAMES, which is an argument given
597 to the mconv_define_coding () function.
599 If an element value is 0..3, it specifies a graphic register
600 number to designate the corresponds charset. In addition, the
601 charset is initially designated to that graphic register.
603 If the value is -4..-1, it specifies a graphic register number
604 0..3 respectively to designate the corresponds charset.
605 Initially, the charset is not designated to any graphic
609 Éä¹ç³ÈÄ¥Í×ÁǤΥơ¼¥Ö¥ë¡£NÈÖÌܤÎÍ×ÁǤϡ¢$CHARSET_NAMES ¤Î N
610 ÈÖÌܤÎʸ»ú¥»¥Ã¥È¤ËÂбþ¤¹¤ë¡£$CHARSET_NAMES ¤Ï´Ø¿ô
611 mconv_define_coding () ¤Î°ú¿ô¤È¤Ê¤ë¡£
613 Ãͤ¬ 0..3 ¤À¤Ã¤¿¤é¡¢Âбþ¤¹¤ëʸ»ú¥»¥Ã¥È¤ò G0..G3
614 ¤Î¤½¤ì¤¾¤ì¤Ë»Ø¼¨¤¹¤ë¤³¤È¡¢¤Þ¤¿½é´ü¾õÂ֤Ǥ¹¤Ç¤Ë G0..G3
615 ¤Ë»Ø¼¨¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
617 Ãͤ¬ -4..-1 ¤À¤Ã¤¿¤é¡¢Âбþ¤¹¤ëʸ»ú¥»¥Ã¥È¤ò G0..G3
618 ¤Î¤½¤ì¤¾¤ì¤Ë»Ø¼¨¤¹¤ë¤³¤È¡¢¤·¤«¤·½é´ü¾õÂ֤ǤϤɤ³¤Ë¤â»Ø¼¨¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
621 char designations[32];
624 Bitwise OR of @c enum @c MCodingFlagISO2022 . */
627 @c enum @c MCodingFlagISO2022 ¤Î¥Ó¥Ã¥Èñ°Ì¤Ç¤ÎÏÀÍý OR */
631 } MCodingInfoISO2022;
634 /*** @ingroup m17nConv */
636 @brief Structure for extra information about a coding system of type #MCODING_TYPE_UTF.
640 @brief #MCODING_TYPE_UTF ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѤι½Â¤ÂÎ.
642 @latexonly \IPApage{MCodingInfoUTF} @endlatexonly
644 @latexonly \IPAlabel{MCodingInfoUTF} @endlatexonly */
649 Specify bits of a code unit. The value must be 8, 16, or 32. */
651 ¥³¡¼¥ÉĹ¡Ê¥Ó¥Ã¥È¿ô¡Ë¤Î»ØÄê¡£ÃÍ¤Ï 8, 16, 32 ¤Î¤¤¤º¤ì¤«¡£ */
655 Specify how to handle the heading BOM (byte order mark). The
656 value must be 0, 1, or 2. The meanings are as follows:
658 0: On decoding, check the first two byte. If they are BOM,
659 decide endian by them. If not, decide endian by the member @c
660 endian. On encoding, produce byte sequence according to
661 @c endian with heading BOM.
663 1: On decoding, do not handle the first two bytes as BOM, and
664 decide endian by @c endian. On encoding, produce byte sequence
665 according to @c endian without BOM.
667 2: On decoding, handle the first two bytes as BOM and decide
668 ending by them. On encoding, produce byte sequence according to
669 @c endian with heading BOM.
671 If <code_unit_bits> is 8, the value has no meaning. */
674 ÀèƬ¤Î BOM (¥Ð¥¤¥È¥ª¡¼¥À¡¼¥Þ¡¼¥¯) ¤Î¼è¤ê°·¤¤¤ò»ØÄꤹ¤ë¡£ÃÍ¤Ï 0,
675 1, 2 ¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ê¡¢¤½¤ì¤¾¤ì¤Î°ÕÌ£¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
677 0: ¥Ç¥³¡¼¥É¤ÎºÝ¤ËºÇ½é¤Î 2 ¥Ð¥¤¥È¤òÄ´¤Ù¤ë¡£¤â¤·¤½¤ì¤¬ BOM
678 ¤Ç¤¢¤ì¤Ð¡¢¥¨¥ó¥Ç¥£¥¢¥ó¤ò¤½¤ì¤ÇȽÄꤹ¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢¥á¥ó¥Ð @c
679 endian ¤Ë½¾¤Ã¤Æ¥¨¥ó¥Ç¥£¥¢¥ó¤ò·èÄꤹ¤ë¡£¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï @c
680 endian ¤Ë½¾¤Ã¤¿¥Ð¥¤¥ÈÎó¤òÀèƬ¤Ë BOM ÉÕ¤ÇÀ¸À®¤¹¤ë¡£
682 1: ¥Ç¥³¡¼¥É¤ÎºÝ¡¢ºÇ½é¤Î 2 ¥Ð¥¤¥È¤ò BOM ¤È¤·¤Æ°·¤ï¤º¡¢¥¨¥ó¥Ç¥£¥¢¥ó¤Ï
683 @c endian ¤ÇȽÄꤹ¤ë¡£¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï¡¢BOM ¤ò½ÐÎϤ»¤º¡¢
684 @c endian ¤Ë±þ¤¸¤¿¥Ð¥¤¥ÈÎó¤òÀ¸À®¤¹¤ë¡£
686 2: ¥Ç¥³¡¼¥É¤ÎºÝ¤ËºÇ½é¤Î2¥Ð¥¤¥È¤ò BOM¤È¤·¤Æ°·¤¤¡¢¤½¤ì¤Ë½¾¤Ã¤Æ¥¨¥ó¥Ç¥£¥¢¥ó¤òȽÄꤹ¤ë¡£
687 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï @c endian ¤Ë±þ¤¸¤¿¥Ð¥¤¥ÈÎó¤òÀèƬ¤Ë BOM ÉÕ¤¤ÇÀ¸À®¤¹¤ë¡£ */
691 Specify the endian type. The value must be 0 or 1. 0 means
692 little endian, and 1 means big endian.
694 If <code_unit_bits> is 8, the value has no meaning. */
696 ¥¨¥ó¥Ç¥£¥¢¥ó¤Î¥¿¥¤¥×¤ò»ØÄꤹ¤ë¡£ÃÍ¤Ï 0 ¤« 1 ¤Ç¤¢¤ê¡¢0
697 ¤Ê¤é¤Ð¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó¡¢1 ¤Ê¤é¤Ð¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó¤Ç¤¢¤ë¡£
699 <code_unit_bits> ¤¬ 8 ¤Î¾ì¹ç¤Ë¤Ï¡¢¤³¤ÎÃͤϰÕÌ£¤ò»ý¤¿¤Ê¤¤¡£
705 extern MSymbol mconv_define_coding (const char *name, MPlist *plist,
706 int (*resetter) (MConverter *),
707 int (*decoder) (const unsigned char *, int,
708 MText *, MConverter *),
709 int (*encoder) (MText *, int, int,
710 unsigned char *, int,
714 extern MSymbol mconv_resolve_coding (MSymbol symbol);
716 extern int mconv_list_codings (MSymbol **symbols);
718 extern MConverter *mconv_buffer_converter (MSymbol coding,
719 const unsigned char *buf,
722 extern MConverter *mconv_stream_converter (MSymbol coding, FILE *fp);
724 extern int mconv_reset_converter (MConverter *converter);
726 extern void mconv_free_converter (MConverter *converter);
728 extern MConverter *mconv_rebind_buffer (MConverter *converter,
729 const unsigned char *buf, int n);
731 extern MConverter *mconv_rebind_stream (MConverter *converter, FILE *fp);
733 extern MText *mconv_decode (MConverter *converter, MText *mt);
735 MText *mconv_decode_buffer (MSymbol name, const unsigned char *buf, int n);
737 MText *mconv_decode_stream (MSymbol name, FILE *fp);
739 extern int mconv_encode (MConverter *converter, MText *mt);
741 extern int mconv_encode_range (MConverter *converter, MText *mt,
744 extern int mconv_encode_buffer (MSymbol name, MText *mt,
745 unsigned char *buf, int n);
747 extern int mconv_encode_stream (MSymbol name, MText *mt, FILE *fp);
749 extern int mconv_getc (MConverter *converter);
751 extern int mconv_ungetc (MConverter *converter, int c);
753 extern int mconv_putc (MConverter *converter, int c);
755 extern MText *mconv_gets (MConverter *converter, MText *mt);
757 /* (S4) Locale related functions corresponding to libc functions */
759 /*** @ingroup m17nShell */
760 /***en @defgroup m17nLocale Locale */
761 /***ja @defgroup m17nLocale ¥í¥±¡¼¥ë */
764 /*** @ingroup m17nLocale */
766 @brief @c struct @c MLocale.
768 The structure @c MLocale is used to hold information about name,
769 language, territory, modifier, codeset, and the corresponding
770 coding system of locales.
772 The contents of this structure are implementation dependent. Its
773 internal structure is concealed from application programs. */
776 @brief @c MLocale ¹½Â¤ÂÎ.
778 @c MLocale ¹½Â¤ÂΤϡ¢¥í¥±¡¼¥ë¤Î̾Á°¡¢¸À¸ì¡¢ÃÏ°è¡¢¥â¥Ç¥£¥Õ¥¡¥¤¥¢¡¢¥³¡¼¥É¥»¥Ã¥È¡¢¤ª¤è¤ÓÂбþ¤¹¤ë¥³¡¼¥É·Ï¤Ë´Ø¤¹¤ë¾ðÊó¤òÊÝ»ý¤¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£
780 ¤³¤Î¹½Â¤ÂΤÎÆâÍƤϼÂÁõ¤Ë°Í¸¤¹¤ë¡£
781 ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */
785 mlocale_get_prop () */
787 typedef struct MLocale MLocale;
791 extern MSymbol Miso639_1, Miso639_2;
792 extern MSymbol Mterritory;
793 extern MSymbol Mmodifier;
794 extern MSymbol Mcodeset;
796 extern MPlist *mlanguage_list (void);
798 extern MSymbol mlanguage_code (MSymbol language, int len);
800 extern MPlist *mlanguage_name_list (MSymbol language, MSymbol target,
801 MSymbol script, MSymbol territory);
803 extern MText *mlanguage_text (MSymbol language);
805 extern MPlist *mscript_list (void);
807 extern MPlist *mscript_language_list (MSymbol script);
809 extern MSymbol mlanguage_name (MSymbol language);
811 extern MLocale *mlocale_set (int category, const char *locale);
813 extern MSymbol mlocale_get_prop (MLocale *locale, MSymbol key);
815 extern int mtext_ftime (MText *mt, const char *format, const struct tm *tm,
818 extern MText *mtext_getenv (const char *name);
820 extern int mtext_putenv (MText *mt);
822 extern int mtext_coll (MText *mt1, MText *mt2);
825 * (9) Miscellaneous functions of libc level (not yet implemented)
829 extern int mtext_width (MText *mt, int n);
830 extern MText *mtext_tolower (MText *mt);
831 extern MText *mtext_toupper (MText *mt);
838 /*** @ingroup m17nShell */
839 /***en @defgroup m17nInputMethod Input Method (basic) */
840 /***ja @defgroup m17nInputMethod ÆþÎϥ᥽¥Ã¥É (´ðËÜÉôʬ) */
843 /*** @addtogroup m17nInputMethod
846 /* Struct forward declaration. */
847 typedef struct MInputMethod MInputMethod;
848 typedef struct MInputContext MInputContext;
851 @brief Type of input method callback functions.
853 This is the type of callback functions called from input method
854 drivers. #IC is a pointer to an input context, #COMMAND is a name
855 of callback for which the function is called. */
857 @brief ÆþÎϥ᥽¥Ã¥É¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î·¿Àë¸À.
859 ÆþÎϥ᥽¥Ã¥É¤«¤é¸Æ¤Ð¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î·¿¤Ç¤¢¤ë¡£#IC
860 ¤ÏÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¡¢#COMMAND ¤Ï´Ø¿ô¤¬¸Æ¤Ð¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯¤Î̾Á°¤Ç¤¢¤ë¡£ */
862 typedef void (*MInputCallbackFunc) (MInputContext *ic, MSymbol command);
866 @brief Structure of input method driver.
868 The type @c MInputDriver is the structure of an input method driver that
869 contains several functions to handle an input method. */
872 @brief ÆþÎϥɥ饤¥ÐÍѹ½Â¤ÂÎ.
874 @c MInputDriver ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¤ò¼è¤ê°·¤¦´Ø¿ô¤ò´Þ¤àÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Î¹½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
876 typedef struct MInputDriver
879 @brief Open an input method.
881 This function opens the input method $IM. It is called from the
882 function minput_open_im () after all member of $IM but <info>
883 set. If opening $IM succeeds, it returns 0. Otherwise, it
884 returns -1. The function can setup $IM->info to keep various
885 information that is referred by the other driver functions. */
888 @brief ÆþÎϥ᥽¥Ã¥É¤ò¥ª¡¼¥×¥ó¤¹¤ë.
890 ¤³¤Î´Ø¿ô¤Ï¡¢ÆþÎϥ᥽¥Ã¥É $IM ¤ò¥ª¡¼¥×¥ó¤¹¤ë¡£$IM ¤Î <info>
891 °Ê³°¤ÎÁ´¥á¥ó¥Ð¡¼¤¬¥»¥Ã¥È¤µ¤ì¤¿¸å¤Ç¡¢´Ø¿ô minput_open_im ()
892 ¤«¤é¸Æ¤Ð¤ì¤ë¡£$IM ¤ò¥ª¡¼¥×¥ó¤Ç¤¤ì¤Ð 0 ¤ò¡¢¤Ç¤¤Ê¤±¤ì¤Ð -1¤òÊÖ¤¹¡£
894 ¤òÀßÄꤷ¤Æ¡¢Â¾¤Î¥É¥é¥¤¥Ð´Ø¿ô¤«¤é»²¾È¤µ¤ì¤ë¾ðÊó¤òÊÝ»ý¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
897 int (*open_im) (MInputMethod *im);
900 @brief Close an input method.
902 This function closes the input method $IM. It is called from
903 the function minput_close_im (). It frees all memory allocated
904 for $IM->info (if any) after finishing all the tasks of closing
905 the input method. But, the other members of $IM should not be
909 @brief ÆþÎϥ᥽¥Ã¥É¤ò¥¯¥í¡¼¥º¤¹¤ë.
911 ¤³¤Î´Ø¿ô¤Ï¡¢ÆþÎϥ᥽¥Ã¥É $IM ¤ò¥¯¥í¡¼¥º¤¹¤ë¡£´Ø¿ô
912 minput_close_im () ¤«¤é¸Æ¤Ð¤ì¤ë¡£
913 ÆþÎϥ᥽¥Ã¥É¤Î¥¯¥í¡¼¥º¤¬¤¹¤Ù¤Æ½ªÎ»¤·¤¿»þÅÀ¤Ç¡¢¤³¤Î´Ø¿ô¤Ï$IM->info
914 ¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥á¥â¥ê¤ò(¤¢¤ì¤Ð)¤¹¤Ù¤Æ³«Êü¤¹¤ë¡£
915 ¤¿¤À¤·¡¢$IM ¤Î¾¤Î¥á¥ó¥Ð¤Ë±Æ¶Á¤òÍ¿¤¨¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
918 void (*close_im) (MInputMethod *im);
921 @brief Create an input context.
923 This function creates the input context $IC. It is called from
924 the function minput_create_ic () after all members of $IC but
925 <info> are set. If creating $IC succeeds, it returns 0.
926 Otherwise, it returns -1. The function can setup $IC->info to
927 keep various information that is referred by the other driver
931 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÀ¸À®¤¹¤ë.
933 ¤³¤Î´Ø¿ô¤ÏÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC ¤òÀ¸À®¤¹¤ë¡£
934 $IC ¤Î <info> °Ê³°¤ÎÁ´¥á¥ó¥Ð¡¼¤¬¥»¥Ã¥È¤µ¤ì¤¿¸å¤Ç¡¢´Ø¿ô
935 minput_create_ic () ¤«¤é¸Æ¤Ð¤ì¤ë¡£
936 $IC ¤òÀ¸À®¤Ç¤¤ì¤Ð 0 ¤ò¡¢¤Ç¤¤Ê¤±¤ì¤Ð -1 ¤òÊÖ¤¹¡£
937 ¤³¤Î´Ø¿ô¤Ï $IC->info ¤òÀßÄꤷ¤Æ¡¢Â¾¤Î¥É¥é¥¤¥Ð´Ø¿ô¤«¤é»²¾È¤µ¤ì¤ë¾ðÊó¤òÊÝ»ý¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£ */
940 int (*create_ic) (MInputContext *ic);
943 @brief Destroy an input context.
945 This function is called from the function minput_destroy_ic ()
946 and destroys the input context $IC. It frees all memory
947 allocated for $IC->info (if any) after finishing all the tasks
948 of destroying the input method. But, the other members of $IC
949 should not be touched. */
952 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÇ˲õ¤¹¤ë.
954 ´Ø¿ô minput_destroy_ic () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC
955 ¤òÇ˲õ¤¹¤ë¡£ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÎÇ˲õ¤¬¤¹¤Ù¤Æ½ªÎ»¤·¤¿»þÅÀ¤Ç¡¢$IC->info
956 ¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥á¥â¥ê¤ò(¤¢¤ì¤Ð)¤¹¤Ù¤Æ³«Êü¤¹¤ë¡£¤¿¤À¤·¡¢$IC
957 ¤Î¾¤Î¥á¥ó¥Ð¤Ë±Æ¶Á¤òÍ¿¤¨¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ */
959 void (*destroy_ic) (MInputContext *ic);
962 @brief Filter an input key.
964 This function is called from the function minput_filter () and
965 filters an input key. $KEY and $ARG are the same as what given
968 The task of the function is to handle $KEY, update the internal
969 state of $IC. If $KEY is absorbed by the input method and no
970 text is produced, it returns 1. Otherwise, it returns 0.
972 It may update $IC->status, $IC->preedit, $IC->cursor_pos,
973 $IC->ncandidates, $IC->candidates, and $IC->produced if that is
974 necessary for the member <callback>.
976 The meaning of $ARG depends on the input method river. See the
977 documentation of @c minput_default_driver and @c
978 minput_gui_driver for instance. */
981 @brief ÆþÎÏ¥¡¼¤ò¥Õ¥£¥ë¥¿¤¹¤ë.
983 ´Ø¿ô minput_filter () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥¡¼¤ò¥Õ¥£¥ë¥¿¤¹¤ë¡£°ú¿ô
984 $KEY, $ARG ¤Ï´Ø¿ô minput_filter () ¤Î¤â¤Î¤ÈƱ¤¸¡£
986 ¤³¤Î´Ø¿ô¤Ï $KEY ¤ò½èÍý¤·¡¢$IC ¤ÎÆâÉô¾õÂÖ¤ò¹¹¿·¤¹¤ë¡£ $KEY
987 ¤¬ÆþÎϥ᥽¥Ã¥É¤ËµÛ¼ý¤µ¤ì¤Æ¥Æ¥¥¹¥È¤¬À¸À®¤µ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢
988 1 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤¹¡£
990 ¥á¥ó¥Ð <callback> ¤ËɬÍפǤ¢¤ì¤Ð¡¢$IC->status, $IC->preedit,
991 $IC->cursor_pos, $IC->ncandidates, $IC->candidates,
992 $IC->produced ¤ò¹¹¿·¤Ç¤¤ë¡£
994 $ARG ¤Î°ÕÌ£¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë°Í¸¤¹¤ë¡£Îã¤Ï @c
995 minput_default_driver ¤Þ¤¿¤Ï @c minput_gui_driver
996 ¤ÎÀâÌÀ¤ò»²¾È¤Î¤³¤È¡£ */
998 int (*filter) (MInputContext *ic, MSymbol key, void *arg);
1001 @brief Lookup a produced text in an input context.
1003 It is called from the function minput_lookup () and looks up a
1004 produced text in the input context $IC. This function
1005 concatenate a text produced by the input key $KEY (if any) to
1006 M-text $MT. If $KEY was correctly handled by the input method
1007 of $IC, it returns 0. Otherwise, it returns 1.
1009 The meaning of $ARG depends on the input method driver. See the
1010 documentation of @c minput_default_driver and @c
1011 minput_gui_driver for instance. */
1014 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÇÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È¤Î³ÍÆÀ.
1016 ´Ø¿ô minput_lookup () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC
1017 ¤ÇÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È¤ò¸¡º÷¤¹¤ë¡£ÆþÎÏ¥¡¼ $KEY
1018 ¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È¤¬¤¢¤ì¤Ð¡¢M-text $MT ¤ËÄɲ乤롣 $KEY
1019 ¤¬ÆþÎϥ᥽¥Ã¥É $IC ¤Ë¤è¤Ã¤ÆÀµ¤·¤¯½èÍý¤µ¤ì¤ì¤Ð 0 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 1 ¤òÊÖ¤¹¡£
1021 $ARG ¤Î°ÕÌ£¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë°Í¸¤¹¤ë¡£Îã¤Ï @c
1022 minput_default_driver ¤Þ¤¿¤Ï @c minput_gui_driver ¤ÎÀâÌÀ¤ò»²¾È¤Î
1025 int (*lookup) (MInputContext *ic, MSymbol key, void *arg, MText *mt);
1028 @brief List of callback functions.
1030 List of callback functions. Keys are one of
1031 #Minput_preedit_start, #Minput_preedit_draw,
1032 #Minput_preedit_done, #Minput_status_start, #Minput_status_draw,
1033 #Minput_status_done, #Minput_candidates_start,
1034 #Minput_candidates_draw, #Minput_candidates_done,
1035 #Minput_set_spot, #Minput_toggle, #Minput_reset,
1036 #Minput_get_surrounding_text, #Minput_delete_surrounding_text.
1037 Values are functions of type #MInputCallbackFunc. */
1039 @brief ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î¥ê¥¹¥È.
1041 ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î¥ê¥¹¥È¡£¥¡¼¤Ï¼¡¤Î¤¤¤º¤ì¤«¡£
1042 #Minput_preedit_start, #Minput_preedit_draw,
1043 #Minput_preedit_done, #Minput_status_start, #Minput_status_draw,
1044 #Minput_status_done, #Minput_candidates_start,
1045 #Minput_candidates_draw, #Minput_candidates_done,
1046 #Minput_set_spot, #Minput_toggle, #Minput_reset,
1047 #Minput_get_surrounding_text, #Minput_delete_surrounding_text¡£
1048 ÃͤÏ#MInputCallbackFunc ·¿¤Î´Ø¿ô¡£ */
1049 MPlist *callback_list;
1054 extern MInputDriver minput_default_driver;
1056 extern MSymbol Minput_driver;
1058 extern MInputDriver *minput_driver;
1060 /** Symbols for callback commands. */
1061 extern MSymbol Minput_preedit_start;
1062 extern MSymbol Minput_preedit_draw;
1063 extern MSymbol Minput_preedit_done;
1064 extern MSymbol Minput_status_start;
1065 extern MSymbol Minput_status_draw;
1066 extern MSymbol Minput_status_done;
1067 extern MSymbol Minput_candidates_start;
1068 extern MSymbol Minput_candidates_draw;
1069 extern MSymbol Minput_candidates_done;
1070 extern MSymbol Minput_set_spot;
1071 extern MSymbol Minput_toggle;
1072 extern MSymbol Minput_reset;
1073 extern MSymbol Minput_get_surrounding_text;
1074 extern MSymbol Minput_delete_surrounding_text;
1076 /** Symbols for special input key event. */
1077 extern MSymbol Minput_focus_move;
1078 extern MSymbol Minput_focus_in;
1079 extern MSymbol Minput_focus_out;
1081 /** Symbols describing input method command/variable. */
1082 extern MSymbol Minherited;
1083 extern MSymbol Mcustomized;
1084 extern MSymbol Mconfigured;
1087 @brief Structure of input method.
1089 The type @c MInputMethod is the structure of input method
1092 @brief ÆþÎϥ᥽¥Ã¥É¤Î¹½Â¤ÂÎ.
1094 @c MInputMethod ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¥ª¥Ö¥¸¥§¥¯¥ÈÍѤι½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
1098 /***en Which language this input method is for. The value is @c
1099 Mnil if the input method is foreign. */
1100 /***ja ¤É¤Î¸À¸ìÍѤÎÆþÎϥ᥽¥Ã¥É¤«¡£
1101 ÆþÎϥ᥽¥Ã¥É¤¬³°Éô¤Î¤â¤Î¤Ç¤¢¤ë¾ì¹ç¤ÎÃÍ¤Ï @c Mnil ¡£ */
1104 /***en Name of the input method. If the input method is foreign, it
1105 must has a property of key @c Minput_driver and the value must be a
1106 pointer to a proper input method driver. */
1107 /***ja ÆþÎϥ᥽¥Ã¥É¤Î̾Á°¡£³°Éô¥á¥½¥Ã¥É¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢@c
1108 Minput_driver ¤ò¥¡¼¤È¤¹¤ë¥×¥í¥Ñ¥Æ¥£¤ò»ý¤Á¡¢¤½¤ÎÃͤÏŬÀÚ¤ÊÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£*/
1111 /***en Input method driver of the input method. */
1112 /***ja ¤½¤ÎÆþÎϥ᥽¥Ã¥ÉÍѤÎÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¡£ */
1113 MInputDriver driver;
1115 /***en The argument given to minput_open_im (). */
1116 /***ja minput_open_im () ¤ËÅϤµ¤ì¤ë°ú¿ô¡£ */
1119 /***en Pointer to extra information that <driver>.open_im ()
1121 /***ja <driver>.open_im () ¤¬ÀßÄꤹ¤ëÄɲþðÊó¤Ø¤Î¥Ý¥¤¥ó¥¿¡£ */
1128 @brief Bit-masks to specify how candidates of input method is changed. */
1131 @brief ÆþÎϥ᥽¥Ã¥É¤ÎÆþÎϸõÊ䤬¤É¤¦Êѹ¹¤µ¤ì¤¿¤«¤ò¼¨¤¹¥Ó¥Ã¥È¥Þ¥¹¥¯. */
1133 enum MInputCandidatesChanged
1135 MINPUT_CANDIDATES_LIST_CHANGED = 1,
1136 MINPUT_CANDIDATES_INDEX_CHANGED = 2,
1137 MINPUT_CANDIDATES_SHOW_CHANGED = 4,
1138 MINPUT_CANDIDATES_CHANGED_MAX
1145 @brief Structure of input context.
1147 The type @c MInputContext is the structure of input context
1151 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥ÈÍѹ½Â¤ÂÎ.
1153 @c MInputContext ¤Ï¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¥ª¥Ö¥¸¥§¥¯¥ÈÍѤι½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
1155 struct MInputContext
1157 /***en Backward pointer to the input method. It is set up be the
1158 function minput_create_ic (). */
1159 /***ja ÆþÎϥ᥽¥Ã¥É¤Ø¤ÎµÕ¥Ý¥¤¥ó¥¿¡£´Ø¿ô minput_create_ic ()
1160 ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1163 /***en M-text produced by the input method. It is set up by the
1164 function minput_lookup () . */
1165 /***ja ÆþÎϥ᥽¥Ã¥É¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë M-text¡£´Ø¿ô minput_lookup ()
1166 ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1169 /***en Argument given to the function minput_create_im (). */
1170 /***ja ´Ø¿ô minput_create_ic () ¤ËÅϤµ¤ì¤ë°ú¿ô¡£ */
1173 /***en Flag telling whether the input context is currently active or
1174 inactive. The value is set to 1 (active) when the input context
1175 is created. It is toggled by the function minput_toggle (). */
1176 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬¥¢¥¯¥Æ¥£¥Ö¤«¤É¤¦¤«¤ò¼¨¤¹¥Õ¥é¥°¡£
1177 ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬À¸À®¤µ¤ì¤¿»þÅÀ¤Ç¤ÏÃÍ¤Ï 1 ¡Ê¥¢¥¯¥Æ¥£¥Ö¡Ë¤Ç¤¢¤ê¡¢´Ø¿ô
1178 minput_toggle () ¤Ë¤è¤Ã¤Æ¥È¥°¥ë¤µ¤ì¤ë¡£ */
1181 /***en Spot location and size of the input context. */
1182 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Î¥¹¥Ý¥Ã¥È¤Î°ÌÃÖ¤ÈÂ礤µ. */
1184 /***en X and Y coordinate of the spot. */
1185 /***ja ¥¹¥Ý¥Ã¥È¤Î X, Y ºÂɸ. */
1188 /***en Ascent and descent pixels of the line of the spot. */
1189 /***ja ¥¹¥Ý¥Ã¥È¤Î¥¢¥»¥ó¥È¤È¥Ç¥£¥»¥ó¥È¤Î¥Ô¥¯¥»¥ë¿ô. */
1190 int ascent, descent;
1192 /***en Font size for preedit text in 1/10 point. */
1193 /***ja preedit ¥Æ¥¥¹¥ÈÍѤΥե©¥ó¥È¥µ¥¤¥º (1/10 ¥Ý¥¤¥ó¥Èñ°Ì). */
1196 /***en M-text at the spot, or NULL. */
1197 /***ja ¥¹¥Ý¥Ã¥È¾å¤Î M-text¡¢¤Þ¤¿¤Ï NULL. */
1200 /***en Character position in <mt> at the spot. */
1201 /***ja <mt> ¤Ë¤ª¤±¤ë¥¹¥Ý¥Ã¥È¤Îʸ»ú°ÌÃÖ. */
1205 /***en The usage of the following members depends on the input
1206 method driver. The descriptions below are for the driver of an
1207 internal input method. They are set by the function
1208 <im>->driver.filter (). */
1209 /***ja °Ê²¼¤Î¥á¥ó¥Ð¤Î»ÈÍÑË¡¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë¡£
1210 °Ê²¼¤ÎÀâÌÀ¤Ï¡¢ÆâÉôÆþÎϥ᥽¥Ã¥ÉÍѤÎÆþÎϥɥ饤¥Ð¤ËÂФ¹¤ë¤â¤Î¤Ç¤¢¤ë¡£
1211 ¤³¤ì¤é¤Ï´Ø¿ô <im>->driver.filter () ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1213 /***en Pointer to extra information that <im>->driver.create_ic ()
1214 setups. It is used to record the internal state of the input
1216 /***ja <im>->driver.create_ic () ¤¬ÀßÄꤹ¤ëÄɲþðÊó¤Ø¤Î¥Ý¥¤¥ó¥¿¡£
1217 ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÎÆâÉô¾õÂÖ¤òµÏ¿¤¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£ */
1220 /***en M-text describing the current status of the input
1222 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Î¸½ºß¤Î¾õÂÖ¤òɽ¤¹ M-text */
1225 /***en The function <im>->driver.filter () sets the value to 1 when
1226 it changes <status>. */
1227 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢<status> ¤òÊѤ¨¤¿ºÝ¤Ë¤³¤ÎÃͤò 1
1231 /***en M-text containing the current preedit text. The function
1232 <im>->driver.filter () sets the value. */
1233 /***ja ¸½ºß¤Î preedit ¥Æ¥¥¹¥È¤ò´Þ¤à M-text¡£´Ø¿ô
1234 <im>->driver.filter () ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1237 /***en The function <im>->driver.filter () sets the value to 1 when
1238 it changes <preedit>. */
1239 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢<preedit> ¤òÊѤ¨¤¿ºÝ¤Ë¤³¤ÎÃͤò
1241 int preedit_changed;
1243 /***en Cursor position of <preedit>. */
1244 /***ja <preedit>¤Î¥«¡¼¥½¥ë°ÌÃÖ */
1247 /***en The function <im>->driver.filter () sets the value to 1 when
1248 it changes <cursor_pos>. */
1249 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢<cursor_pos> ¤òÊѤ¨¤¿ºÝ¤Ë¤³¤ÎÃͤò
1251 int cursor_pos_changed;
1253 /***en Plist of the current candidate groups. Each element is an
1254 M-text or a plist. If an element is an M-text (i.e. the key is Mtext),
1255 candidates in that group are characters in the M-text. If it is
1256 a plist (i.e. the key is Mplist), each element is an M-text, and
1257 candidates in that group are those M-texts. */
1258 /***ja ¸½ºß¤Î¸õÊ䥰¥ë¡¼¥×¤Î Plist ¡£³ÆÍ×ÁÇ¤Ï M-text ¤« plist ¤Ç¤¢¤ë¡£
1259 Í×ÁǤ¬ M-text ¤Î¾ì¹ç¡Ê¥¡¼¤¬ Mtext ¤Ç¤¢¤ë¾ì¹ç¡Ë¤Ë¤Ï¡¢¤½¤Î¥°¥ë¡¼¥×¤Î¸õÊä¤Ï¤½¤Î
1260 M-text Ãæ¤Î³Æʸ»ú¤Ç¤¢¤ë¡£ Í×ÁǤ¬ plist ¤Î¾ì¹ç¡Ê¥¡¼¤¬ Mplist
1261 ¤Ç¤¢¤ë¾ì¹ç¡Ë¤Ë¤Ï¡¢¤½¤Î¥ê¥¹¥È¤Î³ÆÍ×ÁÇ¤Ï M-text ¤Ç¤¢¤ê¡¢¤½¤ì¤é¤¬¤½¤Î¥°¥ë¡¼¥×¤Î¸õÊä¤È¤Ê¤ë¡£ */
1262 MPlist *candidate_list;
1264 /***en Index number of the currently selected candidate in all the
1265 candidates. The index of the first candidate is 0. If the
1266 number is 8, and the first candidate group contains 7
1267 candidates, the currently selected candidate is the second element of the
1268 second candidate group. */
1269 /***ja ¸½ºßÁªÂò¤µ¤ì¤Æ¤¤¤ë¸õÊ䤬Á´¸õÊäÃæ¤Ç²¿ÈÖÌܤ«¤ò¤ò¼¨¤¹¥¤¥ó¥Ç¥Ã¥¯¥¹¡£
1270 ºÇ½é¤Î¸õÊä¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï 0¡£ºÇ½é¤Î¸õÊ䥰¥ë¡¼¥×¤Ë¼·¤Ä¤Î¸õÊ䤬´Þ¤Þ¤ì¤Æ¤ª¤ê¡¢¤³¤ÎÃͤ¬
1271 8 ¤Ê¤é¤Ð¡¢¸½ºß¤Î¸õÊä¤ÏÆóÈÖÌܤθõÊ䥰¥ë¡¼¥×¤ÎÆóÈÖÌܤÎÍ×ÁǤȤ¤¤¦¤³¤È¤Ë¤Ê¤ë¡£
1273 int candidate_index;
1275 /***en Start and the end positions of the preedit text where
1276 <candidate_list> corresponds to. */
1277 /***ja preedit ¥Æ¥¥¹¥ÈÃæ¤Ç¡¢<candidate_list>¤ËÂбþ¤¹¤ëºÇ½é¤ÈºÇ¸å¤Î°ÌÃÖ¡£
1279 int candidate_from, candidate_to;
1281 /***en Flag telling whether the current candidate group must be
1282 shown or not. The function <im>->driver.filter () sets the
1283 value to 1 when an input method required to show candidates, and
1284 sets the value to 0 otherwise. */
1285 /***ja ¸½ºß¤Î¸õÊ䥰¥ë¡¼¥×¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«¤ò¼¨¤¹¥Õ¥é¥°¡£
1286 ´Ø¿ô <im>->driver.filter () ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¤¬¸õÊä¤Îɽ¼¨¤òÍ׵ᤷ¤¿»þ¤³¤ÎÃͤò
1287 1 ¤Ë¡¢¤½¤ì°Ê³°¤Î»þ 0 ¤ËÀßÄꤹ¤ë¡£ */
1290 /***en The function <im>->driver.filter () sets the value to bitwise
1291 OR of @c enum @c MInputCandidatesChanged when it changed any of
1292 the above members (<candidate_XXX>), and sets the value to 0
1294 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢¾åµ¤Î¥á¥ó¥Ð <candidate_XXX>
1295 ¤Î£±¤Ä¤Ç¤âÊѹ¹¤·¤¿ºÝ¤Ë¤Ï¡¢¤³¤ÎÃͤò @c enum @c
1296 MInputCandidatesChanged ¤Î¥Ó¥Ã¥Èñ°Ì¤Ç¤ÎÏÀÍý OR ¤ËÀßÄꤹ¤ë¡£¤½¤¦
1297 ¤Ç¤Ê¤±¤ì¤Ð 0 ¤ËÀßÄꤹ¤ë¡£ */
1298 int candidates_changed;
1300 /***en Plist that can be freely used by <im>->driver functions.
1301 The driver of internal input method uses it to exchange extra
1302 arguments and result for callback functions. The function
1303 <im>->driver.create_ic () sets this to an empty plist, and the
1304 function <im>->driver.destroy_ic () frees it by using
1305 m17n_object_unref (). */
1306 /***ja <im>->driver ¤Î´Ø¿ô·²¤Ë¤è¤Ã¤Æ¼«Í³¤Ë»ÈÍѤǤ¤ë plist¡£
1307 ÆâÉôÆþÎϥ᥽¥Ã¥ÉÍѥɥ饤¥Ð¤Ï¤³¤ì¤ò¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤È¤Î°ú¿ô¤äÊÖÃÍ
1308 ¤Î¼õÅϤ·¤Ë»ÈÍѤ¹¤ë¡£´Ø¿ô <im>->driver.create_ic () ¤Ï¤³¤Î plist
1309 ¤ò¶õ¤ËÀßÄꤹ¤ë¡£´Ø¿ô<im>->driver.destroy_ic () ¤Ï
1310 m17n_object_unref () ¤òÍѤ¤¤Æ¤³¤Î plist ¤ò²òÊü¤¹¤ë¡£ */
1316 extern MInputMethod *minput_open_im (MSymbol language, MSymbol name,
1321 extern void minput_close_im (MInputMethod *im);
1323 extern MInputContext *minput_create_ic (MInputMethod *im, void *arg);
1325 extern void minput_destroy_ic (MInputContext *ic);
1327 extern int minput_filter (MInputContext *ic, MSymbol key, void *arg);
1329 extern int minput_lookup (MInputContext *ic, MSymbol key, void *arg,
1331 extern void minput_set_spot (MInputContext *ic, int x, int y, int ascent,
1332 int descent, int fontsize, MText *mt, int pos);
1333 extern void minput_toggle (MInputContext *ic);
1335 extern void minput_reset_ic (MInputContext *ic);
1337 extern MText *minput_get_description (MSymbol language, MSymbol name);
1339 extern MPlist *minput_get_title_icon (MSymbol language, MSymbol name);
1341 extern MPlist *minput_get_command (MSymbol language, MSymbol name,
1343 extern int minput_config_command (MSymbol language, MSymbol name,
1344 MSymbol command, MPlist *keyseq);
1345 extern MPlist *minput_get_variable (MSymbol language, MSymbol name,
1347 extern int minput_config_variable (MSymbol language, MSymbol name,
1348 MSymbol variable, MPlist *value);
1349 extern char *minput_config_file (void);
1351 extern int minput_save_config (void);
1353 extern int minput_callback (MInputContext *ic, MSymbol command);
1355 /* obsolete functions */
1356 extern MPlist *minput_get_commands (MSymbol language, MSymbol name);
1358 extern int minput_assign_command_keys (MSymbol language, MSymbol name,
1359 MSymbol command, MPlist *keys);
1360 extern MPlist *minput_get_variables (MSymbol language, MSymbol name);
1362 extern int minput_set_variable (MSymbol language, MSymbol name,
1363 MSymbol variable, void *value);
1367 extern MInputMethod *mdebug_dump_im (MInputMethod *im, int indent);
1372 #endif /* _M17N_H_ */