core/Database.h
author David Anderson <dvander@alliedmods.net>
Tue May 22 20:50:48 2007 +0000 (2007-05-22)
changeset 833 732bedfcbe3e
parent 667 0347227ef615
child 858 b783a611f604
permissions -rw-r--r--
added ReplaceString and ReplaceStringEx (phew!)
dvander@667
     1
/**
dvander@667
     2
 * vim: set ts=4 :
dvander@667
     3
 * ===============================================================
dvander@667
     4
 * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
dvander@667
     5
 * ===============================================================
dvander@667
     6
 *
dvander@667
     7
 * This file is not open source and may not be copied without explicit
dvander@667
     8
 * written permission of AlliedModders LLC.  This file may not be redistributed 
dvander@667
     9
 * in whole or significant part.
dvander@667
    10
 * For information, see LICENSE.txt or http://www.sourcemod.net/license.php
dvander@667
    11
 *
dvander@667
    12
 * Version: $Id$
dvander@667
    13
 */
dvander@667
    14
dvander@666
    15
#ifndef _INCLUDE_DATABASE_MANAGER_H_
dvander@666
    16
#define _INCLUDE_DATABASE_MANAGER_H_
dvander@666
    17
dvander@666
    18
#include <IDBDriver.h>
dvander@666
    19
#include <IHandleSys.h>
dvander@666
    20
#include "sm_globals.h"
dvander@666
    21
#include <sh_vector.h>
dvander@666
    22
dvander@666
    23
using namespace SourceHook;
dvander@666
    24
dvander@666
    25
struct db_driver
dvander@666
    26
{
dvander@666
    27
	IDBDriver *driver;
dvander@666
    28
	IdentityToken_t *ident;
dvander@666
    29
	HandleType_t htDatabase;
dvander@666
    30
	HandleType_t htQuery;
dvander@666
    31
	Handle_t hDriver;
dvander@666
    32
};
dvander@666
    33
dvander@666
    34
class DBManager : 
dvander@666
    35
	public IDBManager,
dvander@666
    36
	public SMGlobalClass,
dvander@666
    37
	public IHandleTypeDispatch
dvander@666
    38
{
dvander@666
    39
	const char *GetInterfaceName();
dvander@666
    40
	unsigned int GetInterfaceVersion();
dvander@666
    41
public: //SMGlobalClass
dvander@666
    42
	void OnSourceModAllInitialized();
dvander@666
    43
public: //IHandleTypeDispatch
dvander@666
    44
	void OnHandleDestroy(HandleType_t type, void *object);
dvander@666
    45
public: //IDBManager
dvander@666
    46
	void AddDriver(IDBDriver *pDriver, IdentityToken_t *ident);
dvander@666
    47
	void RemoveDriver(IDBDriver *pDriver);
dvander@666
    48
	const DatabaseInfo *FindDatabaseConf(const char *name);
dvander@666
    49
	bool Connect(const char *name, IDBDriver **pdr, IDatabase **pdb, bool persistent);
dvander@666
    50
	unsigned int GetDriverCount();
dvander@666
    51
	IDBDriver *GetDriver(unsigned int index, IdentityToken_t **pToken=NULL);
dvander@666
    52
public:
dvander@666
    53
	db_driver *GetDriverInfo(unsigned int index);
dvander@666
    54
private:
dvander@666
    55
	CVector<db_driver *> m_drivers;
dvander@666
    56
	HandleType_t m_DriverType;
dvander@666
    57
	HandleType_t m_DatabaseType;
dvander@666
    58
	HandleType_t m_QueryType;
dvander@666
    59
};
dvander@666
    60
dvander@666
    61
extern DBManager g_DBMan;
dvander@666
    62
dvander@666
    63
#endif //_INCLUDE_DATABASE_MANAGER_H_