diff options
Diffstat (limited to 'cpp/src/IceDB/IceDB.cpp')
-rw-r--r-- | cpp/src/IceDB/IceDB.cpp | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/cpp/src/IceDB/IceDB.cpp b/cpp/src/IceDB/IceDB.cpp index 03701eff884..a9604ec02b9 100644 --- a/cpp/src/IceDB/IceDB.cpp +++ b/cpp/src/IceDB/IceDB.cpp @@ -35,7 +35,13 @@ LMDBException::ice_print(ostream& out) const out << ": " << mdb_strerror(_error); } -#ifndef ICE_CPP11_MAPPING +#ifdef ICE_CPP11_MAPPING +IceUtil::Exception* +LMDBException::ice_cloneImpl() const +{ + return new LMDBException(*this); +} +#else LMDBException* LMDBException::ice_clone() const { @@ -85,7 +91,13 @@ KeyTooLongException::ice_print(ostream& out) const out << "Max size = " << maxKeySize; } -#ifndef ICE_CPP11_MAPPING +#ifdef ICE_CPP11_MAPPING +IceUtil::Exception* +KeyTooLongException::ice_cloneImpl() const +{ + return new KeyTooLongException(*this); +} +#else KeyTooLongException* KeyTooLongException::ice_clone() const { @@ -125,7 +137,13 @@ BadEnvException::ice_print(ostream& out) const out << ", IceDB max key size = " << maxKeySize; } -#ifndef ICE_CPP11_MAPPING +#ifdef ICE_CPP11_MAPPING +IceUtil::Exception* +BadEnvException::ice_cloneImpl() const +{ + return new BadEnvException(*this); +} +#else BadEnvException* BadEnvException::ice_clone() const { @@ -223,7 +241,9 @@ Env::menv() const return _menv; } -Txn::Txn(const Env& env, unsigned int flags) +Txn::Txn(const Env& env, unsigned int flags) : + _mtxn(0), + _readOnly(flags == MDB_RDONLY) { const int rc = mdb_txn_begin(env.menv(), 0, flags, &_mtxn); if(rc != MDB_SUCCESS) @@ -266,7 +286,6 @@ Txn::mtxn() const ReadOnlyTxn::~ReadOnlyTxn() { - // Out of line to avoid weak vtable } ReadOnlyTxn::ReadOnlyTxn(const Env& env) : @@ -292,7 +311,6 @@ ReadOnlyTxn::renew() ReadWriteTxn::~ReadWriteTxn() { - // Out of line to avoid weak vtable } ReadWriteTxn::ReadWriteTxn(const Env& env) : @@ -322,10 +340,6 @@ DbiBase::DbiBase() : { } -DbiBase::~DbiBase() -{ -} - void DbiBase::clear(const ReadWriteTxn& txn) { @@ -387,8 +401,8 @@ DbiBase::del(const ReadWriteTxn& txn, MDB_val* key, MDB_val* data) return rc == MDB_SUCCESS; } -CursorBase::CursorBase(MDB_dbi dbi, const Txn& txn, bool readOnly) : - _readOnly(readOnly) +CursorBase::CursorBase(MDB_dbi dbi, const Txn& txn) : + _readOnly(txn.isReadOnly()) { const int rc = mdb_cursor_open(txn.mtxn(), dbi, &_mcursor); if(rc != MDB_SUCCESS) |