From c785f4841c24ff912ab5cc1ab34da4b9d64205e5 Mon Sep 17 00:00:00 2001 From: Jeremy Hylton Date: Fri, 14 Sep 2001 20:08:07 +0000 Subject: Supply code objects a new-style tp_members slot and tp_getattr impl. The chief effects are to make dir() do something useful and supply them with an __class__. --- Python/compile.c | 50 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/Python/compile.c b/Python/compile.c index ec7daaf..0f10dbe 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -91,12 +91,6 @@ static struct memberlist code_memberlist[] = { {NULL} /* Sentinel */ }; -static PyObject * -code_getattr(PyCodeObject *co, char *name) -{ - return PyMember_Get((char *)co, code_memberlist, name); -} - static void code_dealloc(PyCodeObject *co) { @@ -189,16 +183,40 @@ PyTypeObject PyCode_Type = { "code", sizeof(PyCodeObject), 0, - (destructor)code_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)code_getattr, /*tp_getattr*/ - 0, /*tp_setattr*/ - (cmpfunc)code_compare, /*tp_compare*/ - (reprfunc)code_repr, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - (hashfunc)code_hash, /*tp_hash*/ + (destructor)code_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + (cmpfunc)code_compare, /* tp_compare */ + (reprfunc)code_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)code_hash, /* tp_hash */ + 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 */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + code_memberlist, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ }; #define NAME_CHARS \ -- cgit v0.12