diff options
author | Guido van Rossum <guido@python.org> | 1996-01-12 00:44:03 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1996-01-12 00:44:03 (GMT) |
commit | 77654a7e5ecfbd4bd5319f02452329609c6e5921 (patch) | |
tree | e8f4cd092c50f5038f1e3b483cc70eda68b957e5 /Include | |
parent | 3a50f8a51eeb57b964b2a54c714249f2128fc2c6 (diff) | |
download | cpython-77654a7e5ecfbd4bd5319f02452329609c6e5921.zip cpython-77654a7e5ecfbd4bd5319f02452329609c6e5921.tar.gz cpython-77654a7e5ecfbd4bd5319f02452329609c6e5921.tar.bz2 |
opaque C object a la Jim Fulton
Diffstat (limited to 'Include')
-rw-r--r-- | Include/cobject.h | 61 |
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 */ |