| Benjamin Peterson | b173f78 | 2009-05-05 22:31:58 +0000 | [diff] [blame] | 1 |  | 
 | 2 | /* Capsule objects let you wrap a C "void *" pointer in a Python | 
 | 3 |    object.  They're a way of passing data through the Python interpreter | 
 | 4 |    without creating your own custom type. | 
| Georg Brandl | 5483fe5 | 2009-05-17 22:19:14 +0000 | [diff] [blame] | 5 |  | 
| Benjamin Peterson | b173f78 | 2009-05-05 22:31:58 +0000 | [diff] [blame] | 6 |    Capsules are used for communication between extension modules. | 
 | 7 |    They provide a way for an extension module to export a C interface | 
 | 8 |    to other extension modules, so that extension modules can use the | 
 | 9 |    Python import mechanism to link to one another. | 
| Georg Brandl | 5483fe5 | 2009-05-17 22:19:14 +0000 | [diff] [blame] | 10 |  | 
| Benjamin Peterson | b173f78 | 2009-05-05 22:31:58 +0000 | [diff] [blame] | 11 |    For more information, please see "c-api/capsule.html" in the | 
 | 12 |    documentation. | 
 | 13 | */ | 
 | 14 |  | 
 | 15 | #ifndef Py_CAPSULE_H | 
 | 16 | #define Py_CAPSULE_H | 
 | 17 | #ifdef __cplusplus | 
 | 18 | extern "C" { | 
 | 19 | #endif | 
 | 20 |  | 
 | 21 | PyAPI_DATA(PyTypeObject) PyCapsule_Type; | 
 | 22 |  | 
 | 23 | typedef void (*PyCapsule_Destructor)(PyObject *); | 
 | 24 |  | 
 | 25 | #define PyCapsule_CheckExact(op) (Py_TYPE(op) == &PyCapsule_Type) | 
 | 26 |  | 
 | 27 |  | 
 | 28 | PyAPI_FUNC(PyObject *) PyCapsule_New( | 
| Georg Brandl | 5483fe5 | 2009-05-17 22:19:14 +0000 | [diff] [blame] | 29 |     void *pointer, | 
| Benjamin Peterson | b173f78 | 2009-05-05 22:31:58 +0000 | [diff] [blame] | 30 |     const char *name, | 
 | 31 |     PyCapsule_Destructor destructor); | 
 | 32 |  | 
 | 33 | PyAPI_FUNC(void *) PyCapsule_GetPointer(PyObject *capsule, const char *name); | 
 | 34 |  | 
 | 35 | PyAPI_FUNC(PyCapsule_Destructor) PyCapsule_GetDestructor(PyObject *capsule); | 
 | 36 |  | 
 | 37 | PyAPI_FUNC(const char *) PyCapsule_GetName(PyObject *capsule); | 
 | 38 |  | 
 | 39 | PyAPI_FUNC(void *) PyCapsule_GetContext(PyObject *capsule); | 
 | 40 |  | 
 | 41 | PyAPI_FUNC(int) PyCapsule_IsValid(PyObject *capsule, const char *name); | 
 | 42 |  | 
 | 43 | PyAPI_FUNC(int) PyCapsule_SetPointer(PyObject *capsule, void *pointer); | 
 | 44 |  | 
 | 45 | PyAPI_FUNC(int) PyCapsule_SetDestructor(PyObject *capsule, PyCapsule_Destructor destructor); | 
 | 46 |  | 
 | 47 | PyAPI_FUNC(int) PyCapsule_SetName(PyObject *capsule, const char *name); | 
 | 48 |  | 
 | 49 | PyAPI_FUNC(int) PyCapsule_SetContext(PyObject *capsule, void *context); | 
 | 50 |  | 
| Victor Stinner | eda71c9 | 2011-02-22 23:43:57 +0000 | [diff] [blame] | 51 | PyAPI_FUNC(void *) PyCapsule_Import( | 
 | 52 |     const char *name,           /* UTF-8 encoded string */ | 
 | 53 |     int no_block); | 
| Benjamin Peterson | b173f78 | 2009-05-05 22:31:58 +0000 | [diff] [blame] | 54 |  | 
 | 55 |  | 
 | 56 | #ifdef __cplusplus | 
 | 57 | } | 
 | 58 | #endif | 
 | 59 | #endif /* !Py_CAPSULE_H */ |