dvander@1203: /** dvander@1203: * vim: set ts=4 : dvander@1203: * =============================================================== dvander@1203: * SourceMod SQLite Driver Extension dvander@1203: * Copyright (C) 2004-2007 AlliedModders LLC. All rights reserved. dvander@1203: * =============================================================== dvander@1203: * dvander@1203: * This program is free software; you can redistribute it and/or dvander@1203: * modify it under the terms of the GNU General Public License dvander@1203: * as published by the Free Software Foundation; either version 2 dvander@1203: * of the License, or (at your option) any later version. dvander@1203: * This program is distributed in the hope that it will be useful, dvander@1203: * but WITHOUT ANY WARRANTY; without even the implied warranty of dvander@1203: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the dvander@1203: * GNU General Public License for more details. dvander@1203: * dvander@1203: * You should have received a copy of the GNU General Public License dvander@1203: * along with this program; if not, write to the Free Software dvander@1203: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. dvander@1203: * dvander@1203: * Version: $Id$ dvander@1203: */ dvander@1203: dvander@1203: #ifndef _INCLUDE_SQLITE_SOURCEMOD_DATABASE_H_ dvander@1203: #define _INCLUDE_SQLITE_SOURCEMOD_DATABASE_H_ dvander@1203: dvander@1203: #include dvander@1203: #include "SqDriver.h" dvander@1203: dvander@1203: class SqDatabase : public IDatabase dvander@1203: { dvander@1203: public: dvander@1203: SqDatabase(sqlite3 *sq3, bool persistent); dvander@1203: ~SqDatabase(); dvander@1203: public: dvander@1203: bool Close(); dvander@1203: const char *GetError(int *errorCode=NULL); dvander@1203: bool DoSimpleQuery(const char *query); dvander@1203: IQuery *DoQuery(const char *query); dvander@1203: IPreparedQuery *PrepareQuery(const char *query, char *error, size_t maxlength, int *errCode=NULL); dvander@1203: bool QuoteString(const char *str, char buffer[], size_t maxlen, size_t *newSize); dvander@1203: unsigned int GetAffectedRows(); dvander@1203: unsigned int GetInsertID(); dvander@1203: bool LockForFullAtomicOperation(); dvander@1203: void UnlockFromFullAtomicOperation(); dvander@1203: void IncReferenceCount(); dvander@1203: IDBDriver *GetDriver(); dvander@1203: public: dvander@1203: sqlite3 *GetDb(); dvander@1203: private: dvander@1203: sqlite3 *m_sq3; dvander@1203: unsigned int m_refcount; dvander@1203: IMutex *m_pFullLock; dvander@1203: IMutex *m_pRefLock; dvander@1203: bool m_Persistent; dvander@1203: String m_LastError; dvander@1203: int m_LastErrorCode; dvander@1203: }; dvander@1203: dvander@1203: #endif //_INCLUDE_SQLITE_SOURCEMOD_DATABASE_H_