*** empty log message ***
[m17n/m17n-lib.git] / src / m17n-core.h
index f401456..413c1ed 100644 (file)
@@ -38,17 +38,52 @@ extern "C"
 /***ja @defgroup m17nIntro ¤Ï¤¸¤á¤Ë  */
 /*=*/
 
+#if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
+
 #define M17NLIB_MAJOR_VERSION 1
-#define M17NLIB_MINOR_VERSION 0
-#define M17NLIB_VERSION_NAME "1.0"
+#define M17NLIB_MINOR_VERSION 3
+#define M17NLIB_PATCH_LEVEL 0
+#define M17NLIB_VERSION_NAME "1.3.0"
 
 extern void m17n_init_core (void);
 #define M17N_INIT() m17n_init_core ()
 extern void m17n_fini_core (void);
 #define M17N_FINI() m17n_fini_core ()
 
+#endif
+
+/*=*/
+
+/*** @ingroup m17nIntro */
+/***en
+    @brief Enumeration for the status of the m17n library.
+
+    The enum #M17NStatus is used as a return value of the function
+    m17n_status ().  */
+
+/***ja
+    @brief  m17n ¥é¥¤¥Ö¥é¥ê¤Î¾õÂÖ¤ò¼¨¤¹Îóµó·¿.
+
+    Îóµó·¿ #M17NStatus ¤Ï´Ø¿ô m17n_status () ¤ÎÌá¤êÃͤȤ·¤ÆÍѤ¤¤é¤ì¤ë¡£ */
+
+enum M17NStatus
+  {
+    /***en No modules is initialized, and all modules are finalized.  */
+    M17N_NOT_INITIALIZED, 
+    /***en Only the modules in CORE API are initialized.  */
+    M17N_CORE_INITIALIZED,
+    /***en Only the modules in CORE and SHELL APIs are initialized.  */
+    M17N_SHELL_INITIALIZED, 
+    /***en All modules are initialized.  */
+    M17N_GUI_INITIALIZED
+  };
+
+/*=*/
+
+extern enum M17NStatus m17n_status (void);
+
 /***en @defgroup m17nCore CORE API  */
-/***ja @defgroup m17nCore CORE API */
+/***ja @defgroup m17nCore ¥³¥¢ API */
 /*=*/
 /*** @ingroup m17nCore */
 /***en @defgroup m17nObject Managed Object */
@@ -63,6 +98,13 @@ extern void m17n_fini_core (void);
     objects, its first member must be of the type @c struct
     #M17NObjectHead.  Its contents are used by the m17n library, and
     application programs should never touch them.  */
