[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 */
};