]> granicus.if.org Git - python/commitdiff
Supply code objects a new-style tp_members slot and tp_getattr impl.
authorJeremy Hylton <jeremy@alum.mit.edu>
Fri, 14 Sep 2001 20:08:07 +0000 (20:08 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Fri, 14 Sep 2001 20:08:07 +0000 (20:08 +0000)
The chief effects are to make dir() do something useful and supply
them with an __class__.

Python/compile.c

index ec7daafd44cf45b7dcea76196a2cdd97510dbf48..0f10dbe2ce78119baddd01a9333dc6d743aa77bf 100644 (file)
@@ -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 \