diff options
author | Thomas Heller <theller@ctypes.org> | 2004-04-22 17:23:49 (GMT) |
---|---|---|
committer | Thomas Heller <theller@ctypes.org> | 2004-04-22 17:23:49 (GMT) |
commit | 1328b52c6ff3ae128b12be49b430ce859bbd8876 (patch) | |
tree | d93fb72929188318596f8f63614721c0701e53a9 | |
parent | 1a9d32b8d4611dd7c95d1dba1b5d1940cbbe3610 (diff) | |
download | cpython-1328b52c6ff3ae128b12be49b430ce859bbd8876.zip cpython-1328b52c6ff3ae128b12be49b430ce859bbd8876.tar.gz cpython-1328b52c6ff3ae128b12be49b430ce859bbd8876.tar.bz2 |
Two new public API functions, Py_IncRef and Py_DecRef. Useful for
dynamic embedders of Python.
-rw-r--r-- | Doc/api/refcounting.tex | 5 | ||||
-rw-r--r-- | Include/object.h | 7 | ||||
-rw-r--r-- | Misc/NEWS | 4 | ||||
-rw-r--r-- | Objects/object.c | 12 |
4 files changed, 28 insertions, 0 deletions
diff --git a/Doc/api/refcounting.tex b/Doc/api/refcounting.tex index 03530f0..42b9e6a 100644 --- a/Doc/api/refcounting.tex +++ b/Doc/api/refcounting.tex @@ -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 diff --git a/Include/object.h b/Include/object.h index f6135ee..555d810 100644 --- a/Include/object.h +++ b/Include/object.h @@ -625,6 +625,13 @@ PyAPI_FUNC(void) _Py_AddToAllObjects(PyObject *, int force); #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'). @@ -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. diff --git a/Objects/object.c b/Objects/object.c index ba9a1d9..22196d7 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -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) { |