diff options
author | Fred Drake <fdrake@acm.org> | 2001-10-05 21:52:26 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2001-10-05 21:52:26 (GMT) |
commit | 8844d5264f450a4721f2ca9d9d8ba7f048fb784b (patch) | |
tree | e92f15bc271d2684e6049a3b48a509bc4c1c2c04 /Include | |
parent | bb9fa21cfe7a8343698ce5e26e845b4e0c877d6a (diff) | |
download | cpython-8844d5264f450a4721f2ca9d9d8ba7f048fb784b.zip cpython-8844d5264f450a4721f2ca9d9d8ba7f048fb784b.tar.gz cpython-8844d5264f450a4721f2ca9d9d8ba7f048fb784b.tar.bz2 |
The weak reference implementation, separated from the weakref module.
Diffstat (limited to 'Include')
-rw-r--r-- | Include/weakrefobject.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Include/weakrefobject.h b/Include/weakrefobject.h new file mode 100644 index 0000000..3886ea5 --- /dev/null +++ b/Include/weakrefobject.h @@ -0,0 +1,50 @@ +/* Weak references objects for Python. */ + +#ifndef Py_WEAKREFOBJECT_H +#define Py_WEAKREFOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + + +typedef struct _PyWeakReference PyWeakReference; + +struct _PyWeakReference { + PyObject_HEAD + PyObject *wr_object; + PyObject *wr_callback; + long hash; + PyWeakReference *wr_prev; + PyWeakReference *wr_next; +}; + +extern DL_IMPORT(PyTypeObject) _PyWeakref_RefType; +extern DL_IMPORT(PyTypeObject) _PyWeakref_ProxyType; +extern DL_IMPORT(PyTypeObject) _PyWeakref_CallableProxyType; + +extern DL_IMPORT(PyObject *) PyErr_ReferenceError; + +#define PyWeakref_CheckRef(op) \ + ((op)->ob_type == &_PyWeakref_RefType) +#define PyWeakref_CheckProxy(op) \ + (((op)->ob_type == &_PyWeakref_ProxyType) || \ + ((op)->ob_type == &_PyWeakref_CallableProxyType)) +#define PyWeakref_Check(op) \ + (PyWeakref_CheckRef(op) || PyWeakref_CheckProxy(op)) + + +extern DL_IMPORT(PyObject *) PyWeakref_NewRef(PyObject *ob, + PyObject *callback); +extern DL_IMPORT(PyObject *) PyWeakref_NewProxy(PyObject *ob, + PyObject *callback); +extern DL_IMPORT(PyObject *) PyWeakref_GetObject(PyObject *ref); + +extern DL_IMPORT(long) _PyWeakref_GetWeakrefCount(PyWeakReference *head); + +#define PyWeakref_GET_OBJECT(ref) (((PyWeakReference *)(ref))->wr_object) + + +#ifdef __cplusplus +} +#endif +#endif /* !Py_WEAKREFOBJECT_H */ |