summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2001-01-25 20:04:14 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2001-01-25 20:04:14 (GMT)
commitfbd849f201a4a8c17745a72eb9f0ee3bae34d330 (patch)
tree3ea7508cfd2675d561cdf1d4dcd4ed2f7d28263a /Include
parentc34a5ade0af202ce1e19a2b91ef4dcfb8b220adf (diff)
downloadcpython-fbd849f201a4a8c17745a72eb9f0ee3bae34d330.zip
cpython-fbd849f201a4a8c17745a72eb9f0ee3bae34d330.tar.gz
cpython-fbd849f201a4a8c17745a72eb9f0ee3bae34d330.tar.bz2
PEP 227 implementation
A cell contains a reference to a single PyObject. It could be implemented as a mutable, one-element sequence, but the separate type has less overhead.
Diffstat (limited to 'Include')
-rw-r--r--Include/Python.h1
-rw-r--r--Include/cellobject.h28
2 files changed, 29 insertions, 0 deletions
diff --git a/Include/Python.h b/Include/Python.h
index 3086552..b771c8c 100644
--- a/Include/Python.h
+++ b/Include/Python.h
@@ -81,6 +81,7 @@
#include "cobject.h"
#include "traceback.h"
#include "sliceobject.h"
+#include "cellobject.h"
#include "codecs.h"
#include "pyerrors.h"
diff --git a/Include/cellobject.h b/Include/cellobject.h
new file mode 100644
index 0000000..cc4a159
--- /dev/null
+++ b/Include/cellobject.h
@@ -0,0 +1,28 @@
+/* Cell object interface */
+
+#ifndef Py_CELLOBJECT_H
+#define Py_CELLOBJECT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_ref;
+} PyCellObject;
+
+extern DL_IMPORT(PyTypeObject) PyCell_Type;
+
+#define PyCell_Check(op) ((op)->ob_type == &PyCell_Type)
+
+extern DL_IMPORT(PyObject *) PyCell_New(PyObject *);
+extern DL_IMPORT(PyObject *) PyCell_Get(PyObject *);
+extern DL_IMPORT(int) PyCell_Set(PyObject *, PyObject *);
+
+#define PyCell_GET(op) (((PyCellObject *)(op))->ob_ref)
+#define PyCell_SET(op, v) (((PyCellObject *)(op))->ob_ref = v)
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* !Py_TUPLEOBJECT_H */