55 #if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
60 #if defined(Py_TRACE_REFS) && !defined(Py_REF_DEBUG)
66 #define _PyObject_HEAD_EXTRA \
67 struct _object *_ob_next; \
68 struct _object *_ob_prev;
70 #define _PyObject_EXTRA_INIT 0, 0,
73 #define _PyObject_HEAD_EXTRA
74 #define _PyObject_EXTRA_INIT
78 #define PyObject_HEAD \
79 _PyObject_HEAD_EXTRA \
80 Py_ssize_t ob_refcnt; \
81 struct _typeobject *ob_type;
83 #define PyObject_HEAD_INIT(type) \
84 _PyObject_EXTRA_INIT \
87 #define PyVarObject_HEAD_INIT(type, size) \
88 PyObject_HEAD_INIT(type) size,
96 #define PyObject_VAR_HEAD \
99 #define Py_INVALID_SIZE (Py_ssize_t)-1
114 #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
115 #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
116 #define Py_SIZE(ob) (((PyVarObject*)(ob))->ob_size)
135 typedef PyObject * (*ternaryfunc)(PyObject *, PyObject *, PyObject *);
185 #define PyBUF_SIMPLE 0
186 #define PyBUF_WRITABLE 0x0001
188 #define PyBUF_WRITEABLE PyBUF_WRITABLE
189 #define PyBUF_FORMAT 0x0004
190 #define PyBUF_ND 0x0008
191 #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
192 #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
193 #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
194 #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
195 #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
197 #define PyBUF_CONTIG (PyBUF_ND | PyBUF_WRITABLE)
198 #define PyBUF_CONTIG_RO (PyBUF_ND)
200 #define PyBUF_STRIDED (PyBUF_STRIDES | PyBUF_WRITABLE)
201 #define PyBUF_STRIDED_RO (PyBUF_STRIDES)
203 #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_WRITABLE | PyBUF_FORMAT)
204 #define PyBUF_RECORDS_RO (PyBUF_STRIDES | PyBUF_FORMAT)
206 #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_WRITABLE | PyBUF_FORMAT)
207 #define PyBUF_FULL_RO (PyBUF_INDIRECT | PyBUF_FORMAT)
210 #define PyBUF_READ 0x100
211 #define PyBUF_WRITE 0x200
212 #define PyBUF_SHADOW 0x400
308 typedef PyObject *(*getattrfunc)(PyObject *,
char *);
309 typedef PyObject *(*getattrofunc)(PyObject *, PyObject *);
313 typedef PyObject *(*reprfunc)(PyObject *);
315 typedef PyObject *(*richcmpfunc) (PyObject *, PyObject *,
int);
316 typedef PyObject *(*getiterfunc) (PyObject *);
317 typedef PyObject *(*iternextfunc) (PyObject *);
318 typedef PyObject *(*descrgetfunc) (PyObject *, PyObject *, PyObject *);
321 typedef PyObject *(*newfunc)(
struct _typeobject *, PyObject *, PyObject *);
405 Py_ssize_t tp_allocs;
407 Py_ssize_t tp_maxalloc;
432 #define PyHeapType_GET_MEMBERS(etype) \
433 ((PyMemberDef *)(((char *)etype) + Py_TYPE(etype)->tp_basicsize))
438 #define PyObject_TypeCheck(ob, tp) \
439 (Py_TYPE(ob) == (tp) || PyType_IsSubtype(Py_TYPE(ob), (tp)))
445 #define PyType_Check(op) \
446 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS)
447 #define PyType_CheckExact(op) (Py_TYPE(op) == &PyType_Type)
450 PyAPI_FUNC(PyObject *) PyType_GenericAlloc(PyTypeObject *, Py_ssize_t);
451 PyAPI_FUNC(PyObject *) PyType_GenericNew(PyTypeObject *,
452 PyObject *, PyObject *);
453 PyAPI_FUNC(PyObject *) _PyType_Lookup(PyTypeObject *, PyObject *);
454 PyAPI_FUNC(PyObject *) _PyObject_LookupSpecial(PyObject *,
char *, PyObject **);
455 PyAPI_FUNC(
unsigned int) PyType_ClearCache(
void);
456 PyAPI_FUNC(
void) PyType_Modified(PyTypeObject *);
461 PyAPI_FUNC(PyObject *) PyObject_Repr(PyObject *);
462 PyAPI_FUNC(PyObject *) _PyObject_Str(PyObject *);
463 PyAPI_FUNC(PyObject *) PyObject_Str(PyObject *);
464 #define PyObject_Bytes PyObject_Str
465 #ifdef Py_USING_UNICODE
466 PyAPI_FUNC(PyObject *) PyObject_Unicode(PyObject *);
468 PyAPI_FUNC(
int) PyObject_Compare(PyObject *, PyObject *);
469 PyAPI_FUNC(PyObject *) PyObject_RichCompare(PyObject *, PyObject *,
int);
470 PyAPI_FUNC(
int) PyObject_RichCompareBool(PyObject *, PyObject *,
int);
471 PyAPI_FUNC(PyObject *) PyObject_GetAttrString(PyObject *, const
char *);
472 PyAPI_FUNC(
int) PyObject_SetAttrString(PyObject *, const
char *, PyObject *);
473 PyAPI_FUNC(
int) PyObject_HasAttrString(PyObject *, const
char *);
474 PyAPI_FUNC(PyObject *) PyObject_GetAttr(PyObject *, PyObject *);
475 PyAPI_FUNC(
int) PyObject_SetAttr(PyObject *, PyObject *, PyObject *);
476 PyAPI_FUNC(
int) PyObject_HasAttr(PyObject *, PyObject *);
477 PyAPI_FUNC(PyObject **) _PyObject_GetDictPtr(PyObject *);
478 PyAPI_FUNC(PyObject *) PyObject_SelfIter(PyObject *);
479 PyAPI_FUNC(PyObject *) _PyObject_NextNotImplemented(PyObject *);
480 PyAPI_FUNC(PyObject *) PyObject_GenericGetAttr(PyObject *, PyObject *);
481 PyAPI_FUNC(
int) PyObject_GenericSetAttr(PyObject *,
482 PyObject *, PyObject *);
484 PyAPI_FUNC(
long) PyObject_HashNotImplemented(PyObject *);
488 PyAPI_FUNC(
int) PyNumber_Coerce(PyObject **, PyObject **);
489 PyAPI_FUNC(
int) PyNumber_CoerceEx(PyObject **, PyObject **);
491 PyAPI_FUNC(
void) PyObject_ClearWeakRefs(PyObject *);
498 _PyObject_GenericGetAttrWithDict(PyObject *, PyObject *, PyObject *);
500 _PyObject_GenericSetAttrWithDict(PyObject *, PyObject *,
501 PyObject *, PyObject *);
509 PyAPI_FUNC(PyObject *) PyObject_Dir(PyObject *);
533 #define PyObject_REPR(obj) PyString_AS_STRING(PyObject_Repr(obj))
536 #define Py_PRINT_RAW 1
566 #define Py_TPFLAGS_HAVE_GETCHARBUFFER (1L<<0)
569 #define Py_TPFLAGS_HAVE_SEQUENCE_IN (1L<<1)
573 #define Py_TPFLAGS_GC 0
576 #define Py_TPFLAGS_HAVE_INPLACEOPS (1L<<3)
579 #define Py_TPFLAGS_CHECKTYPES (1L<<4)
582 #define Py_TPFLAGS_HAVE_RICHCOMPARE (1L<<5)
585 #define Py_TPFLAGS_HAVE_WEAKREFS (1L<<6)
588 #define Py_TPFLAGS_HAVE_ITER (1L<<7)
591 #define Py_TPFLAGS_HAVE_CLASS (1L<<8)
594 #define Py_TPFLAGS_HEAPTYPE (1L<<9)
597 #define Py_TPFLAGS_BASETYPE (1L<<10)
600 #define Py_TPFLAGS_READY (1L<<12)
603 #define Py_TPFLAGS_READYING (1L<<13)
606 #define Py_TPFLAGS_HAVE_GC (1L<<14)
610 #define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION (3L<<15)
612 #define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION 0
616 #define Py_TPFLAGS_HAVE_INDEX (1L<<17)
619 #define Py_TPFLAGS_HAVE_VERSION_TAG (1L<<18)
620 #define Py_TPFLAGS_VALID_VERSION_TAG (1L<<19)
623 #define Py_TPFLAGS_IS_ABSTRACT (1L<<20)
626 #define Py_TPFLAGS_HAVE_NEWBUFFER (1L<<21)
629 #define Py_TPFLAGS_INT_SUBCLASS (1L<<23)
630 #define Py_TPFLAGS_LONG_SUBCLASS (1L<<24)
631 #define Py_TPFLAGS_LIST_SUBCLASS (1L<<25)
632 #define Py_TPFLAGS_TUPLE_SUBCLASS (1L<<26)
633 #define Py_TPFLAGS_STRING_SUBCLASS (1L<<27)
634 #define Py_TPFLAGS_UNICODE_SUBCLASS (1L<<28)
635 #define Py_TPFLAGS_DICT_SUBCLASS (1L<<29)
636 #define Py_TPFLAGS_BASE_EXC_SUBCLASS (1L<<30)
637 #define Py_TPFLAGS_TYPE_SUBCLASS (1L<<31)
639 #define Py_TPFLAGS_DEFAULT_EXTERNAL ( \
640 Py_TPFLAGS_HAVE_GETCHARBUFFER | \
641 Py_TPFLAGS_HAVE_SEQUENCE_IN | \
642 Py_TPFLAGS_HAVE_INPLACEOPS | \
643 Py_TPFLAGS_HAVE_RICHCOMPARE | \
644 Py_TPFLAGS_HAVE_WEAKREFS | \
645 Py_TPFLAGS_HAVE_ITER | \
646 Py_TPFLAGS_HAVE_CLASS | \
647 Py_TPFLAGS_HAVE_STACKLESS_EXTENSION | \
648 Py_TPFLAGS_HAVE_INDEX | \
650 #define Py_TPFLAGS_DEFAULT_CORE (Py_TPFLAGS_DEFAULT_EXTERNAL | \
651 Py_TPFLAGS_HAVE_VERSION_TAG)
654 #define Py_TPFLAGS_DEFAULT Py_TPFLAGS_DEFAULT_CORE
656 #define Py_TPFLAGS_DEFAULT Py_TPFLAGS_DEFAULT_EXTERNAL
659 #define PyType_HasFeature(t,f) (((t)->tp_flags & (f)) != 0)
660 #define PyType_FastSubclass(t,f) PyType_HasFeature(t,f)
708 PyAPI_FUNC(
void) _Py_NegativeRefcount(const
char *fname,
709 int lineno, PyObject *op);
713 #define _Py_INC_REFTOTAL _Py_RefTotal++
714 #define _Py_DEC_REFTOTAL _Py_RefTotal--
715 #define _Py_REF_DEBUG_COMMA ,
716 #define _Py_CHECK_REFCNT(OP) \
717 { if (((PyObject*)OP)->ob_refcnt < 0) \
718 _Py_NegativeRefcount(__FILE__, __LINE__, \
722 #define _Py_INC_REFTOTAL
723 #define _Py_DEC_REFTOTAL
724 #define _Py_REF_DEBUG_COMMA
725 #define _Py_CHECK_REFCNT(OP) ;
731 #define _Py_INC_TPALLOCS(OP) inc_count(Py_TYPE(OP))
732 #define _Py_INC_TPFREES(OP) dec_count(Py_TYPE(OP))
733 #define _Py_DEC_TPFREES(OP) Py_TYPE(OP)->tp_frees--
734 #define _Py_COUNT_ALLOCS_COMMA ,
736 #define _Py_INC_TPALLOCS(OP)
737 #define _Py_INC_TPFREES(OP)
738 #define _Py_DEC_TPFREES(OP)
739 #define _Py_COUNT_ALLOCS_COMMA
748 PyAPI_FUNC(
void) _Py_PrintReferenceAddresses(FILE *);
749 PyAPI_FUNC(
void) _Py_AddToAllObjects(PyObject *,
int force);
755 #define _Py_NewReference(op) ( \
756 _Py_INC_TPALLOCS(op) _Py_COUNT_ALLOCS_COMMA \
757 _Py_INC_REFTOTAL _Py_REF_DEBUG_COMMA \
760 #define _Py_ForgetReference(op) _Py_INC_TPFREES(op)
762 #define _Py_Dealloc(op) ( \
763 _Py_INC_TPFREES(op) _Py_COUNT_ALLOCS_COMMA \
764 (*Py_TYPE(op)->tp_dealloc)((PyObject *)(op)))
767 #define Py_INCREF(op) ( \
768 _Py_INC_REFTOTAL _Py_REF_DEBUG_COMMA \
769 ((PyObject*)(op))->ob_refcnt++)
771 #define Py_DECREF(op) \
773 if (_Py_DEC_REFTOTAL _Py_REF_DEBUG_COMMA \
774 --((PyObject*)(op))->ob_refcnt != 0) \
775 _Py_CHECK_REFCNT(op) \
777 _Py_Dealloc((PyObject *)(op)); \
814 #define Py_CLEAR(op) \
817 PyObject *_py_tmp = (PyObject *)(op); \
819 Py_DECREF(_py_tmp); \
824 #define Py_XINCREF(op) do { if ((op) == NULL) ; else Py_INCREF(op); } while (0)
825 #define Py_XDECREF(op) do { if ((op) == NULL) ; else Py_DECREF(op); } while (0)
841 #define Py_None (&_Py_NoneStruct)
844 #define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None
850 PyAPI_DATA(PyObject) _Py_NotImplementedStruct;
851 #define Py_NotImplemented (&_Py_NotImplementedStruct)
878 #define staticforward static
879 #define statichere static
978 PyAPI_FUNC(
void) _PyTrash_deposit_object(PyObject*);
979 PyAPI_FUNC(
void) _PyTrash_destroy_chain(
void);
984 PyAPI_FUNC(
void) _PyTrash_thread_deposit_object(PyObject*);
985 PyAPI_FUNC(
void) _PyTrash_thread_destroy_chain(
void);
987 #define PyTrash_UNWIND_LEVEL 50
990 #define Py_TRASHCAN_SAFE_BEGIN(op) \
992 PyThreadState *_tstate = PyThreadState_GET(); \
994 _tstate->trash_delete_nesting < PyTrash_UNWIND_LEVEL) { \
996 ++_tstate->trash_delete_nesting;
998 #define Py_TRASHCAN_SAFE_END(op) \
1000 --_tstate->trash_delete_nesting; \
1001 if (_tstate->trash_delete_later \
1002 && _tstate->trash_delete_nesting <= 0) \
1003 _PyTrash_thread_destroy_chain(); \
1007 _PyTrash_thread_deposit_object((PyObject*)op); \
charbufferproc bf_getcharbuffer
richcmpfunc tp_richcompare
descrgetfunc tp_descr_get
struct _typeobject * tp_base
int(* getsegcountproc)(PyObject *, int *)
PyObject *(* allocfunc)(struct _typeobject *, Py_ssize_t)
PyAPI_FUNC(int) PyType_IsSubtype(PyTypeObject *
#define _Py_ForgetReference(op)
Py_ssize_t(* charbufferproc)(PyObject *, Py_ssize_t, char **)
binaryfunc sq_inplace_concat
PyObject *(* newfunc)(struct _typeobject *, PyObject *, PyObject *)
int(* getwritebufferproc)(PyObject *, int, void **)
getbufferproc bf_getbuffer
binaryfunc nb_inplace_remainder
descrsetfunc tp_descr_set
PySequenceMethods as_sequence
binaryfunc nb_inplace_true_divide
PyObject *(* descrgetfunc)(PyObject *, PyObject *, PyObject *)
PyObject *(* binaryfunc)(PyObject *, PyObject *)
binaryfunc nb_inplace_and
struct _typeobject PyTypeObject
struct PyMethodDef * tp_methods
binaryfunc nb_true_divide
binaryfunc nb_inplace_subtract
int(* intobjargproc)(PyObject *, int, PyObject *)
int(* traverseproc)(PyObject *, visitproc, void *)
void(* releasebufferproc)(PyObject *, Py_buffer *)
ssizeobjargproc sq_ass_item
binaryfunc nb_floor_divide
writebufferproc bf_getwritebuffer
PyObject *(* richcmpfunc)(PyObject *, PyObject *, int)
#define _Py_NewReference(op)
PyMappingMethods * tp_as_mapping
releasebufferproc bf_releasebuffer
int(* getcharbufferproc)(PyObject *, int, char **)
int(* coercion)(PyObject **, PyObject **)
binaryfunc nb_inplace_lshift
int(* cmpfunc)(PyObject *, PyObject *)
PyObject *(* reprfunc)(PyObject *)
Py_ssize_t(* writebufferproc)(PyObject *, Py_ssize_t, void **)
Py_ssize_t(* segcountproc)(PyObject *, Py_ssize_t *)
PyObject *(* iternextfunc)(PyObject *)
int(* ssizessizeobjargproc)(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *)
int(* getbufferproc)(PyObject *, Py_buffer *, int)
PyAPI_DATA(PyTypeObject) PyType_Type
int(* getreadbufferproc)(PyObject *, int, void **)
int(* objobjproc)(PyObject *, PyObject *)
PyObject *(* unaryfunc)(PyObject *)
int(* inquiry)(PyObject *)
struct PyGetSetDef * tp_getset
binaryfunc nb_inplace_multiply
const char PyObject const char long
int(* ssizeobjargproc)(PyObject *, Py_ssize_t, PyObject *)
PyObject *(* getattrfunc)(PyObject *, char *)
struct _heaptypeobject PyHeapTypeObject
binaryfunc nb_inplace_floor_divide
binaryfunc nb_inplace_xor
PyObject *(* ssizessizeargfunc)(PyObject *, Py_ssize_t, Py_ssize_t)
readbufferproc bf_getreadbuffer
PyObject *(* getattrofunc)(PyObject *, PyObject *)
PySequenceMethods * tp_as_sequence
ternaryfunc nb_inplace_power
PyObject *(* ternaryfunc)(PyObject *, PyObject *, PyObject *)
void(* destructor)(PyObject *)
PyBufferProcs * tp_as_buffer
int _PyObject_SlotCompare(PyObject *, PyObject *)
PyObject *(* ssizeargfunc)(PyObject *, Py_ssize_t)
ssizessizeargfunc sq_slice
binaryfunc nb_inplace_rshift
struct PyMemberDef * tp_members
int(* printfunc)(PyObject *, FILE *, int)
Py_ssize_t tp_weaklistoffset
PyMappingMethods as_mapping
PyNumberMethods as_number
PyNumberMethods * tp_as_number
PyObject *(* getiterfunc)(PyObject *)
int(* visitproc)(PyObject *, void *)
objobjargproc mp_ass_subscript
unsigned int tp_version_tag
int(* descrsetfunc)(PyObject *, PyObject *, PyObject *)
binaryfunc nb_inplace_divide
int(* intintobjargproc)(PyObject *, int, int, PyObject *)
binaryfunc nb_inplace_add
ssizeargfunc sq_inplace_repeat
segcountproc bf_getsegcount
Py_ssize_t(* readbufferproc)(PyObject *, Py_ssize_t, void **)
ssizessizeobjargproc sq_ass_slice
int(* setattrfunc)(PyObject *, char *, PyObject *)
int(* initproc)(PyObject *, PyObject *, PyObject *)
int(* objobjargproc)(PyObject *, PyObject *, PyObject *)
#define PyObject_VAR_HEAD
Py_ssize_t(* lenfunc)(PyObject *)
struct bufferinfo Py_buffer
int(* setattrofunc)(PyObject *, PyObject *, PyObject *)
#define Py_DEPRECATED(VERSION_UNUSED)
long(* hashfunc)(PyObject *)