[Zodb-checkins] CVS: ZODB3/ZODB - coptimizations.c:1.23.36.2
Jeremy Hylton
jeremy at zope.com
Tue Jul 1 19:51:44 EDT 2003
Update of /cvs-repository/ZODB3/ZODB
In directory cvs.zope.org:/tmp/cvs-serv852
Modified Files:
Tag: zodb33-devel-branch
coptimizations.c
Log Message:
INCREF type before passing it to PyModule_AddConstant().
Also do a bunch of reformatting and cleanups.
=== ZODB3/ZODB/coptimizations.c 1.23.36.1 => 1.23.36.2 ===
--- ZODB3/ZODB/coptimizations.c:1.23.36.1 Tue Jul 1 15:34:10 2003
+++ ZODB3/ZODB/coptimizations.c Tue Jul 1 18:51:43 2003
@@ -16,23 +16,16 @@
"\n"
"$Id$\n";
-#include "Python.h"
#include "cPersistence.h"
-static void PyVar_Assign(PyObject **v, PyObject *e) { Py_XDECREF(*v); *v=e;}
-#define ASSIGN(V,E) PyVar_Assign(&(V),(E))
-#define UNLESS(E) if(!(E))
-#define UNLESS_ASSIGN(V,E) ASSIGN(V,E); UNLESS(V)
-#define OBJECT(O) ((PyObject*)(O))
-
static PyObject *py__p_oid, *py__p_jar, *py___getinitargs__, *py___module__;
static PyObject *py_new_oid, *py___class__, *py___name__;
static PyObject *InvalidObjectReference;
typedef struct {
- PyObject_HEAD
- PyObject *jar, *stack, *new_oid;
+ PyObject_HEAD
+ PyObject *jar, *stack, *new_oid;
} persistent_id;
static PyTypeObject persistent_idType;
@@ -74,18 +67,14 @@
PyObject *class = NULL;
if (!PyType_Check(object)) {
- if (PER_TypeCheck(object)) {
- class = PyObject_GetAttr(object, py___class__);
- if (!class) {
- PyErr_Clear();
- return 0;
- }
- }
- else
- /* Most objects will exit via this path. They are neither
- extension classes nor instances of them.
- */
+ if (!PER_TypeCheck(object))
return 0;
+
+ class = PyObject_GetAttr(object, py___class__);
+ if (!class) {
+ PyErr_Clear();
+ return 0;
+ }
}
*out_class = class;
return 1;
@@ -249,29 +238,28 @@
static PyTypeObject persistent_idType = {
PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
+ 0, /*ob_size*/
"persistent_id", /*tp_name*/
sizeof(persistent_id), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- /* methods */
+ 0, /*tp_itemsize*/
(destructor)persistent_id_dealloc, /*tp_dealloc*/
- (printfunc)0, /*tp_print*/
- (getattrfunc)0, /*obsolete tp_getattr*/
- (setattrfunc)0, /*obsolete tp_setattr*/
- (cmpfunc)0, /*tp_compare*/
- (reprfunc)0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- (hashfunc)0, /*tp_hash*/
+ 0, /*tp_print*/
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ 0, /*tp_compare*/
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /*tp_hash*/
(ternaryfunc)persistent_id_call, /*tp_call*/
- (reprfunc)0, /*tp_str*/
- (getattrofunc)0, /*tp_getattro*/
- (setattrofunc)0, /*tp_setattro*/
-
- /* Space for future expansion */
- 0L,0L,
+ 0, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT, /* tp_flags */
"C implementation of the persistent_id function defined in Connection.py"
+ /* tp_doc */
};
/* End of code for persistent_id objects */
@@ -301,12 +289,14 @@
make_string(new_oid);
/* Get InvalidObjectReference error */
- UNLESS (m=PyString_FromString("ZODB.POSException")) return;
- ASSIGN(m, PyImport_Import(m));
- UNLESS (m) return;
- ASSIGN(m, PyObject_GetAttrString(m, "InvalidObjectReference"));
- UNLESS (m) return;
- InvalidObjectReference=m;
+ m = PyImport_ImportModule("ZODB.POSException");
+ if (!m)
+ return;
+ InvalidObjectReference = PyObject_GetAttrString(m,
+ "InvalidObjectReference");
+ Py_DECREF(m);
+ if (!InvalidObjectReference)
+ return;
cPersistenceCAPI = PyCObject_Import("Persistence.cPersistence", "CAPI");
if (!cPersistenceCAPI)
@@ -316,5 +306,6 @@
coptimizations_doc_string);
persistent_idType.ob_type = &PyType_Type;
+ Py_INCREF((PyObject *)&persistent_idType);
PyModule_AddObject(m, "persistent_idType", (PyObject *)&persistent_idType);
}
More information about the Zodb-checkins
mailing list