summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>2001-10-05 21:52:26 (GMT)
committerFred Drake <fdrake@acm.org>2001-10-05 21:52:26 (GMT)
commit8844d5264f450a4721f2ca9d9d8ba7f048fb784b (patch)
treee92f15bc271d2684e6049a3b48a509bc4c1c2c04 /Include
parentbb9fa21cfe7a8343698ce5e26e845b4e0c877d6a (diff)
downloadcpython-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.h50
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 */