[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
2001年7月02日 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

AltStyle によって変換されたページ (->オリジナル) /