[Python-checkins] CVS: python/dist/src/Objects funcobject.c,2.37.4.7,2.37.4.8 object.c,2.124.4.21,2.124.4.22 typeobject.c,2.16.8.57,2.16.8.58
Guido van Rossum
gvanrossum@users.sourceforge.net
Mon, 02 Jul 2001 17:48:16 -0700
Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv16653/Objects
Modified Files:
Tag: descr-branch
funcobject.c object.c typeobject.c
Log Message:
Change the descrgetfunc signature: the thir argument is now an
arbitrary object. This is needed so that classmethod() can also be
used for classic classes.
This is *almost* just a metter of changing casts that don't cause
different code to be generated; the exception is wrap_descr_get which
also removes a typecheck from the PyArg_ParseTuple() argument list.
Index: funcobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/funcobject.c,v
retrieving revision 2.37.4.7
retrieving revision 2.37.4.8
diff -C2 -r2.37.4.7 -r2.37.4.8
*** funcobject.c 2001/07/02 18:06:06 2.37.4.7
--- funcobject.c 2001/07/03 00:48:14 2.37.4.8
***************
*** 331,337 ****
/* Bind a function to an object */
static PyObject *
! func_descr_get(PyObject *func, PyObject *obj, PyTypeObject *type)
{
! return PyMethod_New(func, obj, (PyObject *)type);
}
--- 331,337 ----
/* Bind a function to an object */
static PyObject *
! func_descr_get(PyObject *func, PyObject *obj, PyObject *type)
{
! return PyMethod_New(func, obj, type);
}
***************
*** 391,395 ****
static PyObject *
! cm_descr_get(PyObject *self, PyObject *obj, PyTypeObject *type)
{
classmethod *cm = (classmethod *)self;
--- 391,395 ----
static PyObject *
! cm_descr_get(PyObject *self, PyObject *obj, PyObject *type)
{
classmethod *cm = (classmethod *)self;
***************
*** 401,405 ****
}
return PyMethod_New(cm->cm_callable,
! (PyObject *)type, (PyObject *)(type->ob_type));
}
--- 401,405 ----
}
return PyMethod_New(cm->cm_callable,
! type, (PyObject *)(type->ob_type));
}
Index: object.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/object.c,v
retrieving revision 2.124.4.21
retrieving revision 2.124.4.22
diff -C2 -r2.124.4.21 -r2.124.4.22
*** object.c 2001/07/03 00:37:47 2.124.4.21
--- object.c 2001/07/03 00:48:14 2.124.4.22
***************
*** 1128,1132 ****
f = descr->ob_type->tp_descr_get;
if (f != NULL && PyDescr_IsData(descr))
! return f(descr, obj, obj->ob_type);
}
--- 1128,1132 ----
f = descr->ob_type->tp_descr_get;
if (f != NULL && PyDescr_IsData(descr))
! return f(descr, obj, (PyObject *)obj->ob_type);
}
***************
*** 1144,1148 ****
if (f != NULL)
! return f(descr, obj, obj->ob_type);
if (descr != NULL) {
--- 1144,1148 ----
if (f != NULL)
! return f(descr, obj, (PyObject *)obj->ob_type);
if (descr != NULL) {
Index: typeobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/typeobject.c,v
retrieving revision 2.16.8.57
retrieving revision 2.16.8.58
diff -C2 -r2.16.8.57 -r2.16.8.58
*** typeobject.c 2001/07/03 00:37:47 2.16.8.57
--- typeobject.c 2001/07/03 00:48:14 2.16.8.58
***************
*** 633,637 ****
f = descr->ob_type->tp_descr_get;
if (f != NULL && PyDescr_IsData(descr))
! return f(descr, (PyObject *)type, metatype);
}
--- 633,638 ----
f = descr->ob_type->tp_descr_get;
if (f != NULL && PyDescr_IsData(descr))
! return f(descr,
! (PyObject *)type, (PyObject *)metatype);
}
***************
*** 641,645 ****
f = res->ob_type->tp_descr_get;
if (f != NULL)
! return f(res, (PyObject *)NULL, type);
Py_INCREF(res);
return res;
--- 642,646 ----
f = res->ob_type->tp_descr_get;
if (f != NULL)
! return f(res, (PyObject *)NULL, (PyObject *)type);
Py_INCREF(res);
return res;
***************
*** 648,652 ****
/* Use the descriptor from the metatype */
if (f != NULL) {
! res = f(descr, NULL, metatype);
return res;
}
--- 649,653 ----
/* Use the descriptor from the metatype */
if (f != NULL) {
! res = f(descr, (PyObject *)NULL, (PyObject *)metatype);
return res;
}
***************
*** 1643,1652 ****
descrgetfunc func = (descrgetfunc)wrapped;
PyObject *obj;
! PyTypeObject *type = NULL;
! if (!PyArg_ParseTuple(args, "O|O!", &obj, &PyType_Type, &type))
return NULL;
if (type == NULL)
! type = obj->ob_type;
return (*func)(self, obj, type);
}
--- 1644,1653 ----
descrgetfunc func = (descrgetfunc)wrapped;
PyObject *obj;
! PyObject *type = NULL;
! if (!PyArg_ParseTuple(args, "O|O", &obj, &type))
return NULL;
if (type == NULL)
! type = (PyObject *)obj->ob_type;
return (*func)(self, obj, type);
}
***************
*** 2043,2047 ****
}
! SLOT2(tp_descr_get, get, PyObject *, PyTypeObject *, OO);
static int
--- 2044,2048 ----
}
! SLOT2(tp_descr_get, get, PyObject *, PyObject *, OO);
static int