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. |
5 | |
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. |
10 | |
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_IS_TYPE(op, &PyCapsule_Type) |
26 | |
27 | |
28 | PyAPI_FUNC(PyObject *) PyCapsule_New( |
29 | void *pointer, |
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 | |
51 | PyAPI_FUNC(void *) PyCapsule_Import( |
52 | const char *name, /* UTF-8 encoded string */ |
53 | int no_block); |
54 | |
55 | |
56 | #ifdef __cplusplus |
57 | } |
58 | #endif |
59 | #endif /* !Py_CAPSULE_H */ |
60 | |