mirror of https://github.com/python/cpython
33 lines
756 B
C
33 lines
756 B
C
#ifndef Py_INTERNAL_OBJECT_DEFERRED_H
|
|
#define Py_INTERNAL_OBJECT_DEFERRED_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "pycore_gc.h"
|
|
|
|
#ifndef Py_BUILD_CORE
|
|
# error "this header requires Py_BUILD_CORE define"
|
|
#endif
|
|
|
|
// Mark an object as supporting deferred reference counting. This is a no-op
|
|
// in the default (with GIL) build. Objects that use deferred reference
|
|
// counting should be tracked by the GC so that they are eventually collected.
|
|
extern void _PyObject_SetDeferredRefcount(PyObject *op);
|
|
|
|
static inline int
|
|
_PyObject_HasDeferredRefcount(PyObject *op)
|
|
{
|
|
#ifdef Py_GIL_DISABLED
|
|
return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_DEFERRED);
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif // !Py_INTERNAL_OBJECT_DEFERRED_H
|