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.
\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
interpreter core: \cfunction{_Py_Dealloc()},
\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_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
where NULL (nil) is not suitable (since NULL often means 'error').

View File

@ -471,6 +471,10 @@ Build
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
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 */
void
Py_IncRef(PyObject *o)
{
Py_XINCREF(o);
}
void
Py_DecRef(PyObject *o)
{
Py_XDECREF(o);
}
PyObject *
PyObject_Init(PyObject *op, PyTypeObject *tp)
{