mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| typedef struct _typeobject {
 | |
|     PyObject_VAR_HEAD
 | |
|     const char *tp_name; /* For printing, in format "<module>.<name>" */
 | |
|     Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */
 | |
| 
 | |
|     /* Methods to implement standard operations */
 | |
| 
 | |
|     destructor tp_dealloc;
 | |
|     Py_ssize_t tp_vectorcall_offset;
 | |
|     getattrfunc tp_getattr;
 | |
|     setattrfunc tp_setattr;
 | |
|     PyAsyncMethods *tp_as_async; /* formerly known as tp_compare (Python 2)
 | |
|                                     or tp_reserved (Python 3) */
 | |
|     reprfunc tp_repr;
 | |
| 
 | |
|     /* Method suites for standard classes */
 | |
| 
 | |
|     PyNumberMethods *tp_as_number;
 | |
|     PySequenceMethods *tp_as_sequence;
 | |
|     PyMappingMethods *tp_as_mapping;
 | |
| 
 | |
|     /* More standard operations (here for binary compatibility) */
 | |
| 
 | |
|     hashfunc tp_hash;
 | |
|     ternaryfunc tp_call;
 | |
|     reprfunc tp_str;
 | |
|     getattrofunc tp_getattro;
 | |
|     setattrofunc tp_setattro;
 | |
| 
 | |
|     /* Functions to access object as input/output buffer */
 | |
|     PyBufferProcs *tp_as_buffer;
 | |
| 
 | |
|     /* Flags to define presence of optional/expanded features */
 | |
|     unsigned long tp_flags;
 | |
| 
 | |
|     const char *tp_doc; /* Documentation string */
 | |
| 
 | |
|     /* Assigned meaning in release 2.0 */
 | |
|     /* call function for all accessible objects */
 | |
|     traverseproc tp_traverse;
 | |
| 
 | |
|     /* delete references to contained objects */
 | |
|     inquiry tp_clear;
 | |
| 
 | |
|     /* Assigned meaning in release 2.1 */
 | |
|     /* rich comparisons */
 | |
|     richcmpfunc tp_richcompare;
 | |
| 
 | |
|     /* weak reference enabler */
 | |
|     Py_ssize_t tp_weaklistoffset;
 | |
| 
 | |
|     /* Iterators */
 | |
|     getiterfunc tp_iter;
 | |
|     iternextfunc tp_iternext;
 | |
| 
 | |
|     /* Attribute descriptor and subclassing stuff */
 | |
|     PyMethodDef *tp_methods;
 | |
|     PyMemberDef *tp_members;
 | |
|     PyGetSetDef *tp_getset;
 | |
|     // Strong reference on a heap type, borrowed reference on a static type
 | |
|     PyTypeObject *tp_base;
 | |
|     PyObject *tp_dict;
 | |
|     descrgetfunc tp_descr_get;
 | |
|     descrsetfunc tp_descr_set;
 | |
|     Py_ssize_t tp_dictoffset;
 | |
|     initproc tp_init;
 | |
|     allocfunc tp_alloc;
 | |
|     newfunc tp_new;
 | |
|     freefunc tp_free; /* Low-level free-memory routine */
 | |
|     inquiry tp_is_gc; /* For PyObject_IS_GC */
 | |
|     PyObject *tp_bases;
 | |
|     PyObject *tp_mro; /* method resolution order */
 | |
|     PyObject *tp_cache; /* no longer used */
 | |
|     void *tp_subclasses;  /* for static builtin types this is an index */
 | |
|     PyObject *tp_weaklist; /* not used for static builtin types */
 | |
|     destructor tp_del;
 | |
| 
 | |
|     /* Type attribute cache version tag. Added in version 2.6.
 | |
|      * If zero, the cache is invalid and must be initialized.
 | |
|      */
 | |
|     unsigned int tp_version_tag;
 | |
| 
 | |
|     destructor tp_finalize;
 | |
|     vectorcallfunc tp_vectorcall;
 | |
| 
 | |
|     /* bitset of which type-watchers care about this type */
 | |
|     unsigned char tp_watched;
 | |
| 
 | |
|     /* Number of tp_version_tag values used.
 | |
|      * Set to _Py_ATTR_CACHE_UNUSED if the attribute cache is
 | |
|      * disabled for this type (e.g. due to custom MRO entries).
 | |
|      * Otherwise, limited to MAX_VERSIONS_PER_CLASS (defined elsewhere).
 | |
|      */
 | |
|     uint16_t tp_versions_used;
 | |
| } PyTypeObject;
 | 
