dvander@667: /** dvander@667: * vim: set ts=4 : dvander@667: * =============================================================== dvander@667: * SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved. dvander@667: * =============================================================== dvander@667: * dvander@667: * This file is not open source and may not be copied without explicit dvander@667: * written permission of AlliedModders LLC. This file may not be redistributed dvander@667: * in whole or significant part. dvander@667: * For information, see LICENSE.txt or http://www.sourcemod.net/license.php dvander@667: * dvander@667: * Version: $Id$ dvander@667: */ dvander@667: dvander@666: #ifndef _INCLUDE_DATABASE_MANAGER_H_ dvander@666: #define _INCLUDE_DATABASE_MANAGER_H_ dvander@666: dvander@666: #include dvander@666: #include dvander@666: #include "sm_globals.h" dvander@666: #include dvander@666: dvander@666: using namespace SourceHook; dvander@666: dvander@666: struct db_driver dvander@666: { dvander@666: IDBDriver *driver; dvander@666: IdentityToken_t *ident; dvander@666: HandleType_t htDatabase; dvander@666: HandleType_t htQuery; dvander@666: Handle_t hDriver; dvander@666: }; dvander@666: dvander@666: class DBManager : dvander@666: public IDBManager, dvander@666: public SMGlobalClass, dvander@666: public IHandleTypeDispatch dvander@666: { dvander@666: const char *GetInterfaceName(); dvander@666: unsigned int GetInterfaceVersion(); dvander@666: public: //SMGlobalClass dvander@666: void OnSourceModAllInitialized(); dvander@666: public: //IHandleTypeDispatch dvander@666: void OnHandleDestroy(HandleType_t type, void *object); dvander@666: public: //IDBManager dvander@666: void AddDriver(IDBDriver *pDriver, IdentityToken_t *ident); dvander@666: void RemoveDriver(IDBDriver *pDriver); dvander@666: const DatabaseInfo *FindDatabaseConf(const char *name); dvander@666: bool Connect(const char *name, IDBDriver **pdr, IDatabase **pdb, bool persistent); dvander@666: unsigned int GetDriverCount(); dvander@666: IDBDriver *GetDriver(unsigned int index, IdentityToken_t **pToken=NULL); dvander@666: public: dvander@666: db_driver *GetDriverInfo(unsigned int index); dvander@666: private: dvander@666: CVector m_drivers; dvander@666: HandleType_t m_DriverType; dvander@666: HandleType_t m_DatabaseType; dvander@666: HandleType_t m_QueryType; dvander@666: }; dvander@666: dvander@666: extern DBManager g_DBMan; dvander@666: dvander@666: #endif //_INCLUDE_DATABASE_MANAGER_H_