diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2007-07-21 06:55:02 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2007-07-21 06:55:02 (GMT) |
commit | 6819210b9e4e5719a6f7f9c1725f8fa70a8936f6 (patch) | |
tree | 456e2e6b3d9d71e966f3b0e419ecfe44ce3c1fdd /Modules/cPickle.c | |
parent | b1994b4a5d0139a010eb0af1d6615a3df92fe786 (diff) | |
download | cpython-6819210b9e4e5719a6f7f9c1725f8fa70a8936f6.zip cpython-6819210b9e4e5719a6f7f9c1725f8fa70a8936f6.tar.gz cpython-6819210b9e4e5719a6f7f9c1725f8fa70a8936f6.tar.bz2 |
PEP 3123: Provide forward compatibility with Python 3.0, while keeping
backwards compatibility. Add Py_Refcnt, Py_Type, Py_Size, and
PyVarObject_HEAD_INIT.
Diffstat (limited to 'Modules/cPickle.c')
-rw-r--r-- | Modules/cPickle.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/Modules/cPickle.c b/Modules/cPickle.c index dd9887b..fbf6a12 100644 --- a/Modules/cPickle.c +++ b/Modules/cPickle.c @@ -151,12 +151,12 @@ Pdata_dealloc(Pdata *self) } static PyTypeObject PdataType = { - PyObject_HEAD_INIT(NULL) 0, "cPickle.Pdata", sizeof(Pdata), 0, + PyVarObject_HEAD_INIT(NULL, 0) "cPickle.Pdata", sizeof(Pdata), 0, (destructor)Pdata_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0L,0L,0L,0L, "" }; -#define Pdata_Check(O) ((O)->ob_type == &PdataType) +#define Pdata_Check(O) (Py_Type(O) == &PdataType) static PyObject * Pdata_New(void) @@ -316,7 +316,7 @@ Pdata_popList(Pdata *self, int start) } #define FREE_ARG_TUP(self) { \ - if (self->arg->ob_refcnt > 1) { \ + if (Py_Refcnt(self->arg) > 1) { \ Py_DECREF(self->arg); \ self->arg=NULL; \ } \ @@ -752,7 +752,7 @@ get(Picklerobject *self, PyObject *id) static int put(Picklerobject *self, PyObject *ob) { - if (ob->ob_refcnt < 2 || self->fast) + if (Py_Refcnt(ob) < 2 || self->fast) return 0; return put2(self, ob); @@ -916,7 +916,7 @@ fast_save_enter(Picklerobject *self, PyObject *obj) PyErr_Format(PyExc_ValueError, "fast mode: can't pickle cyclic objects " "including object type %s at %p", - obj->ob_type->tp_name, obj); + Py_Type(obj)->tp_name, obj); self->fast_container = -1; return 0; } @@ -2320,7 +2320,7 @@ save(Picklerobject *self, PyObject *args, int pers_save) goto finally; } - type = args->ob_type; + type = Py_Type(args); switch (type->tp_name[0]) { case 'b': @@ -2372,7 +2372,7 @@ save(Picklerobject *self, PyObject *args, int pers_save) #endif } - if (args->ob_refcnt > 1) { + if (Py_Refcnt(args) > 1) { if (!( py_ob_id = PyLong_FromVoidPtr(args))) goto finally; @@ -2913,7 +2913,7 @@ Pickler_dealloc(Picklerobject *self) Py_XDECREF(self->inst_pers_func); Py_XDECREF(self->dispatch_table); PyMem_Free(self->write_buf); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } static int @@ -3037,8 +3037,7 @@ PyDoc_STRVAR(Picklertype__doc__, "Objects that know how to pickle objects\n"); static PyTypeObject Picklertype = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "cPickle.Pickler", /*tp_name*/ sizeof(Picklerobject), /*tp_basicsize*/ 0, @@ -5254,7 +5253,7 @@ Unpickler_dealloc(Unpicklerobject *self) free(self->buf); } - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } static int @@ -5483,8 +5482,7 @@ PyDoc_STRVAR(Unpicklertype__doc__, "Objects that know how to unpickle"); static PyTypeObject Unpicklertype = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "cPickle.Unpickler", /*tp_name*/ sizeof(Unpicklerobject), /*tp_basicsize*/ 0, @@ -5708,9 +5706,9 @@ initcPickle(void) PyObject *format_version; PyObject *compatible_formats; - Picklertype.ob_type = &PyType_Type; - Unpicklertype.ob_type = &PyType_Type; - PdataType.ob_type = &PyType_Type; + Py_Type(&Picklertype) = &PyType_Type; + Py_Type(&Unpicklertype) = &PyType_Type; + Py_Type(&PdataType) = &PyType_Type; /* Initialize some pieces. We need to do this before module creation, * so we're forced to use a temporary dictionary. :( |