/* m17n-core.h -- header file for the CORE API of the m17n library.
- Copyright (C) 2003, 2004, 2005, 2006
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H15PRO112
You should have received a copy of the GNU Lesser General Public
License along with the m17n library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
02111-1307, USA. */
#ifndef _M17N_CORE_H_
#define _M17N_CORE_H_
#ifdef __cplusplus
-extern "C"
-{
+#define M17N_BEGIN_HEADER extern "C" {
+#define M17N_END_HEADER }
+#else
+#define M17N_BEGIN_HEADER /* do nothing */
+#define M17N_END_HEADER /* do nothing */
#endif
+M17N_BEGIN_HEADER
+
/*
* Header file for m17n library.
*/
#if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
#define M17NLIB_MAJOR_VERSION 1
-#define M17NLIB_MINOR_VERSION 3
-#define M17NLIB_PATCH_LEVEL 3
-#define M17NLIB_VERSION_NAME "1.3.3"
+#define M17NLIB_MINOR_VERSION 6
+#define M17NLIB_PATCH_LEVEL 1
+#define M17NLIB_VERSION_NAME "1.6.1"
extern void m17n_init_core (void);
#define M17N_INIT() m17n_init_core ()
extern void m17n_fini_core (void);
#define M17N_FINI() m17n_fini_core ()
+extern int merror_code;
+
#endif
/*=*/
extern enum M17NStatus m17n_status (void);
-/***en @defgroup m17nCore CORE API */
-/***ja @defgroup m17nCore ¥³¥¢ API */
+/***en @defgroup m17nCore CORE API
+ @brief API provided by libm17n-core.so */
+/***ja @defgroup m17nCore ¥³¥¢ API
+ @brief libm17n-core.so ¤¬Ä󶡤¹¤ë API */
/*=*/
/*** @ingroup m17nCore */
-/***en @defgroup m17nObject Managed Object */
-/***ja @defgroup m17nObject ´ÉÍý²¼¥ª¥Ö¥¸¥§¥¯¥È */
+/***en @defgroup m17nObject Managed Object
+ @brief Objects managed by the reference count */
+/***ja @defgroup m17nObject ´ÉÍý²¼¥ª¥Ö¥¸¥§¥¯¥È
+ @brief »²¾È²ó¿ô¤Ç´ÉÍý¤µ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È */
/*=*/
/*** @ingroup m17nObject */
typedef struct
{
+ /*** Hidden from applications. */
void *filler[2];
} M17NObjectHead;
/* Decrement the reference count of managed object OBJECT. */
extern int m17n_object_unref (void *object);
+/*** @ingroup m17nCore */
+/***en
+ @brief Generic function type.
+
+ #M17NFunc is a generic function type for setting a function
+ pointer as a value of #MSymbol property or #MPlist. */
+
+/***ja
+ @brief ÈÆ´Ø¿ô·¿.
+
+ #M17NFunc ¤ÏÈÆ´Ø¿ô·¿¤Ç¤¢¤ê¡¢´Ø¿ô¥Ý¥¤¥ó¥¿¤ò #MSymbol ¥×¥í¥Ñ¥Æ¥£¤ä
+ #MPlist ¤ÎÃͤȤ·¤ÆÀßÄꤹ¤ëºÝÍѤ¤¤ë¡£ */
+
+
+/***
+ @seealso
+ msymbol_put_func (), msymbol_get_func (),
+ mplist_put_func (), mplist_get_func (). */
+
+typedef void (*M17NFunc) (void);
+
+/*=*/
+
+/*** @ingroup m17nCore */
+/***en
+ @brief Wrapper for a generic function type.
+
+ The macro M17N_FUNC () casts a function to the type #M17NFunc. */
+
+/***ja
+ @brief ÈÆ´Ø¿ô·¿¤Ø¤Î¥é¥Ã¥Ñ.
+
+ ¥Þ¥¯¥í M17N_FUNC () ¤Ï´Ø¿ô¤ò #M17NFunc ·¿¤Ø¥¥ã¥¹¥È¤¹¤ë¡£ */
+
+
+#define M17N_FUNC(func) ((M17NFunc) (func))
+
/*=*/
/* (C2) Symbol handling */
extern MSymbol Mstring;
extern MSymbol Msymbol;
extern MSymbol Mtext;
+extern MSymbol Mcharset;
/* Return a symbol of name NAME. */
extern MSymbol msymbol (const char *name);
/*** Return KEY property value of SYMBOL. */
extern void *msymbol_get (MSymbol symbol, MSymbol key);
+extern int msymbol_put_func (MSymbol symbol, MSymbol key, M17NFunc func);
+
+extern M17NFunc msymbol_get_func (MSymbol symbol, MSymbol key);
+
/*
* (2-1) Property List
*/
extern void *mplist_get (MPlist *plist, MSymbol key);
+extern MPlist *mplist_put_func (MPlist *plist, MSymbol key, M17NFunc func);
+
+extern M17NFunc mplist_get_func (MPlist *plist, MSymbol key);
+
extern MPlist *mplist_find_by_key (MPlist *plist, MSymbol key);
extern MPlist *mplist_find_by_value (MPlist *plist, void *val);
extern MSymbol Mbidi_category;
extern MSymbol Msimple_case_folding;
extern MSymbol Mcomplicated_case_folding;
+extern MSymbol Mcased, Msoft_dotted, Mcase_mapping;
+extern MSymbol Mblock;
extern MSymbol mchar_define_property (const char *name, MSymbol type);
extern MCharTable *mchartable (MSymbol key, void *default_value);
+extern int mchartable_min_char (MCharTable *table);
+
+extern int mchartable_max_char (MCharTable *table);
+
extern void *mchartable_lookup (MCharTable *table, int c);
extern int mchartable_set (MCharTable *table, int c, void *val);
enum MTextFormat
{
+ /*** US-ASCII encoding */
MTEXT_FORMAT_US_ASCII,
+ /*** UTF-8 encoding */
MTEXT_FORMAT_UTF_8,
+ /*** UTF-16LE encoding */
MTEXT_FORMAT_UTF_16LE,
+ /*** UTF-16BE encoding */
MTEXT_FORMAT_UTF_16BE,
+ /*** UTF-32LE encoding */
MTEXT_FORMAT_UTF_32LE,
+ /*** UTF-32BE encoding */
MTEXT_FORMAT_UTF_32BE,
MTEXT_FORMAT_MAX
};
/*=*/
/*** @} */
+extern MSymbol Mlanguage;
+
/*
* (5-2) Functions to manipulate M-texts. They correspond to string
* manipulating functions in libc.
extern int mtext_uppercase (MText *mt);
+/*** @ingroup m17nMtext */
/***en
@brief Enumeration for specifying a set of line breaking option.
@brief ¥Ç¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤Î·¿Àë¸À.
¥Ç¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤Î·¿¤Ç¤¢¤ë¡£ ¤¢¤ë¥·¥ó¥Ü¥ë¤Î¥×¥í¥Ñ¥Æ¥£¤Î¥¡¼¤¬ @c
- #Msymbol_prop_deserializer ¤Ç¤¢¤ë¤È¤¡¢ ÃͤϤ³¤Î·¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
+ #Mtext_prop_deserializer ¤Ç¤¢¤ë¤È¤¡¢ ÃͤϤ³¤Î·¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
@seealso
Mtext_prop_deserialize (), Mtext_prop_deserializer
extern MText *mtext_deserialize (MText *mt);
-#ifdef __cplusplus
-}
-#endif
+/*** @ingroup m17nCore */
+/***en @defgroup m17nDatabase Database */
+/***ja @defgroup m17nDatabase ¥Ç¡¼¥¿¥Ù¡¼¥¹ */
+/*=*/
+
+/* Directory of an application specific databases. */
+extern char *mdatabase_dir;
+/*=*/
+/***
+ @ingroup m17nDatabase */
+/***en
+ @brief Type of database.
+
+ The type #MDatabase is for a database object. Its internal
+ structure is concealed from an application program. */
+/***ja
+ @brief ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î·¿Àë¸À.
+
+ #MDatabase ·¿¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¥ª¥Ö¥¸¥§¥¯¥ÈÍѤι½Â¤ÂΤǤ¢¤ë¡£
+ ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£
+ */
+
+typedef struct MDatabase MDatabase;
+
+/*=*/
+
+/* Look for a data. */
+extern MDatabase *mdatabase_find (MSymbol tag1, MSymbol tag2,
+ MSymbol tag3, MSymbol tag4);
+
+extern MPlist *mdatabase_list (MSymbol tag0, MSymbol tag1,
+ MSymbol tag2, MSymbol tag3);
+
+/* Load a data. */
+void *mdatabase_load (MDatabase *mdb);
+
+/* Get tags of a data. */
+extern MSymbol *mdatabase_tag (MDatabase *mdb);
+
+/* Define a data. */
+extern MDatabase *mdatabase_define (MSymbol tag1, MSymbol tag2,
+ MSymbol tag3, MSymbol tag4,
+ void *(*loader) (MSymbol *, void *),
+ void *extra_info);
+
+M17N_END_HEADER
#endif /* _M17N_CORE_H_ */