[Python-checkins] CVS: python/dist/src/Python ceval.c,2.241.2.5,2.241.2.6

Tim Peters tim_one@users.sourceforge.net
Sat, 07 Jul 2001 21:30:31 -0700


Update of /cvsroot/python/python/dist/src/Python
In directory usw-pr-cvs1:/tmp/cvs-serv20230/descr/dist/src/Python

Modified Files:
      Tag: descr-branch
	ceval.c 
Log Message:
test_generators.py
    Passes again.
ceval.c
    Redid genobject type object to use PyObject_GenericGetAttr; got
    rid of genobject's custom getattr routine.
typeobject.c
    Improved the docstring wrapperbase tab_next uses for .next().
PLAN.txt
    Added note about major (IMO) lost dir() functionality (one of the
    reasons test_generators.py failed is that dir(object) usually
    returns an empty list now).


Index: ceval.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/ceval.c,v
retrieving revision 2.241.2.5
retrieving revision 2.241.2.6
diff -C2 -r2.241.2.5 -r2.241.2.6
*** ceval.c	2001/07/07 22:55:30	2.241.2.5
--- ceval.c	2001/07/08 04:30:29	2.241.2.6
***************
*** 14,17 ****
--- 14,18 ----
  #include "eval.h"
  #include "opcode.h"
+ #include "structmember.h"
  
  #ifdef macintosh
***************
*** 194,226 ****
  };
  
! static PyObject *
! gen_getattr(genobject *gen, char *name)
! {
! 	PyObject *result;
! 
! 	if (strcmp(name, "gi_frame") == 0) {
! 		result = (PyObject *)gen->gi_frame;
! 		assert(result != NULL);
! 		Py_INCREF(result);
! 	}
! 	else if (strcmp(name, "gi_running") == 0)
! 		result = (PyObject *)PyInt_FromLong((long)gen->gi_running);
! 	else if (strcmp(name, "__members__") == 0)
! 		result = Py_BuildValue("[ss]", "gi_frame", "gi_running");
! 	else
!  		result = Py_FindMethod(gen_methods, (PyObject *)gen, name);
!  	return result;
! }
  
  statichere PyTypeObject gentype = {
  	PyObject_HEAD_INIT(&PyType_Type)
! 	0,					/* ob_size */
! 	"generator",				/* tp_name */
! 	sizeof(genobject),			/* tp_basicsize */
! 	0,					/* tp_itemsize */
! 	/* methods */
! 	(destructor)gen_dealloc, 		/* tp_dealloc */
  	0,					/* tp_print */
! 	(getattrfunc)gen_getattr,		/* tp_getattr */
  	0,					/* tp_setattr */
  	0,					/* tp_compare */
--- 195,213 ----
  };
  
! static struct memberlist gen_memberlist[] = {
! 	{"gi_frame",	T_OBJECT, offsetof(genobject, gi_frame),	RO},
! 	{"gi_running",	T_INT,    offsetof(genobject, gi_running),	RO},
! 	{NULL}	/* Sentinel */
! };
  
  statichere PyTypeObject gentype = {
  	PyObject_HEAD_INIT(&PyType_Type)
! 	0,			/* Number of items for varobject */
! 	"generator",		/* Name of this type */
! 	sizeof(genobject),	/* Basic object size */
! 	0,			/* Item size for varobject */
! 	(destructor)gen_dealloc,		/* tp_dealloc */
  	0,					/* tp_print */
! 	0, 					/* tp_getattr */
  	0,					/* tp_setattr */
  	0,					/* tp_compare */
***************
*** 232,246 ****
  	0,					/* tp_call */
  	0,					/* tp_str */
! 	0,					/* tp_getattro */
  	0,					/* tp_setattro */
  	0,					/* tp_as_buffer */
  	Py_TPFLAGS_DEFAULT,			/* tp_flags */
!  	0,					/* tp_doc */
!  	0,					/* tp_traverse */
!  	0,					/* tp_clear */
  	0,					/* tp_richcompare */
  	0,					/* tp_weaklistoffset */
  	(getiterfunc)gen_getiter,		/* tp_iter */
  	(iternextfunc)gen_iternext,		/* tp_iternext */
  };
  
--- 219,238 ----
  	0,					/* tp_call */
  	0,					/* tp_str */
! 	PyObject_GenericGetAttr,		/* tp_getattro */
  	0,					/* tp_setattro */
  	0,					/* tp_as_buffer */
  	Py_TPFLAGS_DEFAULT,			/* tp_flags */
! 	0,					/* tp_doc */
! 	0,					/* tp_traverse */
! 	0,					/* tp_clear */
  	0,					/* tp_richcompare */
  	0,					/* tp_weaklistoffset */
  	(getiterfunc)gen_getiter,		/* tp_iter */
  	(iternextfunc)gen_iternext,		/* tp_iternext */
+ 	gen_methods,				/* tp_methods */
+ 	gen_memberlist,				/* tp_members */
+ 	0,					/* tp_getset */
+ 	0,					/* tp_base */
+ 	0,					/* tp_dict */
  };