From 7f9dacb21b81a04549df028b1493802b7da069fd Mon Sep 17 00:00:00 2001 From: MikalaiR Date: Sun, 14 Feb 2016 15:48:21 +0000 Subject: dbx_lmdb: common project, small speed optimization git-svn-id: http://svn.miranda-ng.org/main/trunk@16278 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Dbx_mdb/src/stdafx.h | 123 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 plugins/Dbx_mdb/src/stdafx.h (limited to 'plugins/Dbx_mdb/src/stdafx.h') diff --git a/plugins/Dbx_mdb/src/stdafx.h b/plugins/Dbx_mdb/src/stdafx.h new file mode 100644 index 0000000000..dd06f5806a --- /dev/null +++ b/plugins/Dbx_mdb/src/stdafx.h @@ -0,0 +1,123 @@ +/* + +Miranda NG: the free IM client for Microsoft* Windows* + +Copyright (ñ) 2012-16 Miranda NG project (http://miranda-ng.org) +all portions of this codebase are copyrighted to the people +listed in contributors.txt. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#define _CRT_SECURE_NO_WARNINGS +#define _WIN32_WINNT 0x0501 + +#pragma warning(disable:4509) + +//#define SIZEOF(x) _countof(x) + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern "C" +{ + #include "lmdb\lmdb.h" +}; + +class txn_ptr +{ + MDB_txn *m_txn; + +public: + __forceinline txn_ptr(MDB_env *pEnv, bool bReadOnly = false) + { + mdb_txn_begin(pEnv, NULL, (bReadOnly) ? MDB_RDONLY : 0, &m_txn); + } + + __forceinline ~txn_ptr() + { + if (m_txn) + mdb_txn_abort(m_txn); + } + + __forceinline operator MDB_txn*() const { return m_txn; } + + __forceinline bool commit() + { + bool bRes = (mdb_txn_commit(m_txn) != MDB_MAP_FULL); + m_txn = NULL; + return bRes; + } + + __forceinline void abort() + { + mdb_txn_abort(m_txn); + m_txn = NULL; + } +}; + +class cursor_ptr +{ + MDB_cursor *m_cursor; + +public: + __forceinline cursor_ptr(const txn_ptr &_txn, MDB_dbi _dbi) + { + if (mdb_cursor_open(_txn, _dbi, &m_cursor) != MDB_SUCCESS) + m_cursor = NULL; + } + + __forceinline ~cursor_ptr() + { + if (m_cursor) + mdb_cursor_close(m_cursor); + } + + __forceinline operator MDB_cursor*() const { return m_cursor; } +}; + +#define MDB_CHECK(A,B) \ + switch(A) { \ + case MDB_SUCCESS: break; \ + case MDB_MAP_FULL: continue; \ + default: return (B); } + +#include "dbintf.h" +#include "resource.h" +#include "version.h" + +extern HINSTANCE g_hInst; +extern LIST g_Dbs; + +#ifdef __GNUC__ +#define mir_i64(x) (x##LL) +#else +#define mir_i64(x) (x##i64) +#endif -- cgit v1.2.3