[Checkins] SVN: BTrees/branches/py3k/ Fix module initialization dance under Py3k.
Tres Seaver
cvs-admin at zope.org
Fri Dec 14 18:10:18 UTC 2012
Log message for revision 128657:
Fix module initialization dance under Py3k.
Changed:
_U BTrees/branches/py3k/
U BTrees/branches/py3k/BTrees/BTreeModuleTemplate.c
U BTrees/branches/py3k/BTrees/_IFBTree.c
U BTrees/branches/py3k/BTrees/_IIBTree.c
U BTrees/branches/py3k/BTrees/_IOBTree.c
U BTrees/branches/py3k/BTrees/_LFBTree.c
U BTrees/branches/py3k/BTrees/_LLBTree.c
U BTrees/branches/py3k/BTrees/_LOBTree.c
U BTrees/branches/py3k/BTrees/_OIBTree.c
U BTrees/branches/py3k/BTrees/_OLBTree.c
U BTrees/branches/py3k/BTrees/_OOBTree.c
U BTrees/branches/py3k/BTrees/_compat.h
U BTrees/branches/py3k/BTrees/_fsBTree.c
-=-
Modified: BTrees/branches/py3k/BTrees/BTreeModuleTemplate.c
===================================================================
--- BTrees/branches/py3k/BTrees/BTreeModuleTemplate.c 2012-12-14 15:51:09 UTC (rev 128656)
+++ BTrees/branches/py3k/BTrees/BTreeModuleTemplate.c 2012-12-14 18:10:17 UTC (rev 128657)
@@ -480,38 +480,38 @@
#endif
-void
-INITMODULE (void)
+static PyObject*
+module_init(void)
{
- PyObject *m, *d, *c;
+ PyObject *module, *mod_dict, *interfaces, *conflicterr;
#ifdef KEY_TYPE_IS_PYOBJECT
- object_ = PyTuple_GetItem(Py_None->ob_type->tp_bases, 0);
+ object_ = PyTuple_GetItem(Py_TYPE(Py_None)->tp_bases, 0);
if (object_ == NULL)
- return;
+ return NULL;
#endif
sort_str = INTERN("sort");
if (!sort_str)
- return;
+ return NULL;
reverse_str = INTERN("reverse");
if (!reverse_str)
- return;
+ return NULL;
__setstate___str = INTERN("__setstate__");
if (!__setstate___str)
- return;
+ return NULL;
_bucket_type_str = INTERN("_bucket_type");
if (!_bucket_type_str)
- return;
+ return NULL;
/* Grab the ConflictError class */
- m = PyImport_ImportModule("BTrees.Interfaces");
- if (m != NULL)
+ interfaces = PyImport_ImportModule("BTrees.Interfaces");
+ if (interfaces != NULL)
{
- c = PyObject_GetAttrString(m, "BTreesConflictError");
- if (c != NULL)
- ConflictError = c;
- Py_DECREF(m);
+ conflicterr = PyObject_GetAttrString(interfaces, "BTreesConflictError");
+ if (conflicterr != NULL)
+ ConflictError = conflicterr;
+ Py_DECREF(interfaces);
}
if (ConflictError == NULL)
@@ -529,7 +529,7 @@
"persistent.cPersistence", "CAPI");
#endif
if (cPersistenceCAPI == NULL)
- return;
+ return NULL;
#ifdef PY3K
#define _SET_TYPE(typ) ((PyObject*)(&typ))->ob_type = &PyType_Type
@@ -544,75 +544,88 @@
BTreeType.tp_new = PyType_GenericNew;
TreeSetType.tp_new = PyType_GenericNew;
if (!init_persist_type(&BucketType))
- return;
+ return NULL;
if (!init_persist_type(&BTreeType))
- return;
+ return NULL;
if (!init_persist_type(&SetType))
- return;
+ return NULL;
if (!init_persist_type(&TreeSetType))
- return;
+ return NULL;
if (PyDict_SetItem(BTreeType.tp_dict, _bucket_type_str,
(PyObject *)&BucketType) < 0)
{
fprintf(stderr, "btree failed\n");
- return;
+ return NULL;
}
if (PyDict_SetItem(TreeSetType.tp_dict, _bucket_type_str,
(PyObject *)&SetType) < 0)
{
fprintf(stderr, "bucket failed\n");
- return;
+ return NULL;
}
+ /* Create the module and add the functions */
#ifdef PY3K
- m = PyModule_Create(&moduledef);
+ module = PyModule_Create(&moduledef);
#else
- /* Create the module and add the functions */
- m = Py_InitModule4("_" MOD_NAME_PREFIX "BTree",
+ module = Py_InitModule4("_" MOD_NAME_PREFIX "BTree",
module_methods, BTree_module_documentation,
(PyObject *)NULL, PYTHON_API_VERSION);
#endif
/* Add some symbolic constants to the module */
- d = PyModule_GetDict(m);
- if (PyDict_SetItemString(d, MOD_NAME_PREFIX "Bucket",
+ mod_dict = PyModule_GetDict(module);
+ if (PyDict_SetItemString(mod_dict, MOD_NAME_PREFIX "Bucket",
(PyObject *)&BucketType) < 0)
- return;
- if (PyDict_SetItemString(d, MOD_NAME_PREFIX "BTree",
+ return NULL;
+ if (PyDict_SetItemString(mod_dict, MOD_NAME_PREFIX "BTree",
(PyObject *)&BTreeType) < 0)
- return;
- if (PyDict_SetItemString(d, MOD_NAME_PREFIX "Set",
+ return NULL;
+ if (PyDict_SetItemString(mod_dict, MOD_NAME_PREFIX "Set",
(PyObject *)&SetType) < 0)
- return;
- if (PyDict_SetItemString(d, MOD_NAME_PREFIX "TreeSet",
+ return NULL;
+ if (PyDict_SetItemString(mod_dict, MOD_NAME_PREFIX "TreeSet",
(PyObject *)&TreeSetType) < 0)
- return;
- if (PyDict_SetItemString(d, MOD_NAME_PREFIX "TreeIterator",
+ return NULL;
+ if (PyDict_SetItemString(mod_dict, MOD_NAME_PREFIX "TreeIterator",
(PyObject *)&BTreeIter_Type) < 0)
- return;
+ return NULL;
/* We also want to be able to access these constants without the prefix
* so that code can more easily exchange modules (particularly the integer
* and long modules, but also others). The TreeIterator is only internal,
* so we don't bother to expose that.
*/
- if (PyDict_SetItemString(d, "Bucket",
+ if (PyDict_SetItemString(mod_dict, "Bucket",
(PyObject *)&BucketType) < 0)
- return;
- if (PyDict_SetItemString(d, "BTree",
+ return NULL;
+ if (PyDict_SetItemString(mod_dict, "BTree",
(PyObject *)&BTreeType) < 0)
- return;
- if (PyDict_SetItemString(d, "Set",
+ return NULL;
+ if (PyDict_SetItemString(mod_dict, "Set",
(PyObject *)&SetType) < 0)
- return;
- if (PyDict_SetItemString(d, "TreeSet",
+ return NULL;
+ if (PyDict_SetItemString(mod_dict, "TreeSet",
(PyObject *)&TreeSetType) < 0)
- return;
+ return NULL;
#if defined(ZODB_64BIT_INTS) && defined(NEED_LONG_LONG_SUPPORT)
- if (PyDict_SetItemString(d, "using64bits", Py_True) < 0)
- return;
+ if (PyDict_SetItemString(mod_dict, "using64bits", Py_True) < 0)
+ return NULL;
#else
- if (PyDict_SetItemString(d, "using64bits", Py_False) < 0)
- return;
+ if (PyDict_SetItemString(mod_dict, "using64bits", Py_False) < 0)
+ return NULL;
#endif
+ return module;
}
+
+#ifdef PY3K
+PyMODINIT_FUNC INITMODULE(void)
+{
+ return module_init();
+}
+#else
+PyMODINIT_FUNC INITMODULE(void)
+{
+ module_init();
+}
+#endif
Modified: BTrees/branches/py3k/BTrees/_IFBTree.c
===================================================================
--- BTrees/branches/py3k/BTrees/_IFBTree.c 2012-12-14 15:51:09 UTC (rev 128656)
+++ BTrees/branches/py3k/BTrees/_IFBTree.c 2012-12-14 18:10:17 UTC (rev 128657)
@@ -25,10 +25,17 @@
#define PERSISTENT
#define MOD_NAME_PREFIX "IF"
-#define INITMODULE init_IFBTree
+
#define DEFAULT_MAX_BUCKET_SIZE 120
#define DEFAULT_MAX_BTREE_SIZE 500
+#include "_compat.h"
#include "intkeymacros.h"
#include "floatvaluemacros.h"
+
+#ifdef PY3K
+#define INITMODULE PyInit__IFBTree
+#else
+#define INITMODULE init_IFBTree
+#endif
#include "BTreeModuleTemplate.c"
Modified: BTrees/branches/py3k/BTrees/_IIBTree.c
===================================================================
--- BTrees/branches/py3k/BTrees/_IIBTree.c 2012-12-14 15:51:09 UTC (rev 128656)
+++ BTrees/branches/py3k/BTrees/_IIBTree.c 2012-12-14 18:10:17 UTC (rev 128657)
@@ -25,10 +25,17 @@
#define PERSISTENT
#define MOD_NAME_PREFIX "II"
-#define INITMODULE init_IIBTree
+
#define DEFAULT_MAX_BUCKET_SIZE 120
#define DEFAULT_MAX_BTREE_SIZE 500
+#include "_compat.h"
#include "intkeymacros.h"
#include "intvaluemacros.h"
+
+#ifdef PY3K
+#define INITMODULE PyInit__IIBTree
+#else
+#define INITMODULE init_IIBTree
+#endif
#include "BTreeModuleTemplate.c"
Modified: BTrees/branches/py3k/BTrees/_IOBTree.c
===================================================================
--- BTrees/branches/py3k/BTrees/_IOBTree.c 2012-12-14 15:51:09 UTC (rev 128656)
+++ BTrees/branches/py3k/BTrees/_IOBTree.c 2012-12-14 18:10:17 UTC (rev 128657)
@@ -23,10 +23,17 @@
#define PERSISTENT
#define MOD_NAME_PREFIX "IO"
+
#define DEFAULT_MAX_BUCKET_SIZE 60
#define DEFAULT_MAX_BTREE_SIZE 500
-#define INITMODULE init_IOBTree
+#include "_compat.h"
#include "intkeymacros.h"
#include "objectvaluemacros.h"
+
+#ifdef PY3K
+#define INITMODULE PyInit__IOBTree
+#else
+#define INITMODULE init_IOBTree
+#endif
#include "BTreeModuleTemplate.c"
Modified: BTrees/branches/py3k/BTrees/_LFBTree.c
===================================================================
--- BTrees/branches/py3k/BTrees/_LFBTree.c 2012-12-14 15:51:09 UTC (rev 128656)
+++ BTrees/branches/py3k/BTrees/_LFBTree.c 2012-12-14 18:10:17 UTC (rev 128657)
@@ -25,12 +25,19 @@
#define PERSISTENT
#define MOD_NAME_PREFIX "LF"
-#define INITMODULE init_LFBTree
+
#define DEFAULT_MAX_BUCKET_SIZE 120
#define DEFAULT_MAX_BTREE_SIZE 500
#define ZODB_64BIT_INTS
+#include "_compat.h"
#include "intkeymacros.h"
#include "floatvaluemacros.h"
+
+#ifdef PY3K
+#define INITMODULE PyInit__LFBTree
+#else
+#define INITMODULE init_LFBTree
+#endif
#include "BTreeModuleTemplate.c"
Modified: BTrees/branches/py3k/BTrees/_LLBTree.c
===================================================================
--- BTrees/branches/py3k/BTrees/_LLBTree.c 2012-12-14 15:51:09 UTC (rev 128656)
+++ BTrees/branches/py3k/BTrees/_LLBTree.c 2012-12-14 18:10:17 UTC (rev 128657)
@@ -25,12 +25,19 @@
#define PERSISTENT
#define MOD_NAME_PREFIX "LL"
-#define INITMODULE init_LLBTree
+
#define DEFAULT_MAX_BUCKET_SIZE 120
#define DEFAULT_MAX_BTREE_SIZE 500
#define ZODB_64BIT_INTS
+#include "_compat.h"
#include "intkeymacros.h"
#include "intvaluemacros.h"
+
+#ifdef PY3K
+#define INITMODULE PyInit__LLBTree
+#else
+#define INITMODULE init_LLBTree
+#endif
#include "BTreeModuleTemplate.c"
Modified: BTrees/branches/py3k/BTrees/_LOBTree.c
===================================================================
--- BTrees/branches/py3k/BTrees/_LOBTree.c 2012-12-14 15:51:09 UTC (rev 128656)
+++ BTrees/branches/py3k/BTrees/_LOBTree.c 2012-12-14 18:10:17 UTC (rev 128657)
@@ -23,12 +23,19 @@
#define PERSISTENT
#define MOD_NAME_PREFIX "LO"
+
#define DEFAULT_MAX_BUCKET_SIZE 60
#define DEFAULT_MAX_BTREE_SIZE 500
-#define INITMODULE init_LOBTree
#define ZODB_64BIT_INTS
+#include "_compat.h"
#include "intkeymacros.h"
#include "objectvaluemacros.h"
+
+#ifdef PY3K
+#define INITMODULE PyInit__LOBTree
+#else
+#define INITMODULE init_LOBTree
+#endif
#include "BTreeModuleTemplate.c"
Modified: BTrees/branches/py3k/BTrees/_OIBTree.c
===================================================================
--- BTrees/branches/py3k/BTrees/_OIBTree.c 2012-12-14 15:51:09 UTC (rev 128656)
+++ BTrees/branches/py3k/BTrees/_OIBTree.c 2012-12-14 18:10:17 UTC (rev 128657)
@@ -23,10 +23,17 @@
#define PERSISTENT
#define MOD_NAME_PREFIX "OI"
-#define INITMODULE init_OIBTree
+
#define DEFAULT_MAX_BUCKET_SIZE 60
#define DEFAULT_MAX_BTREE_SIZE 250
+#include "_compat.h"
#include "objectkeymacros.h"
#include "intvaluemacros.h"
+
+#ifdef PY3K
+#define INITMODULE PyInit__OIBTree
+#else
+#define INITMODULE init_OIBTree
+#endif
#include "BTreeModuleTemplate.c"
Modified: BTrees/branches/py3k/BTrees/_OLBTree.c
===================================================================
--- BTrees/branches/py3k/BTrees/_OLBTree.c 2012-12-14 15:51:09 UTC (rev 128656)
+++ BTrees/branches/py3k/BTrees/_OLBTree.c 2012-12-14 18:10:17 UTC (rev 128657)
@@ -23,12 +23,19 @@
#define PERSISTENT
#define MOD_NAME_PREFIX "OL"
-#define INITMODULE init_OLBTree
+
#define DEFAULT_MAX_BUCKET_SIZE 60
#define DEFAULT_MAX_BTREE_SIZE 250
#define ZODB_64BIT_INTS
+#include "_compat.h"
#include "objectkeymacros.h"
#include "intvaluemacros.h"
+
+#ifdef PY3K
+#define INITMODULE PyInit__OLBTree
+#else
+#define INITMODULE init_OLBTree
+#endif
#include "BTreeModuleTemplate.c"
Modified: BTrees/branches/py3k/BTrees/_OOBTree.c
===================================================================
--- BTrees/branches/py3k/BTrees/_OOBTree.c 2012-12-14 15:51:09 UTC (rev 128656)
+++ BTrees/branches/py3k/BTrees/_OOBTree.c 2012-12-14 18:10:17 UTC (rev 128657)
@@ -23,10 +23,17 @@
#define PERSISTENT
#define MOD_NAME_PREFIX "OO"
-#define INITMODULE init_OOBTree
+
#define DEFAULT_MAX_BUCKET_SIZE 30
#define DEFAULT_MAX_BTREE_SIZE 250
+#include "_compat.h"
#include "objectkeymacros.h"
#include "objectvaluemacros.h"
+
+#ifdef PY3K
+#define INITMODULE PyInit__OOBTree
+#else
+#define INITMODULE init_OOBTree
+#endif
#include "BTreeModuleTemplate.c"
Modified: BTrees/branches/py3k/BTrees/_compat.h
===================================================================
--- BTrees/branches/py3k/BTrees/_compat.h 2012-12-14 15:51:09 UTC (rev 128656)
+++ BTrees/branches/py3k/BTrees/_compat.h 2012-12-14 18:10:17 UTC (rev 128657)
@@ -2,7 +2,7 @@
#ifndef BTREES__COMPAT_H
#define BTREES__COMPAT_H
-#if PY_MAJOR_VERSION >= 3
+#include "Python.h"
#ifdef INTERN
#undef INTERN
@@ -16,6 +16,8 @@
#undef INT_CHECK
#endif
+#if PY_MAJOR_VERSION >= 3
+
#define PY3K
#define INTERN PyUnicode_InternFromString
@@ -30,6 +32,7 @@
PyObject_RichCompareBool((lhs), (rhs), Py_LT) > 0 ? -1 : \
(PyObject_RichCompareBool((lhs), (rhs), Py_EQ) > 0 ? 0 : 1)
+
#else
#define INTERN PyString_InternFromString
Modified: BTrees/branches/py3k/BTrees/_fsBTree.c
===================================================================
--- BTrees/branches/py3k/BTrees/_fsBTree.c 2012-12-14 15:51:09 UTC (rev 128656)
+++ BTrees/branches/py3k/BTrees/_fsBTree.c 2012-12-14 18:10:17 UTC (rev 128657)
@@ -31,10 +31,11 @@
#define PERSISTENT
#define MOD_NAME_PREFIX "fs"
-#define INITMODULE init_fsBTree
+
#define DEFAULT_MAX_BUCKET_SIZE 500
#define DEFAULT_MAX_BTREE_SIZE 500
+#include "_compat.h"
/*#include "intkeymacros.h"*/
#define KEYMACROS_H "$Id$\n"
@@ -80,6 +81,11 @@
{"fromString", (PyCFunction) bucket_fromString, METH_O, \
"fromString(s) -- Set the state of the object from a string"}, \
+#ifdef PY3K
+#define INITMODULE PyInit__fsBTree
+#else
+#define INITMODULE init_fsBTree
+#endif
#include "BTreeModuleTemplate.c"
static PyObject *
More information about the checkins
mailing list