X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fm17n-core.h;h=3d0880aa703940ec89008466fbd8ee7cec75f55e;hb=9e2820bc75b5631b7b8a34c709f537716299bf0f;hp=365daa63b8622f04927002e46c6f36faeaf80a28;hpb=9d718db2bae980ed99b07d2e97f3bcb3b20a2ba6;p=m17n%2Fm17n-lib.git diff --git a/src/m17n-core.h b/src/m17n-core.h index 365daa6..3d0880a 100644 --- a/src/m17n-core.h +++ b/src/m17n-core.h @@ -38,16 +38,50 @@ extern "C" /***ja @defgroup m17nIntro ¤Ï¤¸¤á¤Ë */ /*=*/ +#if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE) + #define M17NLIB_MAJOR_VERSION 1 -#define M17NLIB_MINOR_VERSION 1 +#define M17NLIB_MINOR_VERSION 2 #define M17NLIB_PATCH_LEVEL 0 -#define M17NLIB_VERSION_NAME "1.1.0" +#define M17NLIB_VERSION_NAME "1.2.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 ¥³¥¢ API */ /*=*/ @@ -67,11 +101,10 @@ extern void m17n_fini_core (void); /***ja @brief ´ÉÍý²¼¥ª¥Ö¥¸¥§¥¯¥È¤ÎºÇ½é¤Î¥á¥ó¥Ð. - ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¿·¤·¤¤¹½Â¤ÂΤò´ÉÍý²¼¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ - ÄêµÁ¤¹¤ëºÝ¤Ë¤Ï¡¢ºÇ½é¤Î¥á¥ó¥Ð¤Ï @c #M17NObjectHead ¹½Â¤Âη¿¤Ç¤Ê¤¯ - ¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£@c #M17NObjectHead ¤ÎÆâÍÆ¤Ï m17n ¥é¥¤¥Ö¥é¥ê¤¬»ÈÍѤ¹ - ¤ë¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¿¨¤ì¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ - */ + ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¿·¤·¤¤¹½Â¤ÂΤò´ÉÍý²¼¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤ÆÄêµÁ¤¹¤ëºÝ¤Ë¤Ï¡¢ºÇ½é¤Î¥á¥ó¥Ð¤Ï + @c #M17NObjectHead ¹½Â¤Âη¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ + @c #M17NObjectHead ¤ÎÆâÍÆ¤Ï m17n + ¥é¥¤¥Ö¥é¥ê¤¬»ÈÍѤ¹¤ë¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¿¨¤ì¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ */ typedef struct { @@ -81,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); @@ -109,8 +142,8 @@ extern int m17n_object_unref (void *object); /***ja @brief ¥·¥ó¥Ü¥ë¤Î·¿Àë¸À. - #MSymbol ¤Ï¥·¥ó¥Ü¥ë¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç - ¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */ + #MSymbol ¤Ï @e ¥·¥ó¥Ü¥ë (symbol) ¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£ + ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */ typedef struct MSymbolStruct *MSymbol; @@ -206,8 +239,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; @@ -258,8 +293,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); @@ -301,10 +335,7 @@ typedef struct MText MText; /*=*/ -extern MText *mtext (); - -/*=*/ - +/*** @ingroup m17nMtext */ /***en @brief Enumeration for specifying the format of an M-text. @@ -315,8 +346,8 @@ extern MText *mtext (); /***ja @brief M-text ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ØÄꤹ¤ëÎóµó·¿. - Îóµó·¿ #MTextFormat ¤Ï - ´Ø¿ô mtext_from_data () ¤Î°ú¿ô¤È¤·¤ÆÍѤ¤¤é¤ì¡¢ + Îóµó·¿ #MTextFormat ¤Ï´Ø¿ô + mtext_from_data () ¤Î°ú¿ô¤È¤·¤ÆÍѤ¤¤é¤ì¡¢ M-text ¤òÀ¸À®¤¹¤ë¸µ¤È¤Ê¤ë¥Ç¡¼¥¿¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ØÄꤹ¤ë¡£ */ enum MTextFormat @@ -331,16 +362,75 @@ enum MTextFormat }; /*=*/ -extern const enum MTextFormat MTEXT_FORMAT_UTF_16; -extern const enum MTextFormat MTEXT_FORMAT_UTF_32; +extern MText *mtext (); + +/*=*/ +/***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 int 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 @@ -431,45 +521,43 @@ extern MPlist *mplist_deserialize (MText *mt); /***ja @brief ¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤òÀ©¸æ¤¹¤ë¥Õ¥é¥°¥Ó¥Ã¥È. - ´Ø¿ô mtext_property () ¤Ï°Ê²¼¤Î¥Õ¥é¥°¥Ó¥Ã¥È¤ÎÏÀÍý OR ¤ò°ú¿ô¤È¤·¤Æ - ¤È¤ë¤³¤È¤¬¤Ç¤­¤ë¡£¥Õ¥é¥°¥Ó¥Ã¥È¤ÏÀ¸À®¤µ¤ì¤¿¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Î¿¶Éñ - ¤¤¤òÀ©¸æ¤¹¤ë¡£¾ÜºÙ¤Ï³Æ¥Õ¥é¥°¥Ó¥Ã¥È¤ÎÀâÌÀ¤ò»²¾È¡£*/ + ´Ø¿ô 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 ¤Ï¤³¤Î¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò·Ñ¾µ¤¹¤ë¡£ + /***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 ¤Ï¤³¤Î¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò·Ñ¾µ¤¹¤ë¡£ + /***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 ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ÎÈÏ°ÏÆâ¤Î - ¥Æ¥­¥¹¥È¤¬Êѹ¹¤µ¤ì¤¿¾ì¹ç¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¼è¤ê½ü¤«¤ì¤ë¡£ */ + /***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 ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ÎÈÏ°ÏÆâ¤Î - ¥Æ¥­¥¹¥È¤¢¤ë¤¤¤ÏÊ̤Υƥ­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤¬Êѹ¹¤µ¤ì¤¿¾ì¹ç¤³¤Î¥Æ¥­ + /***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 ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¾¤Î¥×¥í¥Ñ - ¥Æ¥£¤È¼«Æ°Åª¤Ë¤Ï¥Þ¡¼¥¸¤µ¤ì¤Ê¤¤¡£ */ + /***ja ¤³¤Î¥Ó¥Ã¥È¤¬ on ¤Ê¤é¤Ð¡¢¤³¤Î¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¾¤Î¥×¥í¥Ñ¥Æ¥£¤È¼«Æ°Åª¤Ë¤Ï¥Þ¡¼¥¸¤µ¤ì¤Ê¤¤¡£ */ MTEXTPROP_NO_MERGE = 0x10, MTEXTPROP_CONTROL_MAX = 0x1F @@ -485,18 +573,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 - #Msymbol_prop_serializer ¤Ç¤¢¤ë¤È¤­¡¢ ÃͤϤ³¤Î·¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ + #Mtext_prop_serializer ¤Ç¤¢¤ë¤È¤­¡¢ ÃͤϤ³¤Î·¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ - @seealso Mtext_prop_serialize (), Mtext_prop_serializer + @seealso + mtext_serialize (), #Mtext_prop_serializer */ typedef MPlist *(*MTextPropSerializeFunc) (void *val); @@ -506,10 +596,11 @@ 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 ¥Ç¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤Î·¿Àë¸À. @@ -517,7 +608,8 @@ typedef MPlist *(*MTextPropSerializeFunc) (void *val); ¥Ç¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤Î·¿¤Ç¤¢¤ë¡£ ¤¢¤ë¥·¥ó¥Ü¥ë¤Î¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤¬ @c #Msymbol_prop_deserializer ¤Ç¤¢¤ë¤È¤­¡¢ ÃͤϤ³¤Î·¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ - @seealso Mtext_prop_deserialize (), Mtext_prop_deserializer + @seealso + Mtext_prop_deserialize (), Mtext_prop_deserializer */ typedef void *(*MTextPropDeserializeFunc) (MPlist *plist); @@ -540,14 +632,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; /*=*/