summaryrefslogtreecommitdiffstats
path: root/Include/cobject.h
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1996-01-12 00:44:03 (GMT)
committerGuido van Rossum <guido@python.org>1996-01-12 00:44:03 (GMT)
commit77654a7e5ecfbd4bd5319f02452329609c6e5921 (patch)
treee8f4cd092c50f5038f1e3b483cc70eda68b957e5 /Include/cobject.h
parent3a50f8a51eeb57b964b2a54c714249f2128fc2c6 (diff)
downloadcpython-77654a7e5ecfbd4bd5319f02452329609c6e5921.zip
cpython-77654a7e5ecfbd4bd5319f02452329609c6e5921.tar.gz
cpython-77654a7e5ecfbd4bd5319f02452329609c6e5921.tar.bz2
opaque C object a la Jim Fulton
Diffstat (limited to 'Include/cobject.h')
-rw-r--r--Include/cobject.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/Include/cobject.h b/Include/cobject.h
new file mode 100644
index 0000000..1969338
--- /dev/null
+++ b/Include/cobject.h
@@ -0,0 +1,61 @@
+#ifndef Py_COBJECT_H
+#define Py_COBJECT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***********************************************************
+Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+/* C objects to be exported from one extension module to another.
+
+ C objects are used for communication between extension modules.
+ They provide a way for an extension module to export a C interface
+ to other extension modules, so that extension modules can use the
+ Python import mechanism to link to one another.
+
+*/
+
+extern DL_IMPORT(PyTypeObject) PyCObject_Type;
+
+#define PyCObject_Check(op) ((op)->ob_type == &PyCObject_Type)
+
+/* Create a PyCObject from a pointer to a C object and an optional
+ destrutor function. If the second argument is non-null, then it
+ will be called with the first argument if and when the PyCObject is
+ destroyed.
+
+*/
+
+extern PyObject *
+PyCObject_FromVoidPtr Py_PROTO((void *cobj, void (*destruct)(void*)));
+
+/* Retrieve a pointer to a C object from a PyCObject. */
+extern void *
+PyCObject_AsVoidPtr Py_PROTO((PyObject *));
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* !Py_COBJECT_H */