mirror of
https://github.com/mdbtools/mdbtools.git
synced 2026-02-25 13:13:06 +08:00
Move backend dictionary and state to MdbHandle
Attempt to make the backend handling logic thread-safe. This removes the last MDB_CONSTRUCTOR. Also get rid of some JAVA junk and make the remaining static variables in backend.c constant. Finally remove some obsolete fields from MdbFile.
This commit is contained in:
@@ -56,10 +56,9 @@
|
||||
#define MDB_MEMO_OVERHEAD 12
|
||||
#define MDB_BIND_SIZE 16384
|
||||
|
||||
// Theses 2 atrbutes are not supported by all compilers:
|
||||
// This attribute is not supported by all compilers:
|
||||
// M$VC see http://stackoverflow.com/questions/1113409/attribute-constructor-equivalent-in-vc
|
||||
#define MDB_DEPRECATED(type, funcname) type __attribute__((deprecated)) funcname
|
||||
#define MDB_CONSTRUCTOR(funcname) void __attribute__((constructor)) funcname(void)
|
||||
|
||||
enum {
|
||||
MDB_PAGE_DB = 0,
|
||||
@@ -207,9 +206,9 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
guint32 capabilities; /* see MDB_SHEXP_* */
|
||||
MdbBackendType *types_table;
|
||||
MdbBackendType *type_shortdate;
|
||||
MdbBackendType *type_autonum;
|
||||
const MdbBackendType *types_table;
|
||||
const MdbBackendType *type_shortdate;
|
||||
const MdbBackendType *type_autonum;
|
||||
const char *short_now;
|
||||
const char *long_now;
|
||||
const char *charset_statement;
|
||||
@@ -232,8 +231,6 @@ typedef struct {
|
||||
guint32 jet_version;
|
||||
guint32 db_key;
|
||||
char db_passwd[14];
|
||||
MdbBackend *default_backend;
|
||||
char *backend_name;
|
||||
MdbStatistics *stats;
|
||||
/* free map */
|
||||
int map_sz;
|
||||
@@ -275,11 +272,13 @@ typedef struct {
|
||||
GPtrArray *catalog;
|
||||
MdbBackend *default_backend;
|
||||
char *backend_name;
|
||||
int backend_is_init;
|
||||
MdbFormatConstants *fmt;
|
||||
MdbStatistics *stats;
|
||||
char date_fmt[64];
|
||||
const char *boolean_false_value;
|
||||
const char *boolean_true_value;
|
||||
GHashTable *backends;
|
||||
#ifdef HAVE_ICONV
|
||||
iconv_t iconv_in;
|
||||
iconv_t iconv_out;
|
||||
@@ -520,12 +519,12 @@ void mdb_buffer_dump(const void *buf, off_t start, size_t len);
|
||||
/* backend.c */
|
||||
MDB_DEPRECATED(char*, mdb_get_coltype_string(MdbBackend *backend, int col_type));
|
||||
MDB_DEPRECATED(int, mdb_coltype_takes_length(MdbBackend *backend, int col_type));
|
||||
void mdb_init_backends(MdbHandle *mdb);
|
||||
void mdb_remove_backends(MdbHandle *mdb);
|
||||
const MdbBackendType* mdb_get_colbacktype(const MdbColumn *col);
|
||||
const char* mdb_get_colbacktype_string(const MdbColumn *col);
|
||||
int mdb_colbacktype_takes_length(const MdbColumn *col);
|
||||
MDB_DEPRECATED(void, mdb_init_backends(void));
|
||||
void mdb_register_backend(char *backend_name, guint32 capabilities, MdbBackendType *backend_type, MdbBackendType *type_shortdate, MdbBackendType *type_autonum, const char *short_now, const char *long_now, const char *charset_statement, const char *drop_statement, const char *constaint_not_empty_statement, const char *column_comment_statement, const char *table_comment_statement, gchar* (*quote_schema_name)(const gchar*, const gchar*));
|
||||
MDB_DEPRECATED(void, mdb_remove_backends(void));
|
||||
void mdb_register_backend(MdbHandle *mdb, char *backend_name, guint32 capabilities, const MdbBackendType *backend_type, const MdbBackendType *type_shortdate, const MdbBackendType *type_autonum, const char *short_now, const char *long_now, const char *charset_statement, const char *drop_statement, const char *constaint_not_empty_statement, const char *column_comment_statement, const char *table_comment_statement, gchar* (*quote_schema_name)(const gchar*, const gchar*));
|
||||
int mdb_set_default_backend(MdbHandle *mdb, const char *backend_name);
|
||||
void mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace, guint32 export_options);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user