summaryrefslogtreecommitdiffstats
path: root/Objects/weakrefobject.c
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2007-07-21 06:55:02 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2007-07-21 06:55:02 (GMT)
commit6819210b9e4e5719a6f7f9c1725f8fa70a8936f6 (patch)
tree456e2e6b3d9d71e966f3b0e419ecfe44ce3c1fdd /Objects/weakrefobject.c
parentb1994b4a5d0139a010eb0af1d6615a3df92fe786 (diff)
downloadcpython-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 'Objects/weakrefobject.c')
-rw-r--r--Objects/weakrefobject.c33
1 files changed, 15 insertions, 18 deletions
diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c
index a404f29..d26d5d1 100644
--- a/Objects/weakrefobject.c
+++ b/Objects/weakrefobject.c
@@ -105,7 +105,7 @@ weakref_dealloc(PyObject *self)
{
PyObject_GC_UnTrack(self);
clear_weakref((PyWeakReference *) self);
- self->ob_type->tp_free(self);
+ Py_Type(self)->tp_free(self);
}
@@ -172,7 +172,7 @@ weakref_repr(PyWeakReference *self)
name ? "<weakref at %p; to '%.50s' at %p (%s)>"
: "<weakref at %p; to '%.50s' at %p>",
self,
- PyWeakref_GET_OBJECT(self)->ob_type->tp_name,
+ Py_Type(PyWeakref_GET_OBJECT(self))->tp_name,
PyWeakref_GET_OBJECT(self),
name);
Py_XDECREF(nameobj);
@@ -274,10 +274,10 @@ weakref___new__(PyTypeObject *type, PyObject *args, PyObject *kwargs)
PyWeakReference *ref, *proxy;
PyWeakReference **list;
- if (!PyType_SUPPORTS_WEAKREFS(ob->ob_type)) {
+ if (!PyType_SUPPORTS_WEAKREFS(Py_Type(ob))) {
PyErr_Format(PyExc_TypeError,
"cannot create weak reference to '%s' object",
- ob->ob_type->tp_name);
+ Py_Type(ob)->tp_name);
return NULL;
}
if (callback == Py_None)
@@ -332,8 +332,7 @@ weakref___init__(PyObject *self, PyObject *args, PyObject *kwargs)
PyTypeObject
_PyWeakref_RefType = {
- PyObject_HEAD_INIT(&PyType_Type)
- 0,
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
"weakref",
sizeof(PyWeakReference),
0,
@@ -447,7 +446,7 @@ proxy_repr(PyWeakReference *proxy)
char buf[160];
PyOS_snprintf(buf, sizeof(buf),
"<weakproxy at %p to %.100s at %p>", proxy,
- PyWeakref_GET_OBJECT(proxy)->ob_type->tp_name,
+ Py_Type(PyWeakref_GET_OBJECT(proxy))->tp_name,
PyWeakref_GET_OBJECT(proxy));
return PyString_FromString(buf);
}
@@ -646,8 +645,7 @@ static PyMappingMethods proxy_as_mapping = {
PyTypeObject
_PyWeakref_ProxyType = {
- PyObject_HEAD_INIT(&PyType_Type)
- 0,
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
"weakproxy",
sizeof(PyWeakReference),
0,
@@ -681,8 +679,7 @@ _PyWeakref_ProxyType = {
PyTypeObject
_PyWeakref_CallableProxyType = {
- PyObject_HEAD_INIT(&PyType_Type)
- 0,
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
"weakcallableproxy",
sizeof(PyWeakReference),
0,
@@ -722,10 +719,10 @@ PyWeakref_NewRef(PyObject *ob, PyObject *callback)
PyWeakReference **list;
PyWeakReference *ref, *proxy;
- if (!PyType_SUPPORTS_WEAKREFS(ob->ob_type)) {
+ if (!PyType_SUPPORTS_WEAKREFS(Py_Type(ob))) {
PyErr_Format(PyExc_TypeError,
"cannot create weak reference to '%s' object",
- ob->ob_type->tp_name);
+ Py_Type(ob)->tp_name);
return NULL;
}
list = GET_WEAKREFS_LISTPTR(ob);
@@ -781,10 +778,10 @@ PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
PyWeakReference **list;
PyWeakReference *ref, *proxy;
- if (!PyType_SUPPORTS_WEAKREFS(ob->ob_type)) {
+ if (!PyType_SUPPORTS_WEAKREFS(Py_Type(ob))) {
PyErr_Format(PyExc_TypeError,
"cannot create weak reference to '%s' object",
- ob->ob_type->tp_name);
+ Py_Type(ob)->tp_name);
return NULL;
}
list = GET_WEAKREFS_LISTPTR(ob);
@@ -807,9 +804,9 @@ PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
PyWeakReference *prev;
if (PyCallable_Check(ob))
- result->ob_type = &_PyWeakref_CallableProxyType;
+ Py_Type(result) = &_PyWeakref_CallableProxyType;
else
- result->ob_type = &_PyWeakref_ProxyType;
+ Py_Type(result) = &_PyWeakref_ProxyType;
get_basic_refs(*list, &ref, &proxy);
if (callback == NULL) {
if (proxy != NULL) {
@@ -874,7 +871,7 @@ PyObject_ClearWeakRefs(PyObject *object)
PyWeakReference **list;
if (object == NULL
- || !PyType_SUPPORTS_WEAKREFS(object->ob_type)
+ || !PyType_SUPPORTS_WEAKREFS(Py_Type(object))
|| object->ob_refcnt != 0) {
PyErr_BadInternalCall();
return;