|
|
|
@ -118,6 +118,7 @@ typedef struct { |
|
|
|
#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) |
|
|
|
#define Py_SIZE(ob) (((PyVarObject*)(ob))->ob_size) |
|
|
|
|
|
|
|
#ifndef Py_LIMITED_API |
|
|
|
/********************* String Literals ****************************************/ |
|
|
|
/* This structure helps managing static strings. The basic usage goes like this: |
|
|
|
Instead of doing |
|
|
|
@ -148,6 +149,8 @@ typedef struct _Py_Identifier { |
|
|
|
#define _Py_static_string(varname, value) static _Py_Identifier varname = _Py_static_string_init(value) |
|
|
|
#define _Py_IDENTIFIER(varname) _Py_static_string(PyId_##varname, #varname) |
|
|
|
|
|
|
|
#endif /* !Py_LIMITED_API */ |
|
|
|
|
|
|
|
/* |
|
|
|
Type objects contain a string containing the type name (to help somewhat |
|
|
|
in debugging), the allocation parameters (see PyObject_New() and |
|
|
|
@ -512,8 +515,8 @@ PyAPI_FUNC(PyObject *) _PyType_GetTextSignatureFromInternalDoc(const char *, con |
|
|
|
#endif |
|
|
|
|
|
|
|
/* Generic operations on objects */ |
|
|
|
struct _Py_Identifier; |
|
|
|
#ifndef Py_LIMITED_API |
|
|
|
struct _Py_Identifier; |
|
|
|
PyAPI_FUNC(int) PyObject_Print(PyObject *, FILE *, int); |
|
|
|
PyAPI_FUNC(void) _Py_BreakPoint(void); |
|
|
|
PyAPI_FUNC(void) _PyObject_Dump(PyObject *); |
|
|
|
@ -530,11 +533,11 @@ PyAPI_FUNC(int) PyObject_HasAttrString(PyObject *, const char *); |
|
|
|
PyAPI_FUNC(PyObject *) PyObject_GetAttr(PyObject *, PyObject *); |
|
|
|
PyAPI_FUNC(int) PyObject_SetAttr(PyObject *, PyObject *, PyObject *); |
|
|
|
PyAPI_FUNC(int) PyObject_HasAttr(PyObject *, PyObject *); |
|
|
|
#ifndef Py_LIMITED_API |
|
|
|
PyAPI_FUNC(int) _PyObject_IsAbstract(PyObject *); |
|
|
|
PyAPI_FUNC(PyObject *) _PyObject_GetAttrId(PyObject *, struct _Py_Identifier *); |
|
|
|
PyAPI_FUNC(int) _PyObject_SetAttrId(PyObject *, struct _Py_Identifier *, PyObject *); |
|
|
|
PyAPI_FUNC(int) _PyObject_HasAttrId(PyObject *, struct _Py_Identifier *); |
|
|
|
#ifndef Py_LIMITED_API |
|
|
|
PyAPI_FUNC(PyObject **) _PyObject_GetDictPtr(PyObject *); |
|
|
|
#endif |
|
|
|
PyAPI_FUNC(PyObject *) PyObject_SelfIter(PyObject *); |
|
|
|
@ -557,6 +560,7 @@ PyAPI_FUNC(void) PyObject_CallFinalizer(PyObject *); |
|
|
|
PyAPI_FUNC(int) PyObject_CallFinalizerFromDealloc(PyObject *); |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifndef Py_LIMITED_API |
|
|
|
/* Same as PyObject_Generic{Get,Set}Attr, but passing the attributes |
|
|
|
dict as the last parameter. */ |
|
|
|
PyAPI_FUNC(PyObject *) |
|
|
|
@ -564,6 +568,7 @@ _PyObject_GenericGetAttrWithDict(PyObject *, PyObject *, PyObject *); |
|
|
|
PyAPI_FUNC(int) |
|
|
|
_PyObject_GenericSetAttrWithDict(PyObject *, PyObject *, |
|
|
|
PyObject *, PyObject *); |
|
|
|
#endif /* !Py_LIMITED_API */ |
|
|
|
|
|
|
|
/* Helper to look up a builtin object */ |
|
|
|
#ifndef Py_LIMITED_API |
|
|
|
@ -888,8 +893,10 @@ they can have object code that is not dependent on Python compilation flags. |
|
|
|
PyAPI_FUNC(void) Py_IncRef(PyObject *); |
|
|
|
PyAPI_FUNC(void) Py_DecRef(PyObject *); |
|
|
|
|
|
|
|
#ifndef Py_LIMITED_API |
|
|
|
PyAPI_DATA(PyTypeObject) _PyNone_Type; |
|
|
|
PyAPI_DATA(PyTypeObject) _PyNotImplemented_Type; |
|
|
|
#endif /* !Py_LIMITED_API */ |
|
|
|
|
|
|
|
/* |
|
|
|
_Py_NoneStruct is an object of undefined type which can be used in contexts |
|
|
|
@ -922,10 +929,12 @@ PyAPI_DATA(PyObject) _Py_NotImplementedStruct; /* Don't use this directly */ |
|
|
|
#define Py_GT 4 |
|
|
|
#define Py_GE 5 |
|
|
|
|
|
|
|
#ifndef Py_LIMITED_API |
|
|
|
/* Maps Py_LT to Py_GT, ..., Py_GE to Py_LE. |
|
|
|
* Defined in object.c. |
|
|
|
*/ |
|
|
|
PyAPI_DATA(int) _Py_SwappedOp[]; |
|
|
|
#endif /* !Py_LIMITED_API */ |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
@ -1022,12 +1031,14 @@ chain of N deallocations is broken into N / PyTrash_UNWIND_LEVEL pieces, |
|
|
|
with the call stack never exceeding a depth of PyTrash_UNWIND_LEVEL. |
|
|
|
*/ |
|
|
|
|
|
|
|
#ifndef Py_LIMITED_API |
|
|
|
/* This is the old private API, invoked by the macros before 3.2.4. |
|
|
|
Kept for binary compatibility of extensions using the stable ABI. */ |
|
|
|
PyAPI_FUNC(void) _PyTrash_deposit_object(PyObject*); |
|
|
|
PyAPI_FUNC(void) _PyTrash_destroy_chain(void); |
|
|
|
PyAPI_DATA(int) _PyTrash_delete_nesting; |
|
|
|
PyAPI_DATA(PyObject *) _PyTrash_delete_later; |
|
|
|
#endif /* !Py_LIMITED_API */ |
|
|
|
|
|
|
|
/* The new thread-safe private API, invoked by the macros below. */ |
|
|
|
PyAPI_FUNC(void) _PyTrash_thread_deposit_object(PyObject*); |
|
|
|
|