• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 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;
75 
76 } PyTypeObject;
77