extern MSymbol Mstring;
extern MSymbol Msymbol;
extern MSymbol Mtext;
+extern MSymbol Mcharset;
/* Return a symbol of name NAME. */
extern MSymbol msymbol (const char *name);
extern MText *mtext_deserialize (MText *mt);
+/*** @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_ */