[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