1 /* m17n-core.h -- header file for the CORE 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
32 * Header file for m17n library.
35 /* (C1) Introduction */
37 /***en @defgroup m17nIntro Introduction */
38 /***ja @defgroup m17nIntro ¤Ï¤¸¤á¤Ë */
41 #define M17NLIB_MAJOR_VERSION 1
42 #define M17NLIB_MINOR_VERSION 1
43 #define M17NLIB_PATCH_LEVEL 0
44 #define M17NLIB_VERSION_NAME "1.1.0"
46 extern void m17n_init_core (void);
47 #define M17N_INIT() m17n_init_core ()
48 extern void m17n_fini_core (void);
49 #define M17N_FINI() m17n_fini_core ()
53 /*** @ingroup m17nIntro */
55 @brief Enumeration for the status of the m17n library.
57 The enum #M17NStatus is used as a return value of the function
61 @brief m17n ¥é¥¤¥Ö¥é¥ê¤Î¾õÂÖ¤ò¼¨¤¹Îóµó·¿.
63 Îóµó·¿ #M17NStatus ¤Ï´Ø¿ô m17n_status () ¤ÎÌá¤êÃͤȤ·¤ÆÍѤ¤¤é¤ì¤ë¡£ */
67 /***en No modules is initialized, and all modules are finalized. */
69 /***en Only the modules in CORE API are initialized. */
70 M17N_CORE_INITIALIZED,
71 /***en Only the modules in CORE and SHELL APIs are initialized. */
72 M17N_SHELL_INITIALIZED,
73 /***en All modules are initialized. */
79 extern enum M17NStatus m17n_status (void);
81 /***en @defgroup m17nCore CORE API */
82 /***ja @defgroup m17nCore ¥³¥¢ API */
84 /*** @ingroup m17nCore */
85 /***en @defgroup m17nObject Managed Object */
86 /***ja @defgroup m17nObject ´ÉÍý²¼¥ª¥Ö¥¸¥§¥¯¥È */
89 /*** @ingroup m17nObject */
91 @brief The first member of a managed object.
93 When an application program defines a new structure for managed
94 objects, its first member must be of the type @c struct
95 #M17NObjectHead. Its contents are used by the m17n library, and
96 application programs should never touch them. */
98 @brief ´ÉÍý²¼¥ª¥Ö¥¸¥§¥¯¥È¤ÎºÇ½é¤Î¥á¥ó¥Ð.
100 ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¿·¤·¤¤¹½Â¤ÂΤò´ÉÍý²¼¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ
101 ÄêµÁ¤¹¤ëºÝ¤Ë¤Ï¡¢ºÇ½é¤Î¥á¥ó¥Ð¤Ï @c #M17NObjectHead ¹½Â¤Âη¿¤Ç¤Ê¤¯
102 ¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£@c #M17NObjectHead ¤ÎÆâÍÆ¤Ï m17n ¥é¥¤¥Ö¥é¥ê¤¬»ÈÍѤ¹
103 ¤ë¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¿¨¤ì¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
113 /* Return a newly allocated managed object. */
114 extern void *m17n_object (int size, void (*freer) (void *));
116 /* Increment the reference count of managed object OBJECT. */
117 extern int m17n_object_ref (void *object);
119 /* Decrement the reference count of managed object OBJECT. */
120 extern int m17n_object_unref (void *object);
124 /* (C2) Symbol handling */
126 /*** @ingroup m17nCore */
127 /***en @defgroup m17nSymbol Symbol */
128 /***ja @defgroup m17nSymbol ¥·¥ó¥Ü¥ë */
132 @ingroup m17nSymbol */
134 @brief Type of symbols.
136 The type #MSymbol is for a @e symbol object. Its internal
137 structure is concealed from application programs. */
140 @brief ¥·¥ó¥Ü¥ë¤Î·¿Àë¸À.
142 #MSymbol ¤Ï¥·¥ó¥Ü¥ë¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç
143 ¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */
145 typedef struct MSymbolStruct *MSymbol;
149 /* Predefined symbols. */
152 extern MSymbol Mstring;
153 extern MSymbol Msymbol;
154 extern MSymbol Mtext;
156 /* Return a symbol of name NAME. */
157 extern MSymbol msymbol (const char *name);
159 /* Return a managing key of name NAME. */
160 extern MSymbol msymbol_as_managing_key (const char *name);
162 /* Return a symbol of name NAME if it already exists. */
163 extern MSymbol msymbol_exist (const char *name);
165 /* Return the name of SYMBOL. */
166 extern char *msymbol_name (MSymbol symbol);
168 /* Give SYMBOL KEY property with value VALUE. */
169 extern int msymbol_put (MSymbol symbol, MSymbol key, void *val);
171 /*** Return KEY property value of SYMBOL. */
172 extern void *msymbol_get (MSymbol symbol, MSymbol key);
175 * (2-1) Property List
178 /*** @ingroup m17nCore */
179 /***en @defgroup m17nPlist Property List */
180 /***ja @defgroup m17nPlist ¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È */
184 @ingroup m17nPlist */
186 @brief Type of property list objects.
188 The type #MPlist is for a @e property @e list object. Its internal
189 structure is concealed from application programs. */
192 @brief ¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿Àë¸À.
194 #MPlist ¤Ï @e ¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È (Property list) ¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£
195 ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */
197 typedef struct MPlist MPlist;
201 extern MSymbol Mplist, Minteger;
203 extern MPlist *mplist ();
205 extern MPlist *mplist_copy (MPlist *plist);
207 extern MPlist *mplist_add (MPlist *plist, MSymbol key, void *val);
209 extern MPlist *mplist_push (MPlist *plist, MSymbol key, void *val);
211 extern void *mplist_pop (MPlist *plist);
213 extern MPlist *mplist_put (MPlist *plist, MSymbol key, void *val);
215 extern void *mplist_get (MPlist *plist, MSymbol key);
217 extern MPlist *mplist_find_by_key (MPlist *plist, MSymbol key);
219 extern MPlist *mplist_find_by_value (MPlist *plist, void *val);
221 extern MPlist *mplist_next (MPlist *plist);
223 extern MPlist *mplist_set (MPlist *plist, MSymbol key, void *val);
225 extern int mplist_length (MPlist *plist);
227 extern MSymbol mplist_key (MPlist *plist);
229 extern void *mplist_value (MPlist *plist);
231 /* (S1) Characters */
234 /*** @ingroup m17nCore */
235 /***en @defgroup m17nCharacter Character */
236 /***ja @defgroup m17nCharacter ʸ»ú */
239 #define MCHAR_MAX 0x3FFFFF
240 /*#define MCHAR_MAX 0x7FFFFFFF*/
242 extern MSymbol Mscript;
243 extern MSymbol Mname;
244 extern MSymbol Mcategory;
245 extern MSymbol Mcombining_class;
246 extern MSymbol Mbidi_category;
247 extern MSymbol Msimple_case_folding;
248 extern MSymbol Mcomplicated_case_folding;
250 extern MSymbol mchar_define_property (const char *name, MSymbol type);
252 extern void *mchar_get_prop (int c, MSymbol key);
254 extern int mchar_put_prop (int c, MSymbol key, void *val);
256 /* (C3) Handling chartable */
258 /*** @ingroup m17nCore */
259 /***en @defgroup m17nChartable Chartable */
260 /***ja @defgroup m17nChartable ʸ»ú¥Æ¡¼¥Ö¥ë */
262 extern MSymbol Mchar_table;
265 @ingroup m17nChartable */
267 @brief Type of chartables.
269 The type #MCharTable is for a @e chartable objects. Its
270 internal structure is concealed from application programs. */
273 @brief ʸ»ú¥Æ¡¼¥Ö¥ë¤Î·¿Àë¸À.
275 #MCharTable ¤Ï @e ʸ»ú¥Æ¡¼¥Ö¥ë (chartable) ¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£
276 ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */
278 typedef struct MCharTable MCharTable;
281 extern MCharTable *mchartable (MSymbol key, void *default_value);
283 extern void *mchartable_lookup (MCharTable *table, int c);
285 extern int mchartable_set (MCharTable *table, int c, void *val);
287 extern int mchartable_set_range (MCharTable *table, int from, int to,
290 extern int mchartable_map (MCharTable *table, void *ignore,
291 void (*func) (int from, int to,
292 void *val, void *arg),
295 extern void mchartable_range (MCharTable *table, int *from, int *to);
298 * (5) Handling M-text.
299 * "M" of M-text stands for:
305 /*** @ingroup m17nCore */
306 /***en @defgroup m17nMtext M-text */
307 /***ja @defgroup m17nMtext M-text */
311 * (5-1) M-text basics
314 /*** @ingroup m17nMtext */
316 @brief Type of @e M-texts.
318 The type #MText is for an @e M-text object. Its internal
319 structure is concealed from application programs. */
322 @brief @e MText ¤Î·¿Àë¸À.
324 #Mtext ¤Ï @e M-text ¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£
325 ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£
327 @latexonly \IPAlabel{MText} @endlatexonly
328 @latexonly \IPAlabel{MText->MPlist} @endlatexonly */
330 typedef struct MText MText;
334 /*** @ingroup m17nMtext */
336 @brief Enumeration for specifying the format of an M-text.
338 The enum #MTextFormat is used as an argument of the
339 mtext_from_data () function to specify the format of data from
340 which an M-text is created. */
343 @brief M-text ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ØÄꤹ¤ëÎóµó·¿.
345 Îóµó·¿ #MTextFormat ¤Ï
346 ´Ø¿ô mtext_from_data () ¤Î°ú¿ô¤È¤·¤ÆÍѤ¤¤é¤ì¡¢
347 M-text ¤òÀ¸À®¤¹¤ë¸µ¤È¤Ê¤ë¥Ç¡¼¥¿¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ØÄꤹ¤ë¡£ */
351 MTEXT_FORMAT_US_ASCII,
353 MTEXT_FORMAT_UTF_16LE,
354 MTEXT_FORMAT_UTF_16BE,
355 MTEXT_FORMAT_UTF_32LE,
356 MTEXT_FORMAT_UTF_32BE,
361 extern MText *mtext ();
365 /*** @addtogroup m17nMtext
368 /***en @name Variables: System's UTF-16 and UTF-32 types */
369 /***ja @name ÊÑ¿ô: ¥·¥¹¥Æ¥à¤Î UTF-16 ¤È UTF-32 ¤Î¥¿¥¤¥× */
374 @brief Variable of value MTEXT_FORMAT_UTF_16LE or MTEXT_FORMAT_UTF_16BE.
376 The global variable #MTEXT_FORMAT_UTF_16 is initialized to
377 #MTEXT_FORMAT_UTF_16LE on a "Little Endian" system (storing words
378 with the least significant byte first), and to
379 #MTEXT_FORMAT_UTF_16BE depneding on a "Big Endian" system (storing
380 words with the most significant byte first). */
383 @brief Ãͤ¬ MTEXT_FORMAT_UTF_16LE ¤« MTEXT_FORMAT_UTF_16BE ¤Ç¤¢¤ëÊÑ¿ô
385 Âç°èÊÑ¿ô #MTEXT_FORMAT_UTF_16 ¤Ï¥ê¥È¥ë¡¦¥¨¥ó¥Ç¥£¥¢¥ó¡¦¥·¥¹¥Æ¥à¡Ê¥ï¡¼
386 ¥É¤ò LSB (Least Significant Byte) ¤òÀè¤Ë¤·¤Æ³ÊǼ¡Ë¾å¤Ç¤Ï
387 #MTEXT_FORMAT_UTF_16LE ¤Ë½é´ü²½¤µ¤ì¡¢¥Ó¥Ã¥°¡¦¥¨¥ó¥Ç¥£¥¢¥ó¡¦¥·¥¹¥Æ¥à
388 ¡Ê¥ï¡¼¥É¤ò MSB (Most Significant Byte) ¤òÀè¤Ë¤·¤Æ³ÊǼ¡Ë¾å¤Ç¤Ï
389 #MTEXT_FORMAT_UTF_16BE ¤Ë½é´ü²½¤µ¤ì¤ë¡£ */
393 mtext_from_data () */
395 extern const int MTEXT_FORMAT_UTF_16;
399 @brief Variable of value MTEXT_FORMAT_UTF_32LE or MTEXT_FORMAT_UTF_32BE.
401 The global variable #MTEXT_FORMAT_UTF_32 is initialized to
402 #MTEXT_FORMAT_UTF_32LE on a "Little Endian" system (storing words
403 with the least significant byte first), and to
404 #MTEXT_FORMAT_UTF_32BE depneding on a "Big Endian" system (storing
405 words with the most significant byte first). */
408 @brief Ãͤ¬ MTEXT_FORMAT_UTF_32LE ¤« MTEXT_FORMAT_UTF_32BE ¤Ç¤¢¤ëÊÑ¿ô
410 Âç°èÊÑ¿ô #MTEXT_FORMAT_UTF_32 ¤Ï¥ê¥È¥ë¡¦¥¨¥ó¥Ç¥£¥¢¥ó¡¦¥·¥¹¥Æ¥à¡Ê¥ï¡¼
411 ¥É¤ò LSB (Least Significant Byte) ¤òÀè¤Ë¤·¤Æ³ÊǼ¡Ë¾å¤Ç¤Ï
412 #MTEXT_FORMAT_UTF_32LE ¤Ë½é´ü²½¤µ¤ì¡¢¥Ó¥Ã¥°¡¦¥¨¥ó¥Ç¥£¥¢¥ó¡¦¥·¥¹¥Æ¥à
413 ¡Ê¥ï¡¼¥É¤ò MSB (Most Significant Byte) ¤òÀè¤Ë¤·¤Æ³ÊǼ¡Ë¾å¤Ç¤Ï
414 #MTEXT_FORMAT_UTF_32BE ¤Ë½é´ü²½¤µ¤ì¤ë¡£ */
418 mtext_from_data () */
420 extern const int MTEXT_FORMAT_UTF_32;
424 extern MText *mtext_from_data (const void *data, int nitems,
425 enum MTextFormat format);
432 * (5-2) Functions to manipulate M-texts. They correspond to string
433 * manipulating functions in libc.
434 * In the following functions, mtext_XXX() corresponds to strXXX().
437 extern int mtext_len (MText *mt);
439 extern int mtext_ref_char (MText *mt, int pos);
441 extern int mtext_set_char (MText *mt, int pos, int c);
443 extern MText *mtext_copy (MText *mt1, int pos, MText *mt2, int from, int to);
445 extern int mtext_compare (MText *mt1, int from1, int to1,
446 MText *mt2, int from2, int to2);
448 extern int mtext_case_compare (MText *mt1, int from1, int to1,
449 MText *mt2, int from2, int to2);
451 extern int mtext_character (MText *mt, int from, int to, int c);
453 extern int mtext_del (MText *mt, int from, int to);
455 extern int mtext_ins (MText *mt1, int pos, MText *mt2);
457 extern int mtext_ins_char (MText *mt, int pos, int c, int n);
459 extern MText *mtext_cat_char (MText *mt, int c);
461 extern MText *mtext_duplicate (MText *mt, int from, int to);
463 extern MText *mtext_dup (MText *mt);
465 extern MText *mtext_cat (MText *mt1, MText *mt2);
467 extern MText *mtext_ncat (MText *mt1, MText *mt2, int n);
469 extern MText *mtext_cpy (MText *mt1, MText *mt2);
471 extern MText *mtext_ncpy (MText *mt1, MText *mt2, int n);
473 extern int mtext_chr (MText *mt, int c);
475 extern int mtext_rchr (MText *mt, int c);
477 extern int mtext_cmp (MText *mt1, MText *mt2);
479 extern int mtext_ncmp (MText *mt1, MText *mt2, int n);
481 extern int mtext_spn (MText *mt1, MText *mt2);
483 extern int mtext_cspn (MText *mt1, MText *mt2);
485 extern int mtext_pbrk (MText *mt1, MText *mt2);
487 extern int mtext_text (MText *mt1, int pos, MText *mt2);
489 extern int mtext_search (MText *mt1, int from, int to, MText *mt2);
491 extern MText *mtext_tok (MText *mt, MText *delim, int *pos);
493 extern int mtext_casecmp (MText *mt1, MText *mt2);
495 extern int mtext_ncasecmp (MText *mt1, MText *mt2, int n);
497 /*** @ingroup m17nPlist */
498 extern MPlist *mplist_deserialize (MText *mt);
501 * (5-3) Text properties
504 /*** @ingroup m17nCore */
505 /***en @defgroup m17nTextProperty Text Property */
506 /***ja @defgroup m17nTextProperty ¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£ */
508 /*** @ingroup m17nTextProperty */
510 @brief Flag bits to control text property.
512 The mtext_property () funciton accepts logical OR of these flag
513 bits as an argument. They control the behaviour of the created
514 text property as described in the documentation of each flag
518 @brief ¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤òÀ©¸æ¤¹¤ë¥Õ¥é¥°¥Ó¥Ã¥È.
520 ´Ø¿ô mtext_property () ¤Ï°Ê²¼¤Î¥Õ¥é¥°¥Ó¥Ã¥È¤ÎÏÀÍý OR ¤ò°ú¿ô¤È¤·¤Æ
521 ¤È¤ë¤³¤È¤¬¤Ç¤¤ë¡£¥Õ¥é¥°¥Ó¥Ã¥È¤ÏÀ¸À®¤µ¤ì¤¿¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Î¿¶Éñ
522 ¤¤¤òÀ©¸æ¤¹¤ë¡£¾ÜºÙ¤Ï³Æ¥Õ¥é¥°¥Ó¥Ã¥È¤ÎÀâÌÀ¤ò»²¾È¡£*/
524 enum MTextPropertyControl
526 /***en If this flag bit is on, an M-text inserted at the start
527 position or at the middle of the text property inherits the
529 /***ja ¤³¤Î¥Ó¥Ã¥È¤¬ on ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Î»Ï¤Þ¤ëÅÀ¤¢
530 ¤ë¤¤¤ÏÃæ´Ö¤ËÁÞÆþ¤µ¤ì¤¿ M-text ¤Ï¤³¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò·Ñ¾µ¤¹¤ë¡£
532 MTEXTPROP_FRONT_STICKY = 0x01,
534 /***en If this flag bit is on, an M-text inserted at the end
535 position or at the middle of the text property inherits the
537 /***ja ¤³¤Î¥Ó¥Ã¥È¤¬ on ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Î½ª¤ï¤ëÅÀ¤¢
538 ¤ë¤¤¤ÏÃæ´Ö¤ËÁÞÆþ¤µ¤ì¤¿ M-text ¤Ï¤³¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò·Ñ¾µ¤¹¤ë¡£
540 MTEXTPROP_REAR_STICKY = 0x02,
542 /***en If this flag bit is on, the text property is removed if a
543 text in its region is modified. */
544 /***ja ¤³¤Î¥Ó¥Ã¥È¤¬ on ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ÎÈÏ°ÏÆâ¤Î
545 ¥Æ¥¥¹¥È¤¬Êѹ¹¤µ¤ì¤¿¾ì¹ç¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¼è¤ê½ü¤«¤ì¤ë¡£ */
546 MTEXTPROP_VOLATILE_WEAK = 0x04,
548 /***en If this flag bit is on, the text property is removed if a
549 text or the other text property in its region is modified. */
550 /***ja ¤³¤Î¥Ó¥Ã¥È¤¬ on ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ÎÈÏ°ÏÆâ¤Î
551 ¥Æ¥¥¹¥È¤¢¤ë¤¤¤ÏÊ̤Υƥ¥¹¥È¥×¥í¥Ñ¥Æ¥£¤¬Êѹ¹¤µ¤ì¤¿¾ì¹ç¤³¤Î¥Æ¥
552 ¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¼è¤ê½ü¤«¤ì¤ë¡£*/
553 MTEXTPROP_VOLATILE_STRONG = 0x08,
555 /***en If this flag bit is on, the text property is not
556 automatically merged with the others. */
557 /***ja ¤³¤Î¥Ó¥Ã¥È¤¬ on ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¾¤Î¥×¥í¥Ñ
558 ¥Æ¥£¤È¼«Æ°Åª¤Ë¤Ï¥Þ¡¼¥¸¤µ¤ì¤Ê¤¤¡£ */
559 MTEXTPROP_NO_MERGE = 0x10,
561 MTEXTPROP_CONTROL_MAX = 0x1F
565 extern MSymbol Mtext_prop_serializer;
566 extern MSymbol Mtext_prop_deserializer;
569 /*** @ingroup m17nTextProperty */
571 @brief Type of serializer functions.
573 This is the type of serializer functions. If the key of a symbol
574 property is #Msymbol_prop_serializer, the value must be of this
578 mtext_prop_serialize (), Mtext_prop_serializer
581 @brief ¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤Î·¿Àë¸À.
583 ¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤Î·¿¤Ç¤¢¤ë¡£ ¤¢¤ë¥·¥ó¥Ü¥ë¤Î¥×¥í¥Ñ¥Æ¥£¤Î¥¡¼¤¬ @c
584 #Msymbol_prop_serializer ¤Ç¤¢¤ë¤È¤¡¢ ÃͤϤ³¤Î·¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
587 Mtext_prop_serialize (), Mtext_prop_serializer
590 typedef MPlist *(*MTextPropSerializeFunc) (void *val);
592 /*** @ingroup m17nTextProperty */
594 @brief Type of deserializer functions.
596 This is the type of deserializer functions. If the key of a
597 symbol property is #Msymbol_prop_deserializer, the value must be
601 Mtext_prop_deserialize (), Mtext_prop_deserializer
604 @brief ¥Ç¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤Î·¿Àë¸À.
606 ¥Ç¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤Î·¿¤Ç¤¢¤ë¡£ ¤¢¤ë¥·¥ó¥Ü¥ë¤Î¥×¥í¥Ñ¥Æ¥£¤Î¥¡¼¤¬ @c
607 #Msymbol_prop_deserializer ¤Ç¤¢¤ë¤È¤¡¢ ÃͤϤ³¤Î·¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
610 Mtext_prop_deserialize (), Mtext_prop_deserializer
612 typedef void *(*MTextPropDeserializeFunc) (MPlist *plist);
614 extern void *mtext_get_prop (MText *mt, int pos, MSymbol key);
616 extern int mtext_get_prop_values (MText *mt, int pos, MSymbol key,
617 void **values, int num);
619 extern int mtext_get_prop_keys (MText *mt, int pos, MSymbol **keys);
621 extern int mtext_put_prop (MText *mt, int from, int to,
622 MSymbol key, void *val);
624 extern int mtext_put_prop_values (MText *mt, int from, int to,
625 MSymbol key, void **values, int num);
627 extern int mtext_push_prop (MText *mt, int from, int to,
628 MSymbol key, void *val);
630 extern int mtext_pop_prop (MText *mt, int from, int to,
633 extern int mtext_prop_range (MText *mt, MSymbol key, int pos,
634 int *from, int *to, int deeper);
638 @ingroup m17nTextProperty */
640 @brief Type of text properties.
642 The type #MTextProperty is for a @e text @e property objects. Its
643 internal structure is concealed from application programs. */
645 @brief @c ¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Î·¿Àë¸À.
647 #MTextProperty ¤Ï @e ¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£ ¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£
648 ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */
650 typedef struct MTextProperty MTextProperty;
654 extern MTextProperty *mtext_property (MSymbol key, void *val,
657 extern MText *mtext_property_mtext (MTextProperty *prop);
659 extern MSymbol mtext_property_key (MTextProperty *prop);
661 extern void *mtext_property_value (MTextProperty *prop);
663 extern int mtext_property_start (MTextProperty *prop);
665 extern int mtext_property_end (MTextProperty *prop);
667 extern MTextProperty *mtext_get_property (MText *mt, int pos, MSymbol key);
669 extern int mtext_get_properties (MText *mt, int pos, MSymbol key,
670 MTextProperty **props, int num);
672 extern int mtext_attach_property (MText *mt, int from, int to,
673 MTextProperty *prop);
675 extern int mtext_detach_property (MTextProperty *prop);
677 extern int mtext_push_property (MText *mt, int from, int to,
678 MTextProperty *prop);
680 extern MText *mtext_serialize (MText *mt, int from, int to,
681 MPlist *property_list);
683 extern MText *mtext_deserialize (MText *mt);
689 #endif /* _M17N_CORE_H_ */