补充
This commit is contained in:
178
CPython/Python/P312/Object.py
Normal file
178
CPython/Python/P312/Object.py
Normal file
@@ -0,0 +1,178 @@
|
||||
import t, c
|
||||
|
||||
|
||||
Py_uintptr_t: t.CTypedef = t.CUIntPtrT
|
||||
Py_intptr_t: t.CTypedef = t.CIntPtrT
|
||||
|
||||
PY_UINT32_T: t.CTypedef = t.CUInt32T
|
||||
PY_UINT64_T: t.CTypedef = t.CUInt64T
|
||||
|
||||
# Signed variants of the above
|
||||
PY_INT32_T: t.CTypedef = t.CInt32T
|
||||
PY_INT64_T: t.CTypedef = t.CInt64T
|
||||
|
||||
# * Py_ssize_t is a signed integral type such that sizeof(Py_ssize_t) ==
|
||||
# * sizeof(size_t). C99 doesn't define such a thing directly (size_t is an
|
||||
# * unsigned integral type). See PEP 353 for details.
|
||||
# * PY_SSIZE_T_MAX is the largest positive value of type Py_ssize_t.
|
||||
|
||||
Py_ssize_t: t.CTypedef = Py_intptr_t
|
||||
Py_hash_t: t.CTypedef = Py_ssize_t
|
||||
|
||||
SIZEOF_VOID_P: t.CDefine = 8
|
||||
|
||||
|
||||
|
||||
# If this structure is modified, Doc/includes/typestruct.h should be updated
|
||||
# as well.
|
||||
class PyTypeObject:
|
||||
ob_base: PyVarObject
|
||||
|
||||
tp_name: t.CConst | str # For printing, in format "<module>.<name>"
|
||||
tp_basicsize: Py_ssize_t
|
||||
tp_itemsize: Py_ssize_t # For allocation
|
||||
|
||||
# Methods to implement standard operations
|
||||
|
||||
tp_dealloc: destructor
|
||||
tp_vectorcall_offset: Py_ssize_t
|
||||
tp_getattr: getattrfunc
|
||||
tp_setattr: setattrfunc
|
||||
tp_as_async: PyAsyncMethods | t.CPtr # formerly known as tp_compare (Python 2) or tp_reserved (Python 3)
|
||||
tp_repr: reprfunc
|
||||
|
||||
# Method suites for standard classes
|
||||
|
||||
tp_as_number: PyNumberMethods | t.CPtr
|
||||
tp_as_sequence: PySequenceMethods | t.CPtr
|
||||
tp_as_mapping: PyMappingMethods | t.CPtr
|
||||
|
||||
# More standard operations (here for binary compatibility)
|
||||
|
||||
tp_hash: hashfunc
|
||||
tp_call: ternaryfunc
|
||||
tp_str: reprfunc
|
||||
tp_getattro: getattrofunc
|
||||
tp_setattro: setattrofunc
|
||||
|
||||
# Functions to access object as input/output buffer
|
||||
tp_as_buffer: PyBufferProcs | t.CPtr
|
||||
|
||||
# Flags to define presence of optional/expanded features
|
||||
tp_flags: t.CUnsignedLong
|
||||
|
||||
tp_doc: t.CConst | str # Documentation string
|
||||
|
||||
# Assigned meaning in release 2.0
|
||||
# call function for all accessible objects
|
||||
tp_traverse: traverseproc
|
||||
|
||||
# delete references to contained objects */
|
||||
tp_clear: inquiry
|
||||
|
||||
# Assigned meaning in release 2.1
|
||||
# rich comparisons
|
||||
tp_richcompare: richcmpfunc
|
||||
|
||||
# weak reference enabler
|
||||
tp_weaklistoffset: Py_ssize_t
|
||||
|
||||
# Iterators
|
||||
tp_iter: getiterfunc
|
||||
tp_iternext: iternextfunc
|
||||
|
||||
# Attribute descriptor and subclassing stuff
|
||||
tp_methods: PyMethodDef | t.CPtr
|
||||
tp_members: PyMemberDef | t.CPtr
|
||||
tp_getset: PyGetSetDef | t.CPtr
|
||||
# Strong reference on a heap type, borrowed reference on a static type
|
||||
tp_base: PyTypeObject | t.CPtr
|
||||
tp_dict: PyObject | t.CPtr
|
||||
tp_descr_get: descrgetfunc
|
||||
tp_descr_set: descrgetfunc
|
||||
tp_dictoffset: Py_ssize_t
|
||||
tp_init: initproc
|
||||
tp_alloc: allocfunc
|
||||
tp_new: newfunc
|
||||
tp_free: freefunc # Low-level free-memory routine
|
||||
tp_is_gc: inquiry # For PyObject_IS_GC
|
||||
tp_bases: PyObjectPtr
|
||||
tp_mro: PyObjectPtr # method resolution order
|
||||
tp_cache: PyObjectPtr # no longer used
|
||||
tp_subclasses: t.CVoid | t.CPtr # for static builtin types this is an index
|
||||
tp_weaklist: PyObjectPtr # not used for static builtin types
|
||||
tp_del: destructor
|
||||
|
||||
# Type attribute cache version tag. Added in version 2.6
|
||||
tp_version_tag: t.CUnsignedInt
|
||||
|
||||
tp_finalize: destructor
|
||||
tp_vectorcall: vectorcallfunc
|
||||
|
||||
# bitset of which type-watchers care about this type
|
||||
tp_watched: t.CUnsignedChar
|
||||
|
||||
|
||||
class PyMethodDef:
|
||||
ml_name: t.CConst | str # The name of the built-in function/method */
|
||||
ml_meth: PyCFunction # The C function that implements it */
|
||||
ml_flags: int # Combination of METH_xxx flags, which mostly describe the args expected by the C func
|
||||
ml_doc: t.CConst | str # The __doc__ attribute, or NULL
|
||||
|
||||
class PyModuleDef:
|
||||
m_base: PyModuleDef_Base
|
||||
m_name: t.CConst | str
|
||||
m_doc: t.CConst | str
|
||||
m_size: Py_ssize_t
|
||||
m_methods: PyMethodDef | t.CPtr
|
||||
m_slots: PyModuleDef_Slot | t.CPtr
|
||||
m_traverse: traverseproc
|
||||
m_clear: inquiry
|
||||
m_free: freefunc
|
||||
|
||||
class PyMemberDef:
|
||||
name: t.CConst | str
|
||||
type: int
|
||||
offset: Py_ssize_t
|
||||
flags: int
|
||||
doc: t.CConst | str
|
||||
|
||||
class PyGetSetDef:
|
||||
name: t.CConst | str
|
||||
get: getter
|
||||
set: setter
|
||||
doc: t.CConst | str
|
||||
closure: t.CVoid | t.CPtr
|
||||
|
||||
|
||||
|
||||
|
||||
class PyVarObject:
|
||||
ob_base: PyObject
|
||||
ob_size: Py_ssize_t # Number of items in variable part
|
||||
|
||||
class PyObject:
|
||||
# _PyObject_HEAD_EXTRA
|
||||
class ob(t.CUnion):
|
||||
ob_refcnt: Py_ssize_t
|
||||
if c.CIf(SIZEOF_VOID_P > 4):
|
||||
ob_refcnt_split: list[PY_UINT32_T, 2]
|
||||
ob_type: PyTypeObject | t.CPtr
|
||||
|
||||
PyObjectPtr: t.CTypedef = PyObject | t.CPtr
|
||||
|
||||
|
||||
#typedef struct PyModuleDef PyModuleDef;
|
||||
#typedef struct PyModuleDef_Slot PyModuleDef_Slot;
|
||||
#typedef struct PyMethodDef PyMethodDef;
|
||||
#typedef struct PyGetSetDef PyGetSetDef;
|
||||
#typedef struct PyMemberDef PyMemberDef;
|
||||
|
||||
#typedef struct _object PyObject;
|
||||
#typedef struct _longobject PyLongObject;
|
||||
#typedef struct _typeobject PyTypeObject;
|
||||
#typedef struct PyCodeObject PyCodeObject;
|
||||
#typedef struct _frame PyFrameObject;
|
||||
|
||||
#typedef struct _ts PyThreadState;
|
||||
#typedef struct _is PyInterpreterState;
|
||||
Reference in New Issue
Block a user