diff options
-rw-r--r-- | mg_db.c | 19 | ||||
-rw-r--r-- | mg_db.h | 16 | ||||
-rw-r--r-- | mg_db_gd_mysql.c | 4 | ||||
-rw-r--r-- | mg_db_gd_mysql.h | 2 | ||||
-rw-r--r-- | mg_db_gd_pg.h | 3 | ||||
-rw-r--r-- | mg_db_gd_sqlite.h | 3 |
6 files changed, 40 insertions, 7 deletions
@@ -38,6 +38,25 @@ static map <mgKeyTypes, map<string,string> > map_ids; mgDbServer* DbServer; +mgDbServer::mgDbServer() +{ + printf("mgDbServer\n"); +#ifdef HAVE_SQLITE + m_server = new mgDbServerSQLite; +#elif HAVE_PG + m_server = new mgDbServerPG; +#else + m_server = new mgDbServerMySQL; +#endif +} + +mgDbServer::~mgDbServer() +{ + printf("~mgDbServer\n"); + delete m_server; + m_server = 0; +} + mgSQLString::~mgSQLString() { delete m_str; @@ -300,14 +300,24 @@ class mgKeyMaps { extern mgKeyMaps KeyMaps; -class mgDbServer { +class mgDbServerImp { public: - mgDbServer() {}; - mgDb* EscapeDb() const { return m_escape_db; } + mgDbServerImp() {m_escape_db = 0;} + virtual ~mgDbServerImp() {delete m_escape_db;} + mgDb* EscapeDb() const { return m_escape_db;} protected: mgDb* m_escape_db; }; +class mgDbServer { + private: + mgDbServerImp *m_server; + public: + mgDbServer(); + ~mgDbServer(); + mgDb* EscapeDb() { return m_server->EscapeDb(); } +}; + extern mgDbServer* DbServer; #endif diff --git a/mg_db_gd_mysql.c b/mg_db_gd_mysql.c index 4543d9d..2393441 100644 --- a/mg_db_gd_mysql.c +++ b/mg_db_gd_mysql.c @@ -226,8 +226,6 @@ mgDbServerMySQL::mgDbServerMySQL() mgDbServerMySQL::~mgDbServerMySQL() { - delete m_escape_db; - m_escape_db=0; #ifndef HAVE_ONLY_SERVER mgDebug(3,"calling mysql_server_end"); mysql_server_end(); @@ -468,7 +466,7 @@ mgDbGd::ServerConnect () return false; m_connect_time=time(0); if (!DbServer) - DbServer = new mgDbServerMySQL; + DbServer = new mgDbServer; m_db = mysql_init (0); if (!m_db) return false; diff --git a/mg_db_gd_mysql.h b/mg_db_gd_mysql.h index ba8f08c..d5516c2 100644 --- a/mg_db_gd_mysql.h +++ b/mg_db_gd_mysql.h @@ -54,7 +54,7 @@ class mgDbGd : public mgDb { }; -class mgDbServerMySQL : public mgDbServer { +class mgDbServerMySQL : public mgDbServerImp { public: mgDbServerMySQL(); ~mgDbServerMySQL(); diff --git a/mg_db_gd_pg.h b/mg_db_gd_pg.h index 0eb3f0e..73996db 100644 --- a/mg_db_gd_pg.h +++ b/mg_db_gd_pg.h @@ -20,6 +20,9 @@ using namespace std; #include "mg_db.h" +class mgDbServerPG : public mgDbServerImp { +}; + class mgSQLStringPG : public mgSQLStringImp { public: mgSQLStringPG(const char* s); diff --git a/mg_db_gd_sqlite.h b/mg_db_gd_sqlite.h index 17de670..81d8516 100644 --- a/mg_db_gd_sqlite.h +++ b/mg_db_gd_sqlite.h @@ -20,6 +20,9 @@ using namespace std; #include "mg_db.h" +class mgDbServerSQLite : public mgDbServerImp { +}; + class mgSQLStringSQLite : public mgSQLStringImp { public: mgSQLStringSQLite(const char* s); |