Two new public API functions, Py_IncRef and Py_DecRef. Useful for

dynamic embedders of Python.
This commit is contained in:
Thomas Heller 2004-04-22 17:23:49 +00:00
parent 1a9d32b8d4
commit 1328b52c6f
4 changed files with 28 additions and 0 deletions

View File

@ -42,6 +42,11 @@ of Python objects.
applies. applies.
\end{cfuncdesc} \end{cfuncdesc}
The following functions are for runtime dynamic embedding of Python:
\cfunction{Py_IncRef(PyObject *o)}, \cfunction{Py_DecRef(PyObject *o)}.
They are simply exported function versions of \cfunction{Py_XINCREF()} and
\cfunction{Py_XDECREF()}, respectively.
The following functions or macros are only for use within the The following functions or macros are only for use within the
interpreter core: \cfunction{_Py_Dealloc()}, interpreter core: \cfunction{_Py_Dealloc()},
\cfunction{_Py_ForgetReference()}, \cfunction{_Py_NewReference()}, as \cfunction{_Py_ForgetReference()}, \cfunction{_Py_NewReference()}, as

View File

@ -624,6 +624,13 @@ PyAPI_FUNC(void) _Py_AddToAllObjects(PyObject *, int force);
#define Py_XINCREF(op) if ((op) == NULL) ; else Py_INCREF(op) #define Py_XINCREF(op) if ((op) == NULL) ; else Py_INCREF(op)
#define Py_XDECREF(op) if ((op) == NULL) ; else Py_DECREF(op) #define Py_XDECREF(op) if ((op) == NULL) ; else Py_DECREF(op)
/*
These are provided as conveniences to Python runtime embedders, so that
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 *);
/* /*
_Py_NoneStruct is an object of undefined type which can be used in contexts _Py_NoneStruct is an object of undefined type which can be used in contexts
where NULL (nil) is not suitable (since NULL often means 'error'). where NULL (nil) is not suitable (since NULL often means 'error').

View File

@ -471,6 +471,10 @@ Build
C API C API
----- -----
- New public functions Py_IncRef() and Py_DecRef(), exposing the
functionality of the Py_XINCREF() and Py_XDECREF macros. Useful for
runtime dynamic embedding of Python.
- Added a new macro, PySequence_Fast_ITEMS, which retrieves a fast sequence's - Added a new macro, PySequence_Fast_ITEMS, which retrieves a fast sequence's
underlying array of PyObject pointers. Useful for high speed looping. underlying array of PyObject pointers. Useful for high speed looping.

View File

@ -146,6 +146,18 @@ _Py_NegativeRefcount(const char *fname, int lineno, PyObject *op)
#endif /* Py_REF_DEBUG */ #endif /* Py_REF_DEBUG */
void
Py_IncRef(PyObject *o)
{
Py_XINCREF(o);
}
void
Py_DecRef(PyObject *o)
{
Py_XDECREF(o);
}
PyObject * PyObject *
PyObject_Init(PyObject *op, PyTypeObject *tp) PyObject_Init(PyObject *op, PyTypeObject *tp)
{ {