1 /* m17n.h -- header file for the SHELL API of the m17n library.
2 Copyright (C) 2003, 2004
3 National Institute of Advanced Industrial Science and Technology (AIST)
4 Registration Number H15PRO112
6 This file is part of the m17n library.
8 The m17n library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Lesser General Public License
10 as published by the Free Software Foundation; either version 2.1 of
11 the License, or (at your option) any later version.
13 The m17n library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
18 You should have received a copy of the GNU Lesser General Public
19 License along with the m17n library; if not, write to the Free
20 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
31 #include <m17n-core.h>
39 extern void m17n_init (void);
41 #define M17N_INIT() m17n_init ()
43 extern void m17n_fini (void);
45 #define M17N_FINI() m17n_fini ()
47 /***en @defgroup m17nShell SHELL API */
48 /***ja @defgroup m17nShell ¥·¥§¥ë API */
52 * (11) Functions related to the m17n database
56 /*** @ingroup m17nShell */
57 /***en @defgroup m17nDatabase Database */
58 /***ja @defgroup m17nDatabase ¥Ç¡¼¥¿¥Ù¡¼¥¹ */
61 /* Directory of an application specific databases. */
62 extern char *mdatabase_dir;
65 @ingroup m17nDatabase */
67 @brief Type of database.
69 The type #MDatabase is for a database object. Its internal
70 structure is concealed from an application program. */
72 @brief ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î·¿Àë¸À.
74 #MDatabase ·¿¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¥ª¥Ö¥¸¥§¥¯¥ÈÍѤι½Â¤ÂΤǤ¢¤ë¡£ÆâÉô¹½Â¤
75 ¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£
78 typedef struct MDatabase MDatabase;
82 /* Look for a data. */
83 extern MDatabase *mdatabase_find (MSymbol tag1, MSymbol tag2,
84 MSymbol tag3, MSymbol tag4);
86 extern MPlist *mdatabase_list (MSymbol tag0, MSymbol tag1,
87 MSymbol tag2, MSymbol tag3);
90 void *mdatabase_load (MDatabase *mdb);
92 /* Get tags of a data. */
93 extern MSymbol *mdatabase_tag (MDatabase *mdb);
96 extern MDatabase *mdatabase_define (MSymbol tag1, MSymbol tag2,
97 MSymbol tag3, MSymbol tag4,
98 void *(*loader) (MSymbol *, void *),
102 /* (S2) Charset staffs */
105 /*** @ingroup m17nShell */
106 /***en @defgroup m17nCharset Charset */
107 /***ja @defgroup m17nCharset ʸ»ú¥»¥Ã¥È */
109 #define MCHAR_INVALID_CODE 0xFFFFFFFF
111 /* Predefined charsets */
112 extern MSymbol Mcharset_ascii;
113 extern MSymbol Mcharset_iso_8859_1;
114 extern MSymbol Mcharset_unicode;
115 extern MSymbol Mcharset_m17n;
116 extern MSymbol Mcharset_binary;
118 /* Predefined keys for mchar_define_charset (). */
119 extern MSymbol Mmethod;
120 extern MSymbol Mdimension;
121 extern MSymbol Mmin_range;
122 extern MSymbol Mmax_range;
123 extern MSymbol Mmin_code;
124 extern MSymbol Mmax_code;
125 extern MSymbol Mascii_compatible;
126 extern MSymbol Mfinal_byte;
127 extern MSymbol Mrevision;
128 extern MSymbol Mmin_char;
129 extern MSymbol Mmapfile;
130 extern MSymbol Mparents;
131 extern MSymbol Msubset_offset;
132 extern MSymbol Mdefine_coding;
133 extern MSymbol Maliases;
135 /* Methods of a charset. */
136 extern MSymbol Moffset;
138 extern MSymbol Munify;
139 extern MSymbol Msubset;
140 extern MSymbol Msuperset;
143 extern MSymbol Mcharset;
145 extern MSymbol mchar_define_charset (const char *name, MPlist *plist);
147 extern MSymbol mchar_resolve_charset (MSymbol symbol);
149 extern int mchar_list_charset (MSymbol **symbols);
151 extern int mchar_decode (MSymbol charset_name, unsigned code);
153 extern unsigned mchar_encode (MSymbol charset_name, int c);
155 extern int mchar_map_charset (MSymbol charset_name,
156 void (*func) (int from, int to, void *arg),
161 /* (S3) code conversion */
163 /*** @ingroup m17nShell */
164 /***en @defgroup m17nConv Code Conversion */
165 /***ja @defgroup m17nConv ¥³¡¼¥ÉÊÑ´¹ */
168 /* Predefined coding systems */
169 extern MSymbol Mcoding_us_ascii;
170 extern MSymbol Mcoding_iso_8859_1;
171 extern MSymbol Mcoding_utf_8;
172 extern MSymbol Mcoding_utf_8_full;
173 extern MSymbol Mcoding_utf_16;
174 extern MSymbol Mcoding_utf_16be;
175 extern MSymbol Mcoding_utf_16le;
176 extern MSymbol Mcoding_utf_32;
177 extern MSymbol Mcoding_utf_32be;
178 extern MSymbol Mcoding_utf_32le;
179 extern MSymbol Mcoding_sjis;
181 /* Parameter keys for mconv_define_coding (). */
182 extern MSymbol Mtype;
183 extern MSymbol Mcharsets;
184 extern MSymbol Mflags;
185 extern MSymbol Mdesignation;
186 extern MSymbol Minvocation;
187 extern MSymbol Mcode_unit;
189 extern MSymbol Mlittle_endian;
191 /* Symbols representing coding system type. */
193 extern MSymbol Miso_2022;
195 /* Symbols appearing in the value of Mfrag parameter. */
196 extern MSymbol Mreset_at_eol;
197 extern MSymbol Mreset_at_cntl;
198 extern MSymbol Meight_bit;
199 extern MSymbol Mlong_form;
200 extern MSymbol Mdesignation_g0;
201 extern MSymbol Mdesignation_g1;
202 extern MSymbol Mdesignation_ctext;
203 extern MSymbol Mdesignation_ctext_ext;
204 extern MSymbol Mlocking_shift;
205 extern MSymbol Msingle_shift;
206 extern MSymbol Msingle_shift_7;
207 extern MSymbol Meuc_tw_shift;
208 extern MSymbol Miso_6429;
209 extern MSymbol Mrevision_number;
210 extern MSymbol Mfull_support;
213 extern MSymbol Mcoding;
214 extern MSymbol Mmaybe;
216 /*** @ingroup m17nConv */
218 @brief Codes that represent the result of code conversion.
220 One of these values is set in @c MConverter-\>result. */
223 @brief ¥³¡¼¥ÉÊÑ´¹¤Î·ë²Ì¤ò¼¨¤¹¥³¡¼¥É.
225 ¤³¤ì¤é¤ÎÃͤΤ¦¤Á°ì¤Ä¤¬ @c MConverter-\>result ¤ËÀßÄꤵ¤ì¤ë¡£ */
227 enum MConversionResult
229 /***en Code conversion is successful. */
230 /***ja ¥³¡¼¥ÉÊÑ´¹¤ÏÀ®¸ù. */
231 MCONVERSION_RESULT_SUCCESS,
233 /***en On decoding, the source contains an invalid byte. */
234 /***ja ¥Ç¥³¡¼¥É»þ¡¢¥½¡¼¥¹¤ËÉÔÀµ¤Ê¥Ð¥¤¥È¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë. */
235 MCONVERSION_RESULT_INVALID_BYTE,
237 /***en On encoding, the source contains a character that cannot be
238 encoded by the specified coding system. */
239 /***ja ¥¨¥ó¥³¡¼¥É»þ¡¢»ØÄê¤Î¥³¡¼¥É·Ï¤Ç¥¨¥ó¥³¡¼¥É¤Ç¤¤Ê¤¤Ê¸»ú¤¬¥½¡¼
241 MCONVERSION_RESULT_INVALID_CHAR,
243 /***en On decoding, the source ends with an incomplete byte sequence. */
244 /***ja ¥Ç¥³¡¼¥É»þ¡¢ÉÔ´°Á´¤Ê¥Ð¥¤¥ÈÎó¤Ç¥½¡¼¥¹¤¬½ª¤ï¤Ã¤Æ¤¤¤ë¡£*/
245 MCONVERSION_RESULT_INSUFFICIENT_SRC,
247 /***en On encoding, the destination is too short to store the result. */
248 /***ja ¥¨¥ó¥³¡¼¥É»þ¡¢·ë²Ì¤ò³ÊǼ¤¹¤ëÎΰ褬û¤«¤¹¤®¤ë¡£ */
249 MCONVERSION_RESULT_INSUFFICIENT_DST,
251 /***en An I/O error occurred in the conversion. */
252 /***ja ¥³¡¼¥ÉÊÑ´¹Ãæ¤Ë I/O ¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¡£ */
253 MCONVERSION_RESULT_IO_ERROR
257 /*** @ingroup m17nConv */
259 @brief Structure to be used in code conversion.
261 Structure to be used in code conversion. The first three members
262 are to control the conversion. */
265 @brief ¥³¡¼¥ÉÊÑ´¹¤ËÍѤ¤¤é¤ì¤ë¹½Â¤ÂÎ.
267 ¥³¡¼¥ÉÊÑ´¹¤ËÍѤ¤¤é¤ì¤ë¹½Â¤ÂΡ£ºÇ½é¤Î£³¤Ä¤Î¥á¥ó¥Ð¤ÏÊÑ´¹¤òÀ©¸æ¤¹¤ë¡£
269 @latexonly \IPAlabel{MConverter} @endlatexonly
275 Set the value to nonzero if the conversion should be lenient.
276 By default, the conversion is strict (i.e. not lenient).
278 If the conversion is strict, the converter stops at the first
279 invalid byte (on decoding) or at the first character not
280 supported by the coding system (on encoding). If this happens,
281 @c MConverter-\>result is set to @c
282 MCONVERSION_RESULT_INVALID_BYTE or @c
283 MCONVERSION_RESULT_INVALID_CHAR accordingly.
285 If the conversion is lenient, on decoding, an invalid byte is
286 kept per se, and on encoding, an invalid character is replaced
287 with "<U+XXXX>" (if the character is a Unicode character) or
288 with "<M+XXXXXX>" (otherwise). */
291 ¸·Ì©¤ÊÊÑ´¹¤¬É¬ÍפǤʤ¤¾ì¹ç¤ËÃͤò 0 °Ê³°¤Ë¤¹¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢
294 ÊÑ´¹¤¬¸·Ì©¤È¤Ï¡¢¥Ç¥³¡¼¥É¤ÎºÝ¤Ë¤ÏºÇ½é¤ÎÉÔÀµ¤Ê¥Ð¥¤¥È¤Ç¥³¥ó¥Ð¡¼¥¿
295 ¤¬»ß¤Þ¤ë¤³¤È¡¢¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤ÏÊÑ´¹¤µ¤ì¤ë¥³¡¼¥É·Ï¤Ç¥µ¥Ý¡¼¥È¤µ
296 ¤ì¤Ê¤¤ºÇ½é¤Îʸ»ú¤Ç¥³¥ó¥Ð¡¼¥¿¤¬»ß¤Þ¤ë¤³¤È¤ò»Ø¤¹¡£¤³¤ì¤é¤Î¾ì¹ç¡¢
297 @c MConverter-\>result ¤Ï¤½¤ì¤¾¤ì @c
298 MCONVERSION_RESULT_INVALID_BYTE ¤«@c
299 MCONVERSION_RESULT_INVALID_CHAR ¤È¤Ê¤ë¡£
301 ÊÑ´¹¤¬¸·Ì©¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¥Ç¥³¡¼¥É¤ÎºÝ¤ÎÉÔÀµ¤Ê¥Ð¥¤¥È¤Ï¤½¤Î¥Ð¥¤¥È
302 ¤Î¤Þ¤Þ»Ä¤ë¡£¤Þ¤¿¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï¡¢ÉÔÀµ¤Êʸ»ú¤Ï Unicode ʸ»ú¤Î
303 ¾ì¹ç¤Ë¤Ï "<U+XXXX>" ¤Ë¡¢¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï "<M+XXXXXX>" ¤ËÃÖ¤´¹
309 Set the value to nonzero before decoding or encoding the last
310 block of the byte sequence or the character sequence
311 respectively. The value influences the conversion as below.
313 On decoding, in the case that the last few bytes are too short
314 to form a valid byte sequence:
316 If the value is nonzero, the conversion terminates by error
317 (MCONVERSION_RESULT_INVALID_BYTE) at the first byte of the
320 If the value is zero, the conversion terminates successfully.
321 Those bytes are stored in the converter as carryover and are
322 prepended to the byte sequence of the further conversion.
324 On encoding, in the case that the coding system is context
327 If the value is nonzero, the conversion may produce a byte
328 sequence at the end to reset the context to the initial state
329 even if the source characters are zero.
331 If the value is zero, the conversion never produce such a byte
332 sequence at the end. */
336 ¥Ð¥¤¥ÈÎó¤Î½ªÃ¼¤Î¥Ö¥í¥Ã¥¯¤ò¥Ç¥³¡¼¥É¤¹¤ëºÝ¡¢¤Þ¤¿¤Ïʸ»úÎó¤Î½ªÃ¼¤Î¥Ö
337 ¥í¥Ã¥¯¤ò¥¨¥ó¥³¡¼¥É¤¹¤ëºÝ¤Ï¡¢Ãͤò 0 °Ê³°¤Ë¤¹¤ë¡£¤³¤ÎÃͤϰʲ¼¤Î¤è¤¦
340 ¥Ç¥³¡¼¥Ç¥£¥ó¥°¤ÎºÝ¤ËºÇ¸å¤Î¿ô¥Ð¥¤¥È¤¬Àµ¤·¤¤¥Ð¥¤¥È¥·¡¼¥¯¥¨¥ó¥¹¤ò·Á
341 À®¤¹¤ë¤Ë¤Ïû¤¹¤®¤ë¾ì¹ç¡§
343 Ãͤ¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÊÑ´¹¤Ï¤½¤Î¥·¡¼¥¯¥¨¥ó¥¹¤ÎºÇ½é¤Î¥Ð¥¤¥È¤Ë¤ª¤¤¤Æ¡¢
344 ¥¨¥é¡¼ (MCONVERSION_RESULT_INVALID_BYTE) ¤Ç½ª¤ë¡£
346 Ãͤ¬ 0 ¤Ê¤é¤Ð¡¢ÊÑ´¹¤ÏÀ®¸ù¤·¤Æ½ª¤ë¡£ÌäÂê¤Î¿ô¥Ð¥¤¥È¤Ï¥¥ã¥ê¡¼¥ª¡¼
347 ¥Ð¤È¤·¤Æ¥³¥ó¥Ð¡¼¥¿¤ËÊÝ»ý¤µ¤ì¡¢Â³¤¤ÎÊÑ´¹¤ò¹Ô¤¦ºÝ¤ËÊÑ´¹¤¹¤ë¥Ð¥¤
348 ¥ÈÎó¤ÎÁ°¤ËÉÕ¤±¤é¤ì¤ë¡£
350 ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎºÝ¤Ë¥³¡¼¥É·Ï¤¬Ê¸Ì®°Í¸¤Î¾ì¹ç¡¢
352 Ãͤ¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥³¥ó¥Æ¥¥¹¥È¤òºÇ½é¤ËÌ᤹¤¿¤á¤Î¥Ð¥¤¥ÈÎ󤬥½¡¼
353 ¥¹¤Îʸ»ú¤È¤«¤«¤ï¤ê¤Ê¤¯ÊÑ´¹¤Î·ë²ÌÀ¸À®¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¡£
355 Ãͤ¬ 0 ¤Ê¤é¤Ð¡¢¤½¤Î¤è¤¦¤Ê¥Ð¥¤¥ÈÎó¤ÏÀ¸À®¤µ¤ì¤Ê¤¤¡£
362 If the value is nonzero, it specifies at most how many
363 characters to convert. */
365 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÊÑ´¹¤µ¤ì¤ëºÇÂç¤Îʸ»ú¿ô¤ò»ØÄꤹ¤ë¡£
371 The following three members are to report the result of the
374 °Ê²¼¤Î£³¤Ä¤Î¥á¥ó¥Ð¤ÏÊÑ´¹¤Î·ë²Ì¤òÊó¹ð¤¹¤ë¡£ */
377 Number of characters most recently decoded or encoded. */
379 ºÇ¶á¤Ë¥Ç¥³¡¼¥É/¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿Ê¸»ú¿ô¡£ */
384 Number of bytes recently decoded or encoded. */
387 ºÇ¶á¤Ë¥Ç¥³¡¼¥É/¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿¥Ð¥¤¥È¿ô¡£ */
392 Result code of the conversion. */
395 ¥³¡¼¥ÉÊÑ´¹¤Î·ë²Ì¤ò¼¨¤¹¥³¡¼¥É¡£ */
397 enum MConversionResult result;
400 Various information about the status of code conversion. The
401 contents depend on the type of coding system. It is assured
402 that @c status is aligned so that any type of casting is safe
403 and at least 256 bytes of memory space can be used. */
406 ¥³¡¼¥ÉÊÑ´¹¤Î¾õ¶·¤Ë´Ø¤¹¤ë¼ï¡¹¤Î¾ðÊó¡£ÆâÍƤϥ³¡¼¥É·Ï¤Î¥¿¥¤¥×¤Ë¤è¤Ã
407 ¤Æ°Û¤Ê¤ë¡£@c status ¤Ï¤É¤Î¤è¤¦¤Ê·¿¤Ø¤Î¥¥ã¥¹¥È¤ËÂФ·¤Æ¤â°ÂÁ´¤Ê¤è
408 ¤¦¤Ë¥á¥â¥ê¥¢¥é¥¤¥ó¤µ¤ì¤Æ¤ª¤ê¡¢¤Þ¤¿ºÇÄã256¥Ð¥¤¥È¤Î¥á¥â¥êÎΰ褬»È
409 ¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ */
418 This member is for internally use only. An application program
419 should never touch it. */
420 /***ja ¤³¤Î¥á¥ó¥Ð¤ÏÆâÉôŪ¤Ë»ÈÍѤµ¤ì¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¿¨
426 /*** @ingroup m17nConv */
428 @brief Types of coding system. */
430 @brief ¥³¡¼¥É·Ï¤Î¥¿¥¤¥×. */
435 A coding system of this type supports charsets directly.
436 The dimension of each charset defines the length of bytes to
437 represent a single character of the charset, and a byte
438 sequence directly represents the code-point of a character.
440 The m17n library provides the default decoding and encoding
441 routines of this type. */
444 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ïʸ»ú¥»¥Ã¥È¤òľÀÜ¥µ¥Ý¡¼¥È¤¹¤ë¡£³Æʸ»ú¥»¥Ã
445 ¥È¤Î¼¡¸µ¤È¤Ï¡¢¤½¤Îʸ»ú¥»¥Ã¥È¤Ç°ìʸ»ú¤òɽ¸½¤¹¤ë¤¿¤á¤ËɬÍפʥХ¤
446 ¥È¿ô¤Ç¤¢¤ê¡¢¥Ð¥¤¥ÈÎó¤Ïʸ»ú¤Î¥³¡¼¥É¥Ý¥¤¥ó¥È¤òľÀÜɽ¤ï¤¹¡£
448 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼
449 ¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
451 MCODING_TYPE_CHARSET,
454 A coding system of this type supports byte sequences of a
455 UTF (UTF-8, UTF-16, UTF-32) like structure.
457 The m17n library provides the default decoding and encoding
458 routines of this type. */
461 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢UTF ·Ï (UTF-8, UTF-16, UTF-32) ¤Î¥Ð¥¤
464 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼
465 ¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
470 A coding system of this type supports byte sequences of an
471 ISO-2022 like structure. The details of each structure are
472 specified by @c MCodingInfoISO2022 .
474 The m17n library provides decoding and encoding routines of
478 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢ISO-2022 ·Ï¤Î¥Ð¥¤¥ÈÎó¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£
479 ³Æ¥³¡¼¥É·Ï¤Î¹½Â¤¤Î¾ÜºÙ¤Ï @c MCodingInfoISO2022 ¤Ç»ØÄꤵ¤ì¤ë¡£
481 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥǥե©¥ë¥È¤Î¥¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼
482 ¥É¥ë¡¼¥Æ¥£¥ó¤òÄ󶡤¹¤ë¡£ */
484 MCODING_TYPE_ISO_2022,
487 A coding system of this type is for byte sequences of
488 miscellaneous structures.
490 The m17n library does not provide decoding and encoding
491 routines of this type. They must be provided by the
492 application program. */
495 ¤³¤Î¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Ï¡¢¤½¤Î¾¤Î¹½Â¤¤Î¥Ð¥¤¥ÈÎó¤Î¤¿¤á¤Î¤â¤Î¤Ç¤¢
498 m17n ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¥¿¥¤¥×ÍѤΥ¨¥ó¥³¡¼¥É¡¿¥Ç¥³¡¼¥É¥ë¡¼¥Æ¥£¥ó
499 ¤òÄ󶡤·¤Ê¤¤¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¦¤Ç½àÈ÷¤¹
506 /*** @ingroup m17nConv */
508 @brief Bit-masks to specify the detail of coding system whose type is MCODING_TYPE_ISO_2022. */
510 @brief MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤Î¾ÜºÙ¤òɽ¤ï¤¹¥Ó¥Ã¥È¥Þ¥¹¥¯. */
512 enum MCodingFlagISO2022
515 On encoding, reset the invocation and designation status to
516 initial at end of line. */
517 /***ja ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢¹ÔËö¤Ç¸Æ¤Ó½Ð¤· (invocation) ¤È»Ø¼¨
518 (designation) ¤Î¾õÂÖ¤ò½é´üÃͤËÌ᤹¡£ */
519 MCODING_ISO_RESET_AT_EOL = 0x1,
522 On encoding, reset the invocation and designation status to
523 initial before any control codes. */
525 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢¤¹¤Ù¤Æ¤ÎÀ©¸æʸ»ú¤ÎÁ°¤Ç¡¢¸Æ¤Ó½Ð¤·
526 (invocation) ¤È»Ø¼¨ (designation) ¤Î¾õÂÖ¤ò½é´üÃͤËÌ᤹¡£ */
527 MCODING_ISO_RESET_AT_CNTL = 0x2,
530 Use the right graphic plane. */
532 ¿Þ·Áʸ»ú½¸¹ç¤Î±¦Â¦¤ò»È¤¦¡£ */
533 MCODING_ISO_EIGHT_BIT = 0x4,
536 Use the non-standard 4 bytes format for designation sequence
537 for charsets JISX0208.1978, GB2312, and JISX0208.1983. */
539 JISX0208.1978, GB2312, JISX0208.1983 ¤Îʸ»ú½¸¹ç¤ËÂФ¹¤ë»Ø¼¨¥·¡¼
540 ¥¯¥¨¥ó¥¹¤È¤·¤Æ¡¢Èóɸ½à¤Î4¥Ð¥¤¥È·Á¼°¤òÍѤ¤¤ë¡£ */
542 MCODING_ISO_LONG_FORM = 0x8,
545 On encoding, unless explicitly specified, designate charsets
548 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢Ê¸»ú½¸¹ç¤ò G0 ¤Ë»Ø¼¨
550 MCODING_ISO_DESIGNATION_G0 = 0x10,
553 On encoding, unless explicitly specified, designate charsets
554 except for ASCII to G1. */
556 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢ASCII °Ê³°¤Îʸ»ú½¸¹ç¤ò G1
558 MCODING_ISO_DESIGNATION_G1 = 0x20,
561 On encoding, unless explicitly specified, designate 94-chars
562 charsets to G0, 96-chars charsets to G1. */
564 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Æä˻ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢94ʸ»ú½¸¹ç¤ò G0
565 ¤Ë¡¢96ʸ»ú½¸¹ç¤ò G1 ¤Ë»Ø¼¨¤¹¤ë¡£*/
566 MCODING_ISO_DESIGNATION_CTEXT = 0x40,
569 On encoding, encode such charsets not conforming to ISO-2022
570 by ESC % / ..., and encode non-supported Unicode characters by
571 ESC % G ... ESC % @@ . On decoding, handle those escape
574 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢ISO-2022 ¤Ë¹çÃפ·¤Ê¤¤Ê¸»ú½¸¹ç¤ò ESC % / ... ¤Ç¥¨
575 ¥ó¥³¡¼¥É¤¹¤ë¡£¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ Unicode ʸ»ú¤Ï ESC % G ...
576 ESC % @@ ¤Ç¥¨¥ó¥³¡¼¥É¤¹¤ë¡£
577 ¥Ç¥³¡¼¥É¤ÎºÝ¡¢¤³¤ì¤é¤Î¥¨¥¹¥±¡¼¥×¡¦¥·¡¼¥±¥ó¥¹¤ò²ò¼á¤¹¤ë¡£ */
578 MCODING_ISO_DESIGNATION_CTEXT_EXT = 0x80,
581 Use locking shift. */
583 ¥í¥Ã¥¥ó¥°¥·¥Õ¥È¤ò»È¤¦¡£ */
584 MCODING_ISO_LOCKING_SHIFT = 0x100,
587 Use single shift (SS2 (0x8E or ESC N), SS3 (0x8F or ESC O)). */
589 ¥·¥ó¥°¥ë¥·¥Õ¥È (SS2 (0x8E or ESC N), SS3 (0x8F or ESC O)) ¤ò»È¤¦¡£ */
590 MCODING_ISO_SINGLE_SHIFT = 0x200,
593 Use 7-bit single shift 2 (SS2 (0x19)). */
595 7¥Ó¥Ã¥È¥·¥ó¥°¥ë¥·¥Õ¥È 2 (SS2 (0x19)) ¤ò»È¤¦¡£ */
596 MCODING_ISO_SINGLE_SHIFT_7 = 0x400,
599 Use EUC-TW like special shifting. */
601 EUC-TW É÷¤ÎÆÃÊ̤ʥ·¥Õ¥È¤ò»È¤¦¡£ */
602 MCODING_ISO_EUC_TW_SHIFT = 0x800,
605 Use ISO-6429 escape sequences to indicate direction.
606 Not yet implemented. */
608 ISO-6429 ¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥¯¥¨¥ó¥¹¤ÇÊý¸þ¤ò»Ø¼¨¤¹¤ë¡£Ì¤¼ÂÁõ¡£ */
609 MCODING_ISO_ISO6429 = 0x1000,
612 On encoding, if a charset has revision number, produce escape
613 sequences to specify the number. */
615 ¥¨¥ó¥³¡¼¥É¤ÎºÝ¡¢Ê¸»ú¥»¥Ã¥È¤Ë revision number ¤¬¤¢¤ì¤Ð¤½
616 ¤ì¤òɽ¤ï¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥¯¥¨¥ó¥¹¤òÀ¸À®¤¹¤ë¡£ */
617 MCODING_ISO_REVISION_NUMBER = 0x2000,
620 Support all ISO-2022 charsets. */
622 ISO-2022 ¤ÎÁ´Ê¸»ú½¸¹ç¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£ */
623 MCODING_ISO_FULL_SUPPORT = 0x3000,
629 /*** @ingroup m17nConv */
631 @brief Structure for a coding system of type #MCODING_TYPE_ISO_2022.
633 Structure for extra information about a coding system of type
634 MCODING_TYPE_ISO_2022. */
637 @brief #MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѹ½Â¤ÂÎ.
639 MCODING_TYPE_ISO_2022 ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѤòÊÝ»ý¤¹¤ë
642 @latexonly \IPAlabel{MCodingInfoISO2022} @endlatexonly */
647 Table of numbers of an ISO2022 code extension element invoked
648 to each graphic plane (Graphic Left and Graphic Right). -1
649 means no code extension element is invoked to that plane. */
652 ³Æ¿Þ·Áʸ»úÎΰè (Graphic Left ¤È Graphic Right) ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤
653 ¤ë¡¢ISO2022 Éä¹ç³ÈÄ¥Í×ÁǤÎÈÖ¹æ¤Î¥Æ¡¼¥Ö¥ë¡£-1 ¤Ï¤½¤ÎÎΰè¤Ë¤É¤ÎÉä
654 ¹ç³ÈÄ¥Í×ÁǤâ¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò¼¨¤¹¡£ */
656 int initial_invocation[2];
659 Table of code extension elements. The Nth element corresponds
660 to the Nth charset in $CHARSET_NAMES, which is an argument given
661 to the mconv_define_coding () function.
663 If an element value is 0..3, it specifies a graphic register
664 number to designate the corresponds charset. In addition, the
665 charset is initially designated to that graphic register.
667 If the value is -4..-1, it specifies a graphic register number
668 0..3 respectively to designate the corresponds charset.
669 Initially, the charset is not designated to any graphic
673 Éä¹ç³ÈÄ¥Í×ÁǤΥơ¼¥Ö¥ë¡£NÈÖÌܤÎÍ×ÁǤϡ¢$CHARSET_NAMES ¤Î N ÈÖÌÜ
674 ¤Îʸ»ú¥»¥Ã¥È¤ËÂбþ¤¹¤ë¡£$CHARSET_NAMES ¤Ï´Ø¿ô
675 mconv_define_coding () ¤Î°ú¿ô¤È¤Ê¤ë¡£
677 Ãͤ¬ 0..3 ¤À¤Ã¤¿¤é¡¢Âбþ¤¹¤ëʸ»ú¥»¥Ã¥È¤ò G0..G3 ¤Î¤½¤ì¤¾¤ì¤Ë»Ø¼¨
678 ¤¹¤ë¤³¤È¡¢½é´ü¾õÂ֤Ǥ¹¤Ç¤Ë G0..G3 ¤Ë»Ø¼¨¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤¹
681 Ãͤ¬ -4..-1 ¤À¤Ã¤¿¤é¡¢Âбþ¤¹¤ëʸ»ú¥»¥Ã¥È¤ò G0..G3 ¤Î¤½¤ì¤¾¤ì¤Ë»Ø
682 ¼¨¤¹¤ë¤¬¡¢½é´ü¾õÂ֤ǤϤɤ³¤Ë¤â»Ø¼¨¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
685 char designations[32];
688 Bitwise OR of @c enum @c MCodingFlagISO2022 . */
691 @c enum @c MCodingFlagISO2022 ¤Î¥Ó¥Ã¥Èñ°Ì¤Ç¤ÎÏÀÍý OR */
695 } MCodingInfoISO2022;
698 /*** @ingroup m17nConv */
700 @brief Structure for extra information about a coding system of type #MCODING_TYPE_UTF.
704 @brief #MCODING_TYPE_UTF ¥¿¥¤¥×¤Î¥³¡¼¥É·Ï¤ÇɬÍפÊÉղþðÊóÍѤι½Â¤ÂÎ.
706 @latexonly \IPApage{MCodingInfoUTF} @endlatexonly
708 @latexonly \IPAlabel{MCodingInfoUTF} @endlatexonly */
713 Specify bits of a code unit. The value must be 8, 16, or 32. */
715 ¥³¡¼¥ÉĹ¡Ê¥Ó¥Ã¥È¿ô¡Ë¡£ÃÍ¤Ï 8, 16, 32 ¤Î¤¤¤º¤ì¤«¡£ */
719 Specify how to handle the heading BOM (byte order mark). The
720 value must be 0, 1, or 2. The meanings are as follows:
722 0: On decoding, check the first two byte. If they are BOM,
723 decide endian by them. If not, decide endian by the member @c
724 endian. On encoding, produce byte sequence according to
725 @c endian with heading BOM.
727 1: On decoding, do not handle the first two bytes as BOM, and
728 decide endian by @c endian. On encoding, produce byte sequence
729 according to @c endian without BOM.
731 2: On decoding, handle the first two bytes as BOM and decide
732 ending by them. On encoding, produce byte sequence according to
733 @c endian with heading BOM.
735 If <code_unit_bits> is 8, the value has no meaning. */
738 ÀèƬ¤Î BOM (¥Ð¥¤¥È¥ª¡¼¥À¡¼¥Þ¡¼¥¯) ¤Î¼è¤ê°·¤¤¤ò»ØÄꤹ¤ë¡£ÃÍ¤Ï 0,
739 1, 2 ¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ê¡¢¤½¤ì¤¾¤ì¤Î°ÕÌ£¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
741 0: ¥Ç¥³¡¼¥É¤ÎºÝ¤ËºÇ½é¤Î 2 ¥Ð¥¤¥È¤òÄ´¤Ù¤ë¡£¤â¤·¤½¤ì¤¬ BOM ¤Ç¤¢¤ì
742 ¤Ð¡¢¥¨¥ó¥Ç¥£¥¢¥ó¤ò¤½¤ì¤ÇȽÄꤹ¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢¥á¥ó¥Ð @c
743 endian ¤Ë½¾¤Ã¤Æ¥¨¥ó¥Ç¥£¥¢¥ó¤ò·èÄꤹ¤ë¡£¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï @c
744 endian ¤Ë½¾¤Ã¤¿¥Ð¥¤¥ÈÎó¤òÀèƬ¤Ë BOM ÉÕ¤ÇÀ¸À®¤¹¤ë¡£
746 1: ¥Ç¥³¡¼¥É¤ÎºÝ¡¢ºÇ½é¤Î 2 ¥Ð¥¤¥È¤ò BOM ¤È¤·¤Æ°·¤ï¤º¡¢¥¨¥ó¥Ç¥£¥¢
747 ¥ó¤Ï @c endian ¤ÇȽÄꤹ¤ë¡£¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï¡¢BOM ¤ò½ÐÎϤ»¤º¡¢
748 @c endian ¤Ë±þ¤¸¤¿¥Ð¥¤¥ÈÎó¤òÀ¸À®¤¹¤ë¡£
750 2: ¥Ç¥³¡¼¥É¤ÎºÝ¤ËºÇ½é¤Î2¥Ð¥¤¥È¤ò BOM¤È¤·¤Æ°·¤¤¡¢¤½¤ì¤Ë½¾¤Ã¤Æ¥¨¥ó
751 ¥Ç¥£¥¢¥ó¤òȽÄꤹ¤ë¡£¥¨¥ó¥³¡¼¥É¤ÎºÝ¤Ë¤Ï @c endian ¤Ë±þ¤¸¤¿¥Ð¥¤¥È
752 Îó¤òÀèƬ¤Ë BOM ÉÕ¤¤ÇÀ¸À®¤¹¤ë¡£ */
756 Specify the endian type. The value must be 0 or 1. 0 means
757 little endian, and 1 means big endian.
759 If <code_unit_bits> is 8, the value has no meaning. */
761 ¥¨¥ó¥Ç¥£¥¢¥ó¤Î¥¿¥¤¥×¤ò»ØÄꤹ¤ë¡£ÃÍ¤Ï 0 ¤« 1 ¤Ç¤¢¤ê¡¢0 ¤Ê¤é¤Ð¥ê¥È
762 ¥ë¥¨¥ó¥Ç¥£¥¢¥ó¡¢1 ¤Ê¤é¤Ð¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó¤Ç¤¢¤ë¡£
764 <code_unit_bits> ¤¬ 8 ¤Î¾ì¹ç¤Ë¤Ï¡¢¤³¤ÎÃͤϰÕÌ£¤ò»ý¤¿¤Ê¤¤¡£
770 extern MSymbol mconv_define_coding (const char *name, MPlist *plist,
771 int (*resetter) (MConverter *),
772 int (*decoder) (const unsigned char *, int,
773 MText *, MConverter *),
774 int (*encoder) (MText *, int, int,
775 unsigned char *, int,
779 extern MSymbol mconv_resolve_coding (MSymbol symbol);
781 extern int mconv_list_codings (MSymbol **symbols);
783 extern MConverter *mconv_buffer_converter (MSymbol coding, unsigned char *buf,
786 extern MConverter *mconv_stream_converter (MSymbol coding, FILE *fp);
788 extern int mconv_reset_converter (MConverter *converter);
790 extern void mconv_free_converter (MConverter *converter);
792 extern MConverter *mconv_rebind_buffer (MConverter *converter,
793 unsigned char *buf, int n);
795 extern MConverter *mconv_rebind_stream (MConverter *converter, FILE *fp);
797 extern MText *mconv_decode (MConverter *converter, MText *mt);
799 MText *mconv_decode_buffer (MSymbol name, unsigned char *buf, int n);
801 MText *mconv_decode_stream (MSymbol name, FILE *fp);
803 extern int mconv_encode (MConverter *converter, MText *mt);
805 extern int mconv_encode_range (MConverter *converter, MText *mt,
808 extern int mconv_encode_buffer (MSymbol name, MText *mt,
809 unsigned char *buf, int n);
811 extern int mconv_encode_stream (MSymbol name, MText *mt, FILE *fp);
813 extern int mconv_getc (MConverter *converter);
815 extern int mconv_ungetc (MConverter *converter, int c);
817 extern int mconv_putc (MConverter *converter, int c);
819 extern MText *mconv_gets (MConverter *converter, MText *mt);
821 /* (S4) Locale related functions corresponding to libc functions */
823 /*** @ingroup m17nShell */
824 /***en @defgroup m17nLocale Locale */
825 /***ja @defgroup m17nLocale ¥í¥±¡¼¥ë */
828 /*** @ingroup m17nLocale */
830 @brief @c struct @c MLocale.
832 The structure @c MLocale is used to hold information about name,
833 language, territory, modifier, codeset, and the corresponding
834 coding system of locales.
836 The contents of this structure are implementation dependent. Its
837 internal structure is concealed from application programs. */
840 @brief @c MLocale ¹½Â¤ÂÎ.
842 @c MLocale ¹½Â¤ÂΤϡ¢¥í¥±¡¼¥ë¤Î̾Á°¡¢¸À¸ì¡¢ÃÏ°è¡¢¥â¥Ç¥£¥Õ¥¡¥¤¥¢¡¢
843 ¥³¡¼¥É¥»¥Ã¥È¡¢¤ª¤è¤ÓÂбþ¤¹¤ë¥³¡¼¥É·Ï¤Ë´Ø¤¹¤ë¾ðÊó¤òÊÝ»ý¤¹¤ë¤¿¤á¤ËÍÑ
846 ¤³¤Î¹½Â¤ÂΤÎÆâÍƤϼÂÁõ¤Ë°Í¸¤¹¤ë¡£ ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í
847 ¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */
851 mlocale_get_prop () */
853 typedef struct MLocale MLocale;
857 extern MSymbol Mlanguage;
858 extern MSymbol Mterritory;
859 extern MSymbol Mmodifier;
860 extern MSymbol Mcodeset;
862 extern MLocale *mlocale_set (int category, const char *locale);
864 extern MSymbol mlocale_get_prop (MLocale *locale, MSymbol key);
866 extern int mtext_ftime (MText *mt, const char *format, const struct tm *tm,
869 extern MText *mtext_getenv (const char *name);
871 extern int mtext_putenv (MText *mt);
873 extern int mtext_coll (MText *mt1, MText *mt2);
876 * (9) Miscellaneous functions of libc level (not yet implemented)
880 extern int mtext_width (MText *mt, int n);
881 extern MText *mtext_tolower (MText *mt);
882 extern MText *mtext_toupper (MText *mt);
889 /*** @ingroup m17nShell */
890 /***en @defgroup m17nInputMethod Input Method (basic) */
891 /***ja @defgroup m17nInputMethod ÆþÎϥ᥽¥Ã¥É (´ðËÜÉôʬ) */
894 /*** @addtogroup m17nInputMethod
897 /* Struct forward declaration. */
898 typedef struct MInputMethod MInputMethod;
899 typedef struct MInputContext MInputContext;
902 @brief Type of input method callback functions.
904 This is the type of callback functions called from input method
905 drivers. #IC is a pointer to an input context, #COMMAND is a name
906 of callback for which the function is called. */
908 @brief ÆþÎϥ᥽¥Ã¥É¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î·¿Àë¸À.
910 ÆþÎϥ᥽¥Ã¥É¤«¤é¸Æ¤Ð¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î·¿¤Ç¤¢¤ë¡£#IC ¤ÏÆþÎÏ¥³¥ó
911 ¥Æ¥¯¥¹¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¡¢#COMMAND ¤Ï´Ø¿ô¤¬¸Æ¤Ð¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯¤Î̾Á°
914 typedef void (*MInputCallbackFunc) (MInputContext *ic, MSymbol command);
918 @brief Structure of input method driver.
920 The type @c MInputDriver is the structure of an input method driver that
921 contains several functions to handle an input method. */
924 @brief ÆþÎϥɥ饤¥ÐÍѹ½Â¤ÂÎ.
926 @c MInputDriver ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¤ò¼è¤ê°·¤¦´Ø¿ô¤ò´Þ¤àÆþÎϥ᥽¥Ã¥É¥É
927 ¥é¥¤¥Ð¤Î¹½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
929 typedef struct MInputDriver
932 @brief Open an input method.
934 This function opens the input method $IM. It is called from the
935 function minput_open_im () after all member of $IM but <info>
936 set. If opening $IM succeeds, it returns 0. Otherwise, it
937 returns -1. The function can setup $IM->info to keep various
938 information that is referred by the other driver functions. */
941 @brief ÆþÎϥ᥽¥Ã¥É¤ò¥ª¡¼¥×¥ó¤¹¤ë.
943 ¤³¤Î´Ø¿ô¤Ï¡¢ÆþÎϥ᥽¥Ã¥É $IM ¤ò¥ª¡¼¥×¥ó¤¹¤ë¡£$IM ¤Î <info> °Ê³°
944 ¤ÎÁ´¥á¥ó¥Ð¡¼¤¬¥»¥Ã¥È¤µ¤ì¤¿¸å¤Ç¡¢´Ø¿ô minput_open_im () ¤«¤é¸Æ¤Ð
945 ¤ì¤ë¡£$IM ¤ò¥ª¡¼¥×¥ó¤Ç¤¤ì¤Ð 0 ¤ò¡¢¤Ç¤¤Ê¤±¤ì¤Ð -1¤òÊÖ¤¹¡£¤³¤Î´Ø
946 ¿ô¤Ï $IM->info ¤òÀßÄꤷ¤Æ¡¢Â¾¤Î¥É¥é¥¤¥Ð´Ø¿ô¤«¤é»²¾È¤µ¤ì¤ë¾ðÊó¤ò
947 ÊÝ»ý¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
950 int (*open_im) (MInputMethod *im);
953 @brief Close an input method.
955 This function closes the input method $IM. It is called from
956 the function minput_close_im (). It frees all memory allocated
957 for $IM->info (if any) after finishing all the tasks of closing
958 the input method. But, the other members of $IM should not be
962 @brief ÆþÎϥ᥽¥Ã¥É¤ò¥¯¥í¡¼¥º¤¹¤ë.
964 ¤³¤Î´Ø¿ô¤Ï¡¢ÆþÎϥ᥽¥Ã¥É $IM ¤ò¥¯¥í¡¼¥º¤¹¤ë¡£´Ø¿ô
965 minput_close_im () ¤«¤é¸Æ¤Ð¤ì¤ë¡£ÆþÎϥ᥽¥Ã¥É¤Î¥¯¥í¡¼¥º¤¬¤¹¤Ù¤Æ
966 ½ªÎ»¤·¤¿»þÅÀ¤Ç¡¢$IM->info ¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥á¥â¥ê¤ò(¤¢¤ì¤Ð)¤¹
967 ¤Ù¤Æ³«Êü¤¹¤ë¡£¤¿¤À¤·¡¢$IM ¤Î¾¤Î¥á¥ó¥Ð¤Ë±Æ¶Á¤òÍ¿¤¨¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
970 void (*close_im) (MInputMethod *im);
973 @brief Create an input context.
975 This function creates the input context $IC. It is called from
976 the function minput_create_ic () after all members of $IC but
977 <info> are set. If creating $IC succeeds, it returns 0.
978 Otherwise, it returns -1. The function can setup $IC->info to
979 keep various information that is referred by the other driver
983 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÀ¸À®¤¹¤ë.
985 ¤³¤Î´Ø¿ô¤ÏÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC ¤òÀ¸À®¤¹¤ë¡£$IC ¤Î <info> °Ê³°¤Î
986 Á´¥á¥ó¥Ð¡¼¤¬¥»¥Ã¥È¤µ¤ì¤¿¸å¤Ç¡¢´Ø¿ô minput_create_ic () ¤«¤é¸Æ¤Ð
987 ¤ì¤ë¡£$IC ¤òÀ¸À®¤Ç¤¤ì¤Ð 0 ¤ò¡¢¤Ç¤¤Ê¤±¤ì¤Ð -1 ¤òÊÖ¤¹¡£¤³¤Î´Ø¿ô
988 ¤Ï $IC->info ¤òÀßÄꤷ¤Æ¡¢Â¾¤Î¥É¥é¥¤¥Ð´Ø¿ô¤«¤é»²¾È¤µ¤ì¤ë¾ðÊó¤òÊÝ
989 »ý¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£ */
992 int (*create_ic) (MInputContext *ic);
995 @brief Destroy an input context.
997 This function is called from the function minput_destroy_ic ()
998 and destroys the input context $IC. It frees all memory
999 allocated for $IC->info (if any) after finishing all the tasks
1000 of destroying the input method. But, the other members of $IC
1001 should not be touched. */
1004 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÇ˲õ¤¹¤ë.
1006 ´Ø¿ô minput_destroy_ic () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC ¤òÇË
1007 ²õ¤¹¤ë¡£ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÎÇ˲õ¤¬¤¹¤Ù¤Æ½ªÎ»¤·¤¿»þÅÀ¤Ç¡¢$IC->info
1008 ¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥á¥â¥ê¤ò(¤¢¤ì¤Ð)¤¹¤Ù¤Æ³«Êü¤¹¤ë¡£¤¿¤À¤·¡¢$IC
1009 ¤Î¾¤Î¥á¥ó¥Ð¤Ë±Æ¶Á¤òÍ¿¤¨¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ */
1011 void (*destroy_ic) (MInputContext *ic);
1014 @brief Filter an input key.
1016 This function is called from the function minput_filter () and
1017 filters an input key. $KEY and $ARG are the same as what given
1018 to minput_filter ().
1020 The task of the function is to handle $KEY, update the internal
1021 state of $IC. If $KEY is absorbed by the input method and no
1022 text is produced, it returns 1. Otherwise, it returns 0.
1024 It may update $IC->status, $IC->preedit, $IC->cursor_pos,
1025 $IC->ncandidates, $IC->candidates, and $IC->produced if that is
1026 necessary for the member <callback>.
1028 The meaning of $ARG depends on the input method river. See the
1029 documentation of @c minput_default_driver and @c
1030 minput_gui_driver for instance. */
1033 @brief ÆþÎÏ¥¡¼¤ò¥Õ¥£¥ë¥¿¤¹¤ë.
1035 ´Ø¿ô minput_filter () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥¡¼¤ò¥Õ¥£¥ë¥¿¤¹¤ë¡£°ú¿ô
1036 $KEY, $ARG ¤Ï´Ø¿ô minput_filter () ¤Î¤â¤Î¤ÈƱ¤¸¡£
1038 ¤³¤Î´Ø¿ô¤Ï $KEY ¤ò½èÍý¤·¡¢$IC ¤ÎÆâÉô¾õÂÖ¤ò¹¹¿·¤¹¤ë¡£ $KEY ¤¬ÆþÎÏ
1039 ¥á¥½¥Ã¥É¤ËµÛ¼ý¤µ¤ì¤Æ¥Æ¥¥¹¥È¤¬À¸À®¤µ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢ 1 ¤òÊÖ
1040 ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤¹¡£
1042 ¥á¥ó¥Ð <callback> ¤ËɬÍפǤ¢¤ì¤Ð¡¢$IC->status, $IC->preedit,
1043 $IC->cursor_pos, $IC->ncandidates, $IC->candidates,
1044 $IC->produced ¤ò¹¹¿·¤Ç¤¤ë¡£
1046 $ARG ¤Î°ÕÌ£¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë°Í¸¤¹¤ë¡£Îã¤Ï @c
1047 minput_default_driver ¤Þ¤¿¤Ï @c minput_gui_driver ¤ÎÀâÌÀ¤ò»²¾È¤Î
1050 int (*filter) (MInputContext *ic, MSymbol key, void *arg);
1053 @brief Lookup a produced text in an input context.
1055 It is called from the function minput_lookup () and looks up a
1056 produced text in the input context $IC. This function
1057 concatenate a text produced by the input key $KEY (if any) to
1058 M-text $MT. If $KEY was correctly handled by the input method
1059 of $IC, it returns 0. Otherwise, it returns 1.
1061 The meaning of $ARG depends on the input method driver. See the
1062 documentation of @c minput_default_driver and @c
1063 minput_gui_driver for instance. */
1066 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÇÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È¤Î³ÍÆÀ.
1068 ´Ø¿ô minput_lookup () ¤«¤é¸Æ¤Ð¤ì¡¢ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È $IC ¤ÇÀ¸À®¤µ
1069 ¤ì¤ë¥Æ¥¥¹¥È¤ò¸¡º÷¤¹¤ë¡£ÆþÎÏ¥¡¼ $KEY ¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë¥Æ¥¥¹¥È
1070 ¤¬¤¢¤ì¤Ð¡¢M-text $MT ¤ËÄɲ乤롣 $KEY ¤¬ÆþÎϥ᥽¥Ã¥É $IC ¤Ë¤è¤Ã
1071 ¤ÆÀµ¤·¤¯½èÍý¤µ¤ì¤ì¤Ð 0 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 1 ¤òÊÖ¤¹¡£
1073 $ARG ¤Î°ÕÌ£¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë°Í¸¤¹¤ë¡£Îã¤Ï @c
1074 minput_default_driver ¤Þ¤¿¤Ï @c minput_gui_driver ¤ÎÀâÌÀ¤ò»²¾È¤Î
1077 int (*lookup) (MInputContext *ic, MSymbol key, void *arg, MText *mt);
1080 @brief List of callback functions.
1082 List of callback functions. Keys are one of
1083 #Minput_preedit_start, #Minput_preedit_draw,
1084 #Minput_preedit_done, #Minput_status_start, #Minput_status_draw,
1085 #Minput_status_done, #Minput_candidates_start,
1086 #Minput_candidates_draw, #Minput_candidates_done,
1087 #Minput_set_spot, #Minput_toggle, #Minput_reset.
1088 Values are functions of type #MInputCallbackFunc. */
1090 @brief ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î¥ê¥¹¥È.
1092 ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î¥ê¥¹¥È¡£¥¡¼¤Ï¼¡¤Î¤¤¤º¤ì¤«¡£
1093 #Minput_preedit_start, #Minput_preedit_draw,
1094 #Minput_preedit_done, #Minput_status_start, #Minput_status_draw,
1095 #Minput_status_done, #Minput_candidates_start,
1096 #Minput_candidates_draw, #Minput_candidates_done,
1097 #Minput_set_spot, #Minput_toggle, #Minput_reset¡£
1098 ÃͤÏ#MInputCallbackFunc ·¿¤Î´Ø¿ô¡£ */
1099 MPlist *callback_list;
1104 extern MInputDriver minput_default_driver;
1106 extern MSymbol Minput_driver;
1108 extern MInputDriver *minput_driver;
1110 /** Symbols for callback commands. */
1111 extern MSymbol Minput_preedit_start;
1112 extern MSymbol Minput_preedit_draw;
1113 extern MSymbol Minput_preedit_done;
1114 extern MSymbol Minput_status_start;
1115 extern MSymbol Minput_status_draw;
1116 extern MSymbol Minput_status_done;
1117 extern MSymbol Minput_candidates_start;
1118 extern MSymbol Minput_candidates_draw;
1119 extern MSymbol Minput_candidates_done;
1120 extern MSymbol Minput_set_spot;
1121 extern MSymbol Minput_toggle;
1122 extern MSymbol Minput_reset;
1125 @brief Structure of input method.
1127 The type @c MInputMethod is the structure of input method
1130 @brief ÆþÎϥ᥽¥Ã¥É¤Î¹½Â¤ÂÎ.
1132 @c MInputMethod ¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¥ª¥Ö¥¸¥§¥¯¥ÈÍѤι½Â¤ÂΤη¿¤Ç¤¢¤ë¡£ */
1136 /***en Which language this input method is for. The value is @c
1137 Mnil if the input method is foreign. */
1138 /***ja ¤É¤Î¸À¸ìÍѤÎÆþÎϥ᥽¥Ã¥É¤«¡£ÆþÎϥ᥽¥Ã¥É¤¬³°Éô¤Î¤â¤Î¤Ç¤¢¤ë¾ì
1139 ¹ç¤Ë¤ÏÃͤȤ·¤Æ @c Mnil ¤ò»ý¤Ä¡£ */
1142 /***en Name of the input method. If the input method is foreign, it
1143 must has a property of key @c Minput_driver and the value must be a
1144 pointer to a proper input method driver. */
1145 /***ja ÆþÎϥ᥽¥Ã¥É¤Î̾Á°¡£³°Éô¥á¥½¥Ã¥É¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢@c
1146 Minput_driver ¤ò¥¡¼¤È¤¹¤ë¥×¥í¥Ñ¥Æ¥£¤ò»ý¤Á¡¢¤½¤ÎÃͤÏŬÀÚ¤ÊÆþÎÏ¥á
1147 ¥½¥Ã¥É¥É¥é¥¤¥Ð¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£*/
1150 /***en Input method driver of the input method. */
1151 /***ja ¤½¤ÎÆþÎϥ᥽¥Ã¥ÉÍѤÎÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¡£ */
1152 MInputDriver driver;
1154 /***en The argument given to minput_open_im (). */
1155 /***ja minput_open_im () ¤ËÅϤµ¤ì¤ë°ú¿ô¡£ */
1158 /***en Pointer to extra information that <driver>.open_im ()
1160 /***ja <driver>.open_im () ¤¬ÀßÄꤹ¤ëÄɲþðÊó¤Ø¤Î¥Ý¥¤¥ó¥¿¡£ */
1167 @brief Structure of input context.
1169 The type @c MInputContext is the structure of input context
1173 @brief ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥ÈÍѹ½Â¤ÂÎ.
1175 @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 () ¤Ë¤è¤Ã¤Æ
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 can be toggled by the function minput_toggle
1200 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬¥¢¥¯¥Æ¥£¥Ö¤«¤É¤¦¤«¤ò¼¨¤¹¥Õ¥é¥°¡£ÆþÎÏ¥³¥ó¥Æ
1201 ¥¯¥¹¥È¤¬À¸À®¤µ¤ì¤¿»þÅÀ¤Ç¤ÏÃÍ¤Ï 1 ¡Ê¥¢¥¯¥Æ¥£¥Ö¡Ë¤Ç¤¢¤ê¡¢´Ø¿ô
1202 minput_toggle () ¤Ë¤è¤Ã¤Æ¥È¥°¥ë¤µ¤ì¤ë¡£ */
1206 /***en Spot location and size of the input context. */
1207 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Î¥¹¥Ý¥Ã¥È¤Î°ÌÃÖ¤ÈÂ礤µ. */
1209 /***en X and Y coordinate of the spot. */
1210 /***ja ¥¹¥Ý¥Ã¥È¤Î X, Y ºÂɸ. */
1213 /***en Ascent and descent pixels of the line of the spot. */
1214 /***ja ¥¹¥Ý¥Ã¥È¤Î¥¢¥»¥ó¥È¤È¥Ç¥£¥»¥ó¥È¤Î¥Ô¥¯¥»¥ë¿ô. */
1215 int ascent, descent;
1217 /***en Font size for preedit text in 1/10 point. */
1218 /***ja preedit ¥Æ¥¥¹¥ÈÍѤΥե©¥ó¥È¥µ¥¤¥º (1/10 ¥Ý¥¤¥ó¥Èñ°Ì). */
1221 /***en M-text at the spot, or NULL. */
1222 /***ja ¥¹¥Ý¥Ã¥È¾å¤Î M-text¡¢¤Þ¤¿¤Ï NULL. */
1225 /***en Character position in <mt> at the spot. */
1226 /***ja <mt> ¤Ë¤ª¤±¤ë¥¹¥Ý¥Ã¥È¤Îʸ»ú°ÌÃÖ. */
1230 /***en The usage of the following members depends on the input
1231 method driver. The descriptions below are for the driver of an
1232 internal input method. They are set by the function
1233 <im>->driver.filter (). */
1234 /***ja °Ê²¼¤Î¥á¥ó¥Ð¤Î»ÈÍÑË¡¤ÏÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë¡£°Ê
1235 ²¼¤ÎÀâÌÀ¤Ï¡¢ÆâÉôÆþÎϥ᥽¥Ã¥ÉÍѤÎÆþÎϥɥ饤¥Ð¤ËÂФ¹¤ë¤â¤Î¤Ç¤¢¤ë¡£
1236 ¤³¤ì¤é¤Ï´Ø¿ô <im>->driver.filter () ¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£ */
1238 /***en Pointer to extra information that <im>->driver.create_ic ()
1239 setups. It is used to record the internal state of the input
1241 /***ja <im>->driver.create_ic () ¤¬ÀßÄꤹ¤ëÄɲþðÊó¤Ø¤Î¥Ý¥¤¥ó¥¿¡£Æþ
1242 ÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤ÎÆâÉô¾õÂÖ¤òµÏ¿¤¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£ */
1245 /***en M-text describing the current status of the input
1247 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤Î¸½ºß¤Î¾õ¶·¤òɽ¤¹ M-text */
1250 /***en The function <im>->driver.filter () sets the value to 1 when
1251 it changes <status>. */
1252 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢<status> ¤òÊѤ¨¤¿»þ¤³¤ÎÃͤò 1
1256 /***en M-text containing the current preedit text. The function
1257 <im>->driver.filter () sets the value. */
1258 /***ja ¸½ºß¤Î preedit ¥Æ¥¥¹¥È¤ò´Þ¤à M-text¡£´Ø¿ô
1259 <im>->driver.filter () ¤¬¤³¤ÎÃͤòÀßÄꤹ¤ë¡£ */
1262 /***en The function <im>->driver.filter () sets the value to 1 when
1263 it changes <preedit>. */
1264 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢<preedit> ¤òÊѤ¨¤¿»þ¤³¤ÎÃͤò
1266 int preedit_changed;
1268 /***en Cursor position of <preedit>. */
1269 /***ja <preedit>¤Î¥«¡¼¥½¥ë°ÌÃÖ */
1272 int cursor_pos_changed;
1274 /***en Array of the current candidate texts. */
1275 /***ja ¸½ºß¤Î¥Æ¥¥¹¥È¸õÊä¤ÎÇÛÎó. */
1276 MPlist *candidate_list;
1277 int candidate_index;
1278 int candidate_from, candidate_to;
1281 /***en The function <im>->driver.filter () sets the value to 1 when
1282 it changes one of the above members. */
1283 /***ja ´Ø¿ô <im>->driver.filter () ¤Ï¡¢¾åµ¤Î¥á¥ó¥Ð¤Î£±¤Ä¤òÊѤ¨¤¿»þ
1284 ¤³¤ÎÃͤò 1 ¤ËÀßÄꤹ¤ë¡£ */
1285 int candidates_changed;
1292 extern MInputMethod *minput_open_im (MSymbol language, MSymbol name,
1297 extern void minput_close_im (MInputMethod *im);
1299 extern MInputContext *minput_create_ic (MInputMethod *im, void *arg);
1301 extern void minput_destroy_ic (MInputContext *ic);
1303 extern int minput_filter (MInputContext *ic, MSymbol key, void *arg);
1305 extern int minput_lookup (MInputContext *ic, MSymbol key, void *arg,
1308 extern void minput_set_spot (MInputContext *ic, int x, int y,
1309 int ascent, int descent, int fontsize,
1310 MText *mt, int pos);
1312 extern void minput_toggle (MInputContext *ic);
1314 extern void minput_reset_ic (MInputContext *ic);
1318 extern MInputMethod *mdebug_dump_im (MInputMethod *im, int indent);
1325 #endif /* _M17N_H_ */