extensions/sqlite/driver/SqDatabase.h
author Scott Ehlert <ds@alliedmods.net>
Wed Aug 15 06:19:30 2007 +0000 (2007-08-15)
changeset 1330 ab94316bb52b
parent 1226 478550a4d5ec
child 1912 506170374d35
permissions -rw-r--r--
Updated license headers on virtually all files with extremely minor changes in the name of some sort of strange consistency.
All plugin and include file headers also have been changed to say about GPL3 instead of GPL2.

(This day shall henceforth be known as the Eighty Column Massacre of '07)
dvander@1203
     1
/**
dvander@1203
     2
 * vim: set ts=4 :
ds@1330
     3
 * =============================================================================
dvander@1226
     4
 * SourceMod SQLite Extension
dvander@1226
     5
 * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
ds@1330
     6
 * =============================================================================
dvander@1203
     7
 *
ds@1330
     8
 * This program is free software; you can redistribute it and/or modify it under
ds@1330
     9
 * the terms of the GNU General Public License, version 3.0, as published by the
ds@1330
    10
 * Free Software Foundation.
dvander@1226
    11
 * 
ds@1330
    12
 * This program is distributed in the hope that it will be useful, but WITHOUT
ds@1330
    13
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
ds@1330
    14
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
ds@1330
    15
 * details.
dvander@1226
    16
 *
ds@1330
    17
 * You should have received a copy of the GNU General Public License along with
ds@1330
    18
 * this program.  If not, see <http://www.gnu.org/licenses/>.
dvander@1226
    19
 *
ds@1330
    20
 * As a special exception, AlliedModders LLC gives you permission to link the
ds@1330
    21
 * code of this program (as well as its derivative works) to "Half-Life 2," the
ds@1330
    22
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
ds@1330
    23
 * by the Valve Corporation.  You must obey the GNU General Public License in
ds@1330
    24
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
ds@1330
    25
 * this exception to all derivative works.  AlliedModders LLC defines further
ds@1330
    26
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
ds@1330
    27
 * or <http://www.sourcemod.net/license.php>.
dvander@1203
    28
 *
dvander@1203
    29
 * Version: $Id$
dvander@1203
    30
 */
dvander@1203
    31
dvander@1203
    32
#ifndef _INCLUDE_SQLITE_SOURCEMOD_DATABASE_H_
dvander@1203
    33
#define _INCLUDE_SQLITE_SOURCEMOD_DATABASE_H_
dvander@1203
    34
dvander@1203
    35
#include <IThreader.h>
dvander@1203
    36
#include "SqDriver.h"
dvander@1203
    37
dvander@1203
    38
class SqDatabase : public IDatabase
dvander@1203
    39
{
dvander@1203
    40
public:
dvander@1203
    41
	SqDatabase(sqlite3 *sq3, bool persistent);
dvander@1203
    42
	~SqDatabase();
dvander@1203
    43
public:
dvander@1203
    44
	bool Close();
dvander@1203
    45
	const char *GetError(int *errorCode=NULL);
dvander@1203
    46
	bool DoSimpleQuery(const char *query);
dvander@1203
    47
	IQuery *DoQuery(const char *query);
dvander@1203
    48
	IPreparedQuery *PrepareQuery(const char *query, char *error, size_t maxlength, int *errCode=NULL);
dvander@1203
    49
	bool QuoteString(const char *str, char buffer[], size_t maxlen, size_t *newSize);
dvander@1203
    50
	unsigned int GetAffectedRows();
dvander@1203
    51
	unsigned int GetInsertID();
dvander@1203
    52
	bool LockForFullAtomicOperation();
dvander@1203
    53
	void UnlockFromFullAtomicOperation();
dvander@1203
    54
	void IncReferenceCount();
dvander@1203
    55
	IDBDriver *GetDriver();
dvander@1203
    56
public:
dvander@1203
    57
	sqlite3 *GetDb();
dvander@1203
    58
private:
dvander@1203
    59
	sqlite3 *m_sq3;
dvander@1203
    60
	unsigned int m_refcount;
dvander@1203
    61
	IMutex *m_pFullLock;
dvander@1203
    62
	IMutex *m_pRefLock;
dvander@1203
    63
	bool m_Persistent;
dvander@1203
    64
	String m_LastError;
dvander@1203
    65
	int m_LastErrorCode;
dvander@1203
    66
};
dvander@1203
    67
dvander@1203
    68
#endif //_INCLUDE_SQLITE_SOURCEMOD_DATABASE_H_