diff options
Diffstat (limited to 'Modules/bsddb.h')
-rw-r--r-- | Modules/bsddb.h | 273 |
1 files changed, 0 insertions, 273 deletions
diff --git a/Modules/bsddb.h b/Modules/bsddb.h deleted file mode 100644 index f796681bf9..0000000000 --- a/Modules/bsddb.h +++ /dev/null @@ -1,273 +0,0 @@ -/*---------------------------------------------------------------------- - Copyright (c) 1999-2001, Digital Creations, Fredericksburg, VA, USA - and Andrew Kuchling. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - o Redistributions of source code must retain the above copyright - notice, this list of conditions, and the disclaimer that follows. - - o Redistributions in binary form must reproduce the above copyright - notice, this list of conditions, and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - o Neither the name of Digital Creations nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS AND CONTRIBUTORS *AS - IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL - CREATIONS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - DAMAGE. -------------------------------------------------------------------------*/ - - -/* - * Handwritten code to wrap version 3.x of the Berkeley DB library, - * written to replace a SWIG-generated file. It has since been updated - * to compile with Berkeley DB versions 3.2 through 4.2. - * - * This module was started by Andrew Kuchling to remove the dependency - * on SWIG in a package by Gregory P. Smith who based his work on a - * similar package by Robin Dunn <robin@alldunn.com> which wrapped - * Berkeley DB 2.7.x. - * - * Development of this module then returned full circle back to Robin Dunn - * who worked on behalf of Digital Creations to complete the wrapping of - * the DB 3.x API and to build a solid unit test suite. Robin has - * since gone onto other projects (wxPython). - * - * Gregory P. Smith <greg@krypto.org> is once again the maintainer. - * - * Use the pybsddb-users@lists.sf.net mailing list for all questions. - * Things can change faster than the header of this file is updated. This - * file is shared with the PyBSDDB project at SourceForge: - * - * http://pybsddb.sf.net - * - * This file should remain backward compatible with Python 2.1, but see PEP - * 291 for the most current backward compatibility requirements: - * - * http://www.python.org/peps/pep-0291.html - * - * This module contains 6 types: - * - * DB (Database) - * DBCursor (Database Cursor) - * DBEnv (database environment) - * DBTxn (An explicit database transaction) - * DBLock (A lock handle) - * DBSequence (Sequence) - * - */ - -/* --------------------------------------------------------------------- */ - -/* - * Portions of this module, associated unit tests and build scripts are the - * result of a contract with The Written Word (http://thewrittenword.com/) - * Many thanks go out to them for causing me to raise the bar on quality and - * functionality, resulting in a better bsddb3 package for all of us to use. - * - * --Robin - */ - -/* --------------------------------------------------------------------- */ - -/* - * Work to split it up into a separate header and to add a C API was - * contributed by Duncan Grisby <duncan@tideway.com>. See here: - * http://sourceforge.net/tracker/index.php?func=detail&aid=1551895&group_id=13900&atid=313900 - */ - -/* --------------------------------------------------------------------- */ - -#ifndef _BSDDB_H_ -#define _BSDDB_H_ - -#include <db.h> - - -/* 40 = 4.0, 33 = 3.3; this will break if the minor revision is > 9 */ -#define DBVER (DB_VERSION_MAJOR * 10 + DB_VERSION_MINOR) -#if DB_VERSION_MINOR > 9 -#error "eek! DBVER can't handle minor versions > 9" -#endif - -#define PY_BSDDB_VERSION "4.7.3pre5" - -/* Python object definitions */ - -struct behaviourFlags { - /* What is the default behaviour when DB->get or DBCursor->get returns a - DB_NOTFOUND || DB_KEYEMPTY error? Return None or raise an exception? */ - unsigned int getReturnsNone : 1; - /* What is the default behaviour for DBCursor.set* methods when DBCursor->get - * returns a DB_NOTFOUND || DB_KEYEMPTY error? Return None or raise? */ - unsigned int cursorSetReturnsNone : 1; -}; - - - -struct DBObject; /* Forward declaration */ -struct DBCursorObject; /* Forward declaration */ -struct DBTxnObject; /* Forward declaration */ -struct DBSequenceObject; /* Forward declaration */ - -typedef struct { - PyObject_HEAD - DB_ENV* db_env; - u_int32_t flags; /* saved flags from open() */ - int closed; - struct behaviourFlags moduleFlags; - PyObject* event_notifyCallback; - struct DBObject *children_dbs; - struct DBTxnObject *children_txns; - PyObject *private_obj; - PyObject *rep_transport; - PyObject *in_weakreflist; /* List of weak references */ -} DBEnvObject; - -typedef struct DBObject { - PyObject_HEAD - DB* db; - DBEnvObject* myenvobj; /* PyObject containing the DB_ENV */ - u_int32_t flags; /* saved flags from open() */ - u_int32_t setflags; /* saved flags from set_flags() */ - int haveStat; - struct behaviourFlags moduleFlags; - struct DBTxnObject *txn; - struct DBCursorObject *children_cursors; -#if (DBVER >=43) - struct DBSequenceObject *children_sequences; -#endif - struct DBObject **sibling_prev_p; - struct DBObject *sibling_next; - struct DBObject **sibling_prev_p_txn; - struct DBObject *sibling_next_txn; - PyObject* associateCallback; - PyObject* btCompareCallback; - int primaryDBType; - PyObject *private_obj; - PyObject *in_weakreflist; /* List of weak references */ -} DBObject; - - -typedef struct DBCursorObject { - PyObject_HEAD - DBC* dbc; - struct DBCursorObject **sibling_prev_p; - struct DBCursorObject *sibling_next; - struct DBCursorObject **sibling_prev_p_txn; - struct DBCursorObject *sibling_next_txn; - DBObject* mydb; - struct DBTxnObject *txn; - PyObject *in_weakreflist; /* List of weak references */ -} DBCursorObject; - - -typedef struct DBTxnObject { - PyObject_HEAD - DB_TXN* txn; - DBEnvObject* env; - int flag_prepare; - struct DBTxnObject *parent_txn; - struct DBTxnObject **sibling_prev_p; - struct DBTxnObject *sibling_next; - struct DBTxnObject *children_txns; - struct DBObject *children_dbs; - struct DBSequenceObject *children_sequences; - struct DBCursorObject *children_cursors; - PyObject *in_weakreflist; /* List of weak references */ -} DBTxnObject; - - -typedef struct { - PyObject_HEAD - DB_LOCK lock; - PyObject *in_weakreflist; /* List of weak references */ -} DBLockObject; - - -#if (DBVER >= 43) -typedef struct DBSequenceObject { - PyObject_HEAD - DB_SEQUENCE* sequence; - DBObject* mydb; - struct DBTxnObject *txn; - struct DBSequenceObject **sibling_prev_p; - struct DBSequenceObject *sibling_next; - struct DBSequenceObject **sibling_prev_p_txn; - struct DBSequenceObject *sibling_next_txn; - PyObject *in_weakreflist; /* List of weak references */ -} DBSequenceObject; -#endif - - -/* API structure for use by C code */ - -/* To access the structure from an external module, use code like the - following (error checking missed out for clarity): - - BSDDB_api* bsddb_api; - PyObject* mod; - PyObject* cobj; - - mod = PyImport_ImportModule("bsddb._bsddb"); - // Use "bsddb3._pybsddb" if you're using the standalone pybsddb add-on. - cobj = PyObject_GetAttrString(mod, "api"); - api = (BSDDB_api*)PyCObject_AsVoidPtr(cobj); - Py_DECREF(cobj); - Py_DECREF(mod); - - The structure's members must not be changed. -*/ - -typedef struct { - /* Type objects */ - PyTypeObject* db_type; - PyTypeObject* dbcursor_type; - PyTypeObject* dbenv_type; - PyTypeObject* dbtxn_type; - PyTypeObject* dblock_type; -#if (DBVER >= 43) - PyTypeObject* dbsequence_type; -#endif - - /* Functions */ - int (*makeDBError)(int err); - -} BSDDB_api; - - -#ifndef COMPILING_BSDDB_C - -/* If not inside _bsddb.c, define type check macros that use the api - structure. The calling code must have a value named bsddb_api - pointing to the api structure. -*/ - -#define DBObject_Check(v) ((v)->ob_type == bsddb_api->db_type) -#define DBCursorObject_Check(v) ((v)->ob_type == bsddb_api->dbcursor_type) -#define DBEnvObject_Check(v) ((v)->ob_type == bsddb_api->dbenv_type) -#define DBTxnObject_Check(v) ((v)->ob_type == bsddb_api->dbtxn_type) -#define DBLockObject_Check(v) ((v)->ob_type == bsddb_api->dblock_type) -#if (DBVER >= 43) -#define DBSequenceObject_Check(v) ((v)->ob_type == bsddb_api->dbsequence_type) -#endif - -#endif /* COMPILING_BSDDB_C */ - - -#endif /* _BSDDB_H_ */ |