+/***ja
+    @brief ´ÉÍý²¼¥ª¥Ö¥¸¥§¥¯¥È¤ÎºÇ½é¤Î¥á¥ó¥Ð.
+
+    ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¿·¤·¤¤¹½Â¤ÂΤò´ÉÍý²¼¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤ÆÄêµÁ¤¹¤ëºÝ¤Ë¤Ï¡¢ºÇ½é¤Î¥á¥ó¥Ð¤Ï 
+    @c #M17NObjectHead ¹½Â¤Âη¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
+    @c #M17NObjectHead ¤ÎÆâÍƤϠm17n 
+    ¥é¥¤¥Ö¥é¥ê¤¬»ÈÍѤ¹¤ë¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¿¨¤ì¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£    */
 
 typedef struct
 {
@@ -72,7 +114,7 @@ typedef struct
 /*=*/
 
 /* Return a newly allocated managed object.  */
-extern void *m17n_object_setup (int size, void (*freer) (void *));
+extern void *m17n_object (int size, void (*freer) (void *));
 
 /* Increment the reference count of managed object OBJECT.  */
 extern int m17n_object_ref (void *object);
@@ -98,11 +140,12 @@ extern int m17n_object_unref (void *object);
     structure is concealed from application programs.  */
 
 /***ja
-    @brief ¥·¥ó¥Ü¥ë¤Î·¿
+    @brief ¥·¥ó¥Ü¥ë¤Î·¿Àë¸À.
 
-    #MSymbol ¤Ï¥·¥ó¥Ü¥ë¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ */
+    #MSymbol ¤Ï @e ¥·¥ó¥Ü¥ë (symbol) ¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£
+    ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£  */
 
-typedef struct MSymbol *MSymbol;
+typedef struct MSymbolStruct *MSymbol;
 
 /*=*/
 
@@ -119,6 +162,9 @@ extern MSymbol msymbol (const char *name);
 /* Return a managing key of name NAME.  */
 extern MSymbol msymbol_as_managing_key (const char *name);
 
+/* Check if SYMBOL is a managing key.  */
+extern int msymbol_is_managing_key (MSymbol symbol);
+
 /* Return a symbol of name NAME if it already exists.  */
 extern MSymbol msymbol_exist (const char *name);
 
@@ -134,10 +180,10 @@ extern void *msymbol_get (MSymbol symbol, MSymbol key);
 /* 
  *  (2-1) Property List
  */
-
+/*=*/
 /*** @ingroup m17nCore */
 /***en @defgroup m17nPlist Property List */
-/***ja @defgroup m17nPlist ¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È */
+/***ja @defgroup m17nPlist ¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È */
 /*=*/
 
 /***
@@ -145,9 +191,15 @@ extern void *msymbol_get (MSymbol symbol, MSymbol key);
 /***en
     @brief Type of property list objects.
 
-    The type #MPlist is for a property list object.  Its internal
+    The type #MPlist is for a @e property @e list object.  Its internal
     structure is concealed from application programs.  */
 
+/***ja
+    @brief ¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿Àë¸À.
+
+    #MPlist ¤Ï @e ¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È (Property list) ¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£
+    ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£  */
+
 typedef struct MPlist MPlist;
 
 /*=*/
@@ -190,8 +242,10 @@ extern void *mplist_value (MPlist *plist);
 /***ja @defgroup m17nCharacter Ê¸»ú */
 /*=*/
 
+#if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
 #define MCHAR_MAX 0x3FFFFF
 /*#define MCHAR_MAX 0x7FFFFFFF*/
+#endif
 
 extern MSymbol Mscript;
 extern MSymbol Mname;
@@ -201,7 +255,7 @@ extern MSymbol Mbidi_category;
 extern MSymbol Msimple_case_folding;
 extern MSymbol Mcomplicated_case_folding;
 
-extern MSymbol mchar_define_property (char *name, MSymbol type);
+extern MSymbol mchar_define_property (const char *name, MSymbol type);
 
 extern void *mchar_get_prop (int c, MSymbol key);
 
@@ -224,9 +278,9 @@ extern MSymbol Mchar_table;
     internal structure is concealed from application programs.  */
 
 /***ja
-    @brief Ê¸»ú¥Æ¡¼¥Ö¥ë¤Î·¿
+    @brief Ê¸»ú¥Æ¡¼¥Ö¥ë¤Î·¿Àë¸À.
 
-    #MCharTable ·¿¤Ï @e Ê¸»ú¥Æ¡¼¥Ö¥ë ¥ª¥Ö¥¸¥§¥¯¥ÈÍѤι½Â¤ÂΤǤ¢¤ë¡£
+    #MCharTable ¤Ï @e Ê¸»ú¥Æ¡¼¥Ö¥ë (chartable) ¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£
     ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£  */
 
 typedef struct MCharTable MCharTable;
@@ -242,8 +296,7 @@ extern int mchartable_set_range (MCharTable *table, int from, int to,
                                 void *val);
 
 extern int mchartable_map (MCharTable *table, void *ignore,
-                          void (*func) (int from, int to,
-                                        void *val, void *arg), 
+                          void (*func) (int, int, void *, void *), 
                           void *func_arg);
 
 extern void mchartable_range (MCharTable *table, int *from, int *to);
@@ -264,7 +317,7 @@ extern void mchartable_range (MCharTable *table, int *from, int *to);
 /*
  * (5-1) M-text basics
  */
-
+/*=*/
 /*** @ingroup m17nMtext */
 /***en
     @brief Type of @e M-texts.
@@ -273,10 +326,10 @@ extern void mchartable_range (MCharTable *table, int *from, int *to);
     structure is concealed from application programs.  */
 
 /***ja
-    @brief @e MText Íѹ½Â¤ÂΠ
+    @brief @e MText ¤Î·¿Àë¸À.
 
-    #Mtext ¹½Â¤ÂΤϠ@e M-text ¥ª¥Ö¥¸¥§¥¯¥È¤ËÍѤ¤¤é¤ì¤ë¡£ÆâÉô¹½Â¤¤Ï¥¢
-    ¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£
+    #Mtext ¤Ï @e M-text ¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£
+    ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ 
 
     @latexonly \IPAlabel{MText} @endlatexonly
     @latexonly \IPAlabel{MText->MPlist} @endlatexonly  */
@@ -285,10 +338,7 @@ typedef struct MText MText;
 
 /*=*/
 
-extern MText *mtext ();
-
-/*=*/
-
+/*** @ingroup m17nMtext */
 /***en
     @brief Enumeration for specifying the format of an M-text.
 
@@ -296,6 +346,13 @@ extern MText *mtext ();
     mtext_from_data () function to specify the format of data from
     which an M-text is created.  */
 
+/***ja
+    @brief M-text ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ØÄꤹ¤ëÎóµó·¿.
+
+    Îóµó·¿ #MTextFormat ¤Ï´Ø¿ô
+    mtext_from_data () ¤Î°ú¿ô¤È¤·¤ÆÍѤ¤¤é¤ì¡¢
+    M-text ¤òÀ¸À®¤¹¤ë¸µ¤È¤Ê¤ë¥Ç¡¼¥¿¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ØÄꤹ¤ë¡£  */
+
 enum MTextFormat
   {
     MTEXT_FORMAT_US_ASCII,
@@ -308,12 +365,79 @@ enum MTextFormat
   };
 /*=*/
 
-extern MText *mtext_from_data (void *data, int nitems,
-                              enum MTextFormat format);
+extern MText *mtext ();
+
+extern void *mtext_data (MText *mt, enum MTextFormat *fmt, int *nunits,
+                        int *pos_idx, int *unit_idx);
 
+/*=*/
 
+/***en @name Variables: Default Endian of UTF-16 and UTF-32 */
+/***ja @name ÊÑ¿ô: UTF-16 ¤È UTF-32 ¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥¨¥ó¥Ç¥£¥¢¥ó */
+/*** @{ */
 /*=*/
 
+/*** @ingroup m17nMtext */
+/***en
+    @brief Variable of value MTEXT_FORMAT_UTF_16LE or MTEXT_FORMAT_UTF_16BE.
+
+    The global variable #MTEXT_FORMAT_UTF_16 is initialized to
+    #MTEXT_FORMAT_UTF_16LE on a "Little Endian" system (storing words
+    with the least significant byte first), and to
+    #MTEXT_FORMAT_UTF_16BE on a "Big Endian" system (storing words
+    with the most significant byte first).  */
+
+/***ja
+    @brief Ãͤ¬ MTEXT_FORMAT_UTF_16LE ¤« MTEXT_FORMAT_UTF_16BE ¤Ç¤¢¤ëÊÑ¿ô
+
+    Âç°èÊÑ¿ô #MTEXT_FORMAT_UTF_16 ¤Ï¥ê¥È¥ë¡¦¥¨¥ó¥Ç¥£¥¢¥ó¡¦¥·¥¹¥Æ¥à
+    ¡Ê¥ï¡¼¥É¤ò LSB (Least Significant Byte) ¤òÀè¤Ë¤·¤Æ³ÊǼ¡Ë¾å¤Ç¤Ï
+    #MTEXT_FORMAT_UTF_16LE ¤Ë½é´ü²½¤µ¤ì¡¢¥Ó¥Ã¥°¡¦¥¨¥ó¥Ç¥£¥¢¥ó¡¦¥·¥¹¥Æ¥à
+    ¡Ê¥ï¡¼¥É¤ò MSB (Most Significant Byte) ¤òÀè¤Ë¤·¤Æ³ÊǼ¡Ë¾å¤Ç¤Ï
+    #MTEXT_FORMAT_UTF_16BE ¤Ë½é´ü²½¤µ¤ì¤ë¡£  */
+
+/***
+    @seealso
+    mtext_from_data ()  */
+
+extern const enum MTextFormat MTEXT_FORMAT_UTF_16;
+/*=*/
+
+/*** @ingroup m17nMtext */
+/***en
+    @brief Variable of value MTEXT_FORMAT_UTF_32LE or MTEXT_FORMAT_UTF_32BE.
+
+    The global variable #MTEXT_FORMAT_UTF_32 is initialized to
+    #MTEXT_FORMAT_UTF_32LE on a "Little Endian" system (storing words
+    with the least significant byte first), and to
+    #MTEXT_FORMAT_UTF_32BE on a "Big Endian" system (storing
+    words with the most significant byte first).  */
+
+/***ja
+    @brief Ãͤ¬ MTEXT_FORMAT_UTF_32LE ¤« MTEXT_FORMAT_UTF_32BE ¤Ç¤¢¤ëÊÑ¿ô
+
+    Âç°èÊÑ¿ô #MTEXT_FORMAT_UTF_32 ¤Ï¥ê¥È¥ë¡¦¥¨¥ó¥Ç¥£¥¢¥ó¡¦¥·¥¹¥Æ¥à
+    ¡Ê¥ï¡¼¥É¤ò LSB (Least Significant Byte) ¤òÀè¤Ë¤·¤Æ³ÊǼ¡Ë¾å¤Ç¤Ï
+    #MTEXT_FORMAT_UTF_32LE ¤Ë½é´ü²½¤µ¤ì¡¢¥Ó¥Ã¥°¡¦¥¨¥ó¥Ç¥£¥¢¥ó¡¦¥·¥¹¥Æ¥à
+    ¡Ê¥ï¡¼¥É¤ò MSB (Most Significant Byte) ¤òÀè¤Ë¤·¤Æ³ÊǼ¡Ë¾å¤Ç¤Ï
+    #MTEXT_FORMAT_UTF_32BE ¤Ë½é´ü²½¤µ¤ì¤ë¡£  */
+
+/***
+    @seealso
+    mtext_from_data ()  */
+
+extern const int MTEXT_FORMAT_UTF_32;
+
+/*=*/
+/*** @} */
+/*=*/
+
+extern MText *mtext_from_data (const void *data, int nitems,
+                              enum MTextFormat format);
+
+/*=*/
+/*** @} */
+
 /*
  *  (5-2) Functions to manipulate M-texts.  They correspond to string
  *   manipulating functions in libc.
@@ -380,10 +504,13 @@ extern int mtext_casecmp (MText *mt1, MText *mt2);
 
 extern int mtext_ncasecmp (MText *mt1, MText *mt2, int n);
 
+/*** @ingroup m17nPlist */
+extern MPlist *mplist_deserialize (MText *mt);
+
 /*
  * (5-3) Text properties
  */
-
+/*=*/
 /*** @ingroup m17nCore */
 /***en @defgroup m17nTextProperty Text Property */
 /***ja @defgroup m17nTextProperty ¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£ */
@@ -397,28 +524,46 @@ extern int mtext_ncasecmp (MText *mt1, MText *mt2, int n);
     text property as described in the documentation of each flag
     bit.  */
 
+/***ja
+    @brief ¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤òÀ©¸æ¤¹¤ë¥Õ¥é¥°¥Ó¥Ã¥È.
+
+    ´Ø¿ô mtext_property () ¤Ï°Ê²¼¤Î¥Õ¥é¥°¥Ó¥Ã¥È¤ÎÏÀÍý
+    OR ¤ò°ú¿ô¤È¤·¤Æ¤È¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
+    ¥Õ¥é¥°¥Ó¥Ã¥È¤ÏÀ¸À®¤µ¤ì¤¿¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Î¿¶Éñ¤¤¤òÀ©¸æ¤¹¤ë¡£
+    ¾ÜºÙ¤Ï³Æ¥Õ¥é¥°¥Ó¥Ã¥È¤ÎÀâÌÀ¤ò»²¾È¡£*/
+
 enum MTextPropertyControl
   {
     /***en If this flag bit is on, an M-text inserted at the start
        position or at the middle of the text property inherits the
        text property.  */
+    /***ja ¤³¤Î¥Ó¥Ã¥È¤¬ on ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Î»Ï¤Þ¤ëÅÀ¤¢¤ë¤¤¤ÏÃæ´Ö¤ËÁÞÆþ¤µ¤ì¤¿
+       M-text ¤Ï¤³¤Î¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò·Ñ¾µ¤¹¤ë¡£
+       */
     MTEXTPROP_FRONT_STICKY = 0x01,
 
     /***en If this flag bit is on, an M-text inserted at the end
        position or at the middle of the text property inherits the
        text property.  */
+    /***ja ¤³¤Î¥Ó¥Ã¥È¤¬ on ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Î½ª¤ï¤ëÅÀ¤¢¤ë¤¤¤ÏÃæ´Ö¤ËÁÞÆþ¤µ¤ì¤¿
+       M-text ¤Ï¤³¤Î¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò·Ñ¾µ¤¹¤ë¡£
+       */
     MTEXTPROP_REAR_STICKY = 0x02,
 
     /***en If this flag bit is on, the text property is removed if a
        text in its region is modified.  */
+    /***ja ¤³¤Î¥Ó¥Ã¥È¤¬ on ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ÎÈÏ°ÏÆâ¤Î¥Æ¥­¥¹¥È¤¬Êѹ¹¤µ¤ì¤¿¾ì¹ç¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¼è¤ê½ü¤«¤ì¤ë¡£  */
     MTEXTPROP_VOLATILE_WEAK = 0x04,
 
     /***en If this flag bit is on, the text property is removed if a
        text or the other text property in its region is modified.  */
+    /***ja ¤³¤Î¥Ó¥Ã¥È¤¬ on ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ÎÈÏ°ÏÆâ¤Î¥Æ¥­¥¹¥È¤¢¤ë¤¤¤ÏÊ̤Υƥ­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤¬Êѹ¹¤µ¤ì¤¿¾ì¹ç¤³¤Î¥Æ¥­
+       ¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¼è¤ê½ü¤«¤ì¤ë¡£*/
     MTEXTPROP_VOLATILE_STRONG = 0x08,
 
     /***en If this flag bit is on, the text property is not
        automatically merged with the others.  */
+    /***ja ¤³¤Î¥Ó¥Ã¥È¤¬ on ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¾¤Î¥×¥í¥Ñ¥Æ¥£¤È¼«Æ°Åª¤Ë¤Ï¥Þ¡¼¥¸¤µ¤ì¤Ê¤¤¡£ */
     MTEXTPROP_NO_MERGE = 0x10,
 
     MTEXTPROP_CONTROL_MAX = 0x1F
@@ -434,10 +579,20 @@ extern MSymbol Mtext_prop_deserializer;
     @brief Type of serializer functions.
 
     This is the type of serializer functions.  If the key of a symbol
-    property is #Msymbol_prop_serializer, the value must be of this
+    property is #Mtext_prop_serializer, the value must be of this
     type.
 
-    @seealso Mtext_prop_serialize (), Mtext_prop_serializer
+    @seealso
+    mtext_serialize (), #Mtext_prop_serializer
+*/
+/***ja
+    @brief ¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤Î·¿Àë¸À.
+
+    ¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤Î·¿¤Ç¤¢¤ë¡£ ¤¢¤ë¥·¥ó¥Ü¥ë¤Î¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤¬ @c
+    #Mtext_prop_serializer ¤Ç¤¢¤ë¤È¤­¡¢ ÃͤϤ³¤Î·¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
+
+    @seealso
+    mtext_serialize (), #Mtext_prop_serializer
 */
 
 typedef MPlist *(*MTextPropSerializeFunc) (void *val);
@@ -447,10 +602,20 @@ typedef MPlist *(*MTextPropSerializeFunc) (void *val);
     @brief Type of deserializer functions.
 
     This is the type of deserializer functions.  If the key of a
-    symbol property is #Msymbol_prop_deserializer, the value must be
-    of this type.
+    symbol property is #Mtext_prop_deserializer, the value must be of
+    this type.
 
-    @seealso Mtext_prop_deserialize (), Mtext_prop_deserializer
+    @seealso
+    mtext_deserialize (), #Mtext_prop_deserializer
+*/
+/***ja
+    @brief ¥Ç¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤Î·¿Àë¸À.
+
+    ¥Ç¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤Î·¿¤Ç¤¢¤ë¡£ ¤¢¤ë¥·¥ó¥Ü¥ë¤Î¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤¬ @c
+    #Msymbol_prop_deserializer ¤Ç¤¢¤ë¤È¤­¡¢ ÃͤϤ³¤Î·¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
+
+    @seealso
+    Mtext_prop_deserialize (), Mtext_prop_deserializer
 */
 typedef void *(*MTextPropDeserializeFunc) (MPlist *plist);
 
@@ -473,14 +638,23 @@ extern int mtext_push_prop (MText *mt, int from, int to,
 extern int mtext_pop_prop (MText *mt, int from, int to,
                           MSymbol key);
 
-extern int mtext_change_prop (MText *mt, int from, int to,
-                             MSymbol key,
-                             int (*func) (int, void ***, int *));
-
 extern int mtext_prop_range (MText *mt, MSymbol key, int pos,
                             int *from, int *to, int deeper);
 
 /*=*/
+/***
+    @ingroup m17nTextProperty */
+/***en
+    @brief Type of text properties.
+
+    The type #MTextProperty is for a @e text @e property objects.  Its
+    internal structure is concealed from application programs.  */
+/***ja
+    @brief @c ¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Î·¿Àë¸À.
+
+    #MTextProperty ¤Ï @e ¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£ ¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£
+    ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£  */
+
 typedef struct MTextProperty MTextProperty;
 
 /*=*/