X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fm17n-core.h;h=0e3a0a4e560262b4569e5a4d9f3394d3158d6217;hb=3b29c2be9bc7b339f2d62c0add0f488b55f7126b;hp=56314508800bde7e2121fcf3f380aa74d12ee0f3;hpb=c1a394b00b7c8ca3de2911c23cd553a0b8849055;p=m17n%2Fm17n-lib.git diff --git a/src/m17n-core.h b/src/m17n-core.h index 5631450..0e3a0a4 100644 --- a/src/m17n-core.h +++ b/src/m17n-core.h @@ -38,16 +38,20 @@ 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 */ @@ -97,11 +101,10 @@ extern enum M17NStatus m17n_status (void); /***ja @brief ´ÉÍý²¼¥ª¥Ö¥¸¥§¥¯¥È¤ÎºÇ½é¤Î¥á¥ó¥Ð. - ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¿·¤·¤¤¹½Â¤ÂΤò´ÉÍý²¼¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ - ÄêµÁ¤¹¤ëºÝ¤Ë¤Ï¡¢ºÇ½é¤Î¥á¥ó¥Ð¤Ï @c #M17NObjectHead ¹½Â¤Âη¿¤Ç¤Ê¤¯ - ¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£@c #M17NObjectHead ¤ÎÆâÍÆ¤Ï m17n ¥é¥¤¥Ö¥é¥ê¤¬»ÈÍѤ¹ - ¤ë¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¿¨¤ì¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ - */ + ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¿·¤·¤¤¹½Â¤ÂΤò´ÉÍý²¼¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤ÆÄêµÁ¤¹¤ëºÝ¤Ë¤Ï¡¢ºÇ½é¤Î¥á¥ó¥Ð¤Ï + @c #M17NObjectHead ¹½Â¤Âη¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ + @c #M17NObjectHead ¤ÎÆâÍÆ¤Ï m17n + ¥é¥¤¥Ö¥é¥ê¤¬»ÈÍѤ¹¤ë¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¿¨¤ì¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ */ typedef struct { @@ -111,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); @@ -139,8 +142,8 @@ extern int m17n_object_unref (void *object); /***ja @brief ¥·¥ó¥Ü¥ë¤Î·¿Àë¸À. - #MSymbol ¤Ï¥·¥ó¥Ü¥ë¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç - ¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */ + #MSymbol ¤Ï @e ¥·¥ó¥Ü¥ë (symbol) ¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ç¤¢¤ë¡£ + ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */ typedef struct MSymbolStruct *MSymbol; @@ -159,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); @@ -236,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; @@ -288,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); @@ -331,10 +338,7 @@ typedef struct MText MText; /*=*/ -extern MText *mtext (); - -/*=*/ - +/*** @ingroup m17nMtext */ /***en @brief Enumeration for specifying the format of an M-text. @@ -345,8 +349,8 @@ extern MText *mtext (); /***ja @brief M-text ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ØÄꤹ¤ëÎóµó·¿. - Îóµó·¿ #MTextFormat ¤Ï - ´Ø¿ô mtext_from_data () ¤Î°ú¿ô¤È¤·¤ÆÍѤ¤¤é¤ì¡¢ + Îóµó·¿ #MTextFormat ¤Ï´Ø¿ô + mtext_from_data () ¤Î°ú¿ô¤È¤·¤ÆÍѤ¤¤é¤ì¡¢ M-text ¤òÀ¸À®¤¹¤ë¸µ¤È¤Ê¤ë¥Ç¡¼¥¿¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ØÄꤹ¤ë¡£ */ enum MTextFormat @@ -361,16 +365,78 @@ enum MTextFormat }; /*=*/ +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; -extern const enum MTextFormat MTEXT_FORMAT_UTF_32; +/*=*/ + +/*** @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 @@ -461,45 +527,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 @@ -515,18 +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 - #Msymbol_prop_serializer ¤Ç¤¢¤ë¤È¤­¡¢ ÃͤϤ³¤Î·¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ + #Mtext_prop_serializer ¤Ç¤¢¤ë¤È¤­¡¢ ÃͤϤ³¤Î·¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ - @seealso Mtext_prop_serialize (), Mtext_prop_serializer + @seealso + mtext_serialize (), #Mtext_prop_serializer */ typedef MPlist *(*MTextPropSerializeFunc) (void *val); @@ -536,10 +602,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 ¥Ç¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤Î·¿Àë¸À. @@ -547,7 +614,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); @@ -570,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; /*=*/