|
| 1 | +typedef struct _typeobject { |
| 2 | + PyObject_VAR_HEAD |
| 3 | + char *tp_name; /* For printing, in format "<module>.<name>" */ |
| 4 | + int tp_basicsize, tp_itemsize; /* For allocation */ |
| 5 | + |
| 6 | + /* Methods to implement standard operations */ |
| 7 | + |
| 8 | + destructor tp_dealloc; |
| 9 | + printfunc tp_print; |
| 10 | + getattrfunc tp_getattr; |
| 11 | + setattrfunc tp_setattr; |
| 12 | + cmpfunc tp_compare; |
| 13 | + reprfunc tp_repr; |
| 14 | + |
| 15 | + /* Method suites for standard classes */ |
| 16 | + |
| 17 | + PyNumberMethods *tp_as_number; |
| 18 | + PySequenceMethods *tp_as_sequence; |
| 19 | + PyMappingMethods *tp_as_mapping; |
| 20 | + |
| 21 | + /* More standard operations (here for binary compatibility) */ |
| 22 | + |
| 23 | + hashfunc tp_hash; |
| 24 | + ternaryfunc tp_call; |
| 25 | + reprfunc tp_str; |
| 26 | + getattrofunc tp_getattro; |
| 27 | + setattrofunc tp_setattro; |
| 28 | + |
| 29 | + /* Functions to access object as input/output buffer */ |
| 30 | + PyBufferProcs *tp_as_buffer; |
| 31 | + |
| 32 | + /* Flags to define presence of optional/expanded features */ |
| 33 | + long tp_flags; |
| 34 | + |
| 35 | + char *tp_doc; /* Documentation string */ |
| 36 | + |
| 37 | + /* Assigned meaning in release 2.0 */ |
| 38 | + /* call function for all accessible objects */ |
| 39 | + traverseproc tp_traverse; |
| 40 | + |
| 41 | + /* delete references to contained objects */ |
| 42 | + inquiry tp_clear; |
| 43 | + |
| 44 | + /* Assigned meaning in release 2.1 */ |
| 45 | + /* rich comparisons */ |
| 46 | + richcmpfunc tp_richcompare; |
| 47 | + |
| 48 | + /* weak reference enabler */ |
| 49 | + long tp_weaklistoffset; |
| 50 | + |
| 51 | + /* Added in release 2.2 */ |
| 52 | + /* Iterators */ |
| 53 | + getiterfunc tp_iter; |
| 54 | + iternextfunc tp_iternext; |
| 55 | + |
| 56 | + /* Attribute descriptor and subclassing stuff */ |
| 57 | + struct PyMethodDef *tp_methods; |
| 58 | + struct memberlist *tp_members; |
| 59 | + struct getsetlist *tp_getset; |
| 60 | + struct _typeobject *tp_base; |
| 61 | + PyObject *tp_dict; |
| 62 | + descrgetfunc tp_descr_get; |
| 63 | + descrsetfunc tp_descr_set; |
| 64 | + long tp_dictoffset; |
| 65 | + initproc tp_init; |
| 66 | + allocfunc tp_alloc; |
| 67 | + newfunc tp_new; |
| 68 | + destructor tp_free; /* Low-level free-memory routine */ |
| 69 | + inquiry tp_is_gc; /* For PyObject_IS_GC */ |
| 70 | + PyObject *tp_bases; |
| 71 | + PyObject *tp_mro; /* method resolution order */ |
| 72 | + PyObject *tp_cache; |
| 73 | + PyObject *tp_subclasses; |
| 74 | + PyObject *tp_weaklist; |
| 75 | + |
| 76 | +} PyTypeObject; |
0 commit comments