Issue #5170: Fixed regression caused when fixing #5768.
[python.git] / Doc / includes / typestruct.h
blob0afe375d4f0fffb868a27c89279e668f6675ba7b
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 */
6 /* Methods to implement standard operations */
8 destructor tp_dealloc;
9 printfunc tp_print;
10 getattrfunc tp_getattr;
11 setattrfunc tp_setattr;
12 cmpfunc tp_compare;
13 reprfunc tp_repr;
15 /* Method suites for standard classes */
17 PyNumberMethods *tp_as_number;
18 PySequenceMethods *tp_as_sequence;
19 PyMappingMethods *tp_as_mapping;
21 /* More standard operations (here for binary compatibility) */
23 hashfunc tp_hash;
24 ternaryfunc tp_call;
25 reprfunc tp_str;
26 getattrofunc tp_getattro;
27 setattrofunc tp_setattro;
29 /* Functions to access object as input/output buffer */
30 PyBufferProcs *tp_as_buffer;
32 /* Flags to define presence of optional/expanded features */
33 long tp_flags;
35 char *tp_doc; /* Documentation string */
37 /* Assigned meaning in release 2.0 */
38 /* call function for all accessible objects */
39 traverseproc tp_traverse;
41 /* delete references to contained objects */
42 inquiry tp_clear;
44 /* Assigned meaning in release 2.1 */
45 /* rich comparisons */
46 richcmpfunc tp_richcompare;
48 /* weak reference enabler */
49 long tp_weaklistoffset;
51 /* Added in release 2.2 */
52 /* Iterators */
53 getiterfunc tp_iter;
54 iternextfunc tp_iternext;
56 /* Attribute descriptor and subclassing stuff */
57 struct PyMethodDef *tp_methods;
58 struct PyMemberDef *tp_members;
59 struct PyGetSetDef *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 freefunc 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;
76 } PyTypeObject;