(load_category_table): If mflt_enable_new_feature is
[m17n/m17n-lib.git] / src / database.h
index cafa4d3..bf9e774 100644 (file)
@@ -17,7 +17,7 @@
 
    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_DATABASE_H_
 #define M17NDIR "/usr/local/share/m17n"
 #endif
 
-extern MPlist *mdatabase__dir_list;
+#ifndef PATH_MAX
+#define PATH_MAX 1024
+#endif
+
+#ifndef PATH_SEPARATOR
+#define PATH_SEPARATOR '/'
+#endif
 
-extern MSymbol M_database_hook;
+enum MDatabaseStatus
+  {
+    /* The database was defined automatically (from mdb.dir file(s))
+       with no wildcard tag.  */
+    MDB_STATUS_AUTO,
+    /* The database was defined automatically (from mdb.dir file(s)).
+       with a wildcard tag.  */
+    MDB_STATUS_AUTO_WILDCARD,
+    /* The database was defined explicitely (by mdatabase_define ()). */
+    MDB_STATUS_EXPLICIT,
+    /* The databse is currently disabled. (usually because it is
+       deleted from mdb.dir file(s)).  */
+    MDB_STATUS_DISABLED,
+    MDB_STATUS_UPDATED,
+    MDB_STATUS_OUTDATED
+  };
+
+typedef struct
+{
+  /* Name of the file containing the database.  */
+  char *filename;
+  /* Length of FILENAME.  */
+  int len;
+  /* Absolute path of filename.  */
+  char *absolute_filename;
+  /* The current status of the database.  */
+  enum MDatabaseStatus status;
+  /* When the database was loaded last.  0 if it has never been
+     loaded.  */
+  time_t time;
+  char *lock_file, *uniq_file;
+
+  MPlist *properties;
+} MDatabaseInfo;
+
+extern MPlist *mdatabase__dir_list;
 
-typedef void (*MDatabaseHookFunc) (MSymbol tag0, MSymbol tag1,
-                                  MSymbol tag2, MSymbol tag3);
+extern void mdatabase__update (void);
 
 extern MPlist *mdatabase__load_for_keys (MDatabase *mdb, MPlist *keys);
 
+extern int mdatabase__check (MDatabase *mdb);
+
+extern char *mdatabase__find_file (char *filename);
+
+extern char *mdatabase__file (MDatabase *mdb);
+
+extern int mdatabase__lock (MDatabase *mdb);
+
+extern int mdatabase__save (MDatabase *mdb, MPlist *data);
+
+extern int mdatabase__unlock (MDatabase *mdb);
+
+extern MPlist *mdatabase__props (MDatabase *mdb);
+
+extern void *(*mdatabase__load_charset_func) (FILE *fp, MSymbol charset_name);
+
 #endif /* not _M17N_DATABASE_H_ */