17db96d56Sopenharmony_ci
27db96d56Sopenharmony_ci/* Capsule objects let you wrap a C "void *" pointer in a Python
37db96d56Sopenharmony_ci   object.  They're a way of passing data through the Python interpreter
47db96d56Sopenharmony_ci   without creating your own custom type.
57db96d56Sopenharmony_ci
67db96d56Sopenharmony_ci   Capsules are used for communication between extension modules.
77db96d56Sopenharmony_ci   They provide a way for an extension module to export a C interface
87db96d56Sopenharmony_ci   to other extension modules, so that extension modules can use the
97db96d56Sopenharmony_ci   Python import mechanism to link to one another.
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci   For more information, please see "c-api/capsule.html" in the
127db96d56Sopenharmony_ci   documentation.
137db96d56Sopenharmony_ci*/
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_ci#ifndef Py_CAPSULE_H
167db96d56Sopenharmony_ci#define Py_CAPSULE_H
177db96d56Sopenharmony_ci#ifdef __cplusplus
187db96d56Sopenharmony_ciextern "C" {
197db96d56Sopenharmony_ci#endif
207db96d56Sopenharmony_ci
217db96d56Sopenharmony_ciPyAPI_DATA(PyTypeObject) PyCapsule_Type;
227db96d56Sopenharmony_ci
237db96d56Sopenharmony_citypedef void (*PyCapsule_Destructor)(PyObject *);
247db96d56Sopenharmony_ci
257db96d56Sopenharmony_ci#define PyCapsule_CheckExact(op) Py_IS_TYPE(op, &PyCapsule_Type)
267db96d56Sopenharmony_ci
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyCapsule_New(
297db96d56Sopenharmony_ci    void *pointer,
307db96d56Sopenharmony_ci    const char *name,
317db96d56Sopenharmony_ci    PyCapsule_Destructor destructor);
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_ciPyAPI_FUNC(void *) PyCapsule_GetPointer(PyObject *capsule, const char *name);
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ciPyAPI_FUNC(PyCapsule_Destructor) PyCapsule_GetDestructor(PyObject *capsule);
367db96d56Sopenharmony_ci
377db96d56Sopenharmony_ciPyAPI_FUNC(const char *) PyCapsule_GetName(PyObject *capsule);
387db96d56Sopenharmony_ci
397db96d56Sopenharmony_ciPyAPI_FUNC(void *) PyCapsule_GetContext(PyObject *capsule);
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ciPyAPI_FUNC(int) PyCapsule_IsValid(PyObject *capsule, const char *name);
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ciPyAPI_FUNC(int) PyCapsule_SetPointer(PyObject *capsule, void *pointer);
447db96d56Sopenharmony_ci
457db96d56Sopenharmony_ciPyAPI_FUNC(int) PyCapsule_SetDestructor(PyObject *capsule, PyCapsule_Destructor destructor);
467db96d56Sopenharmony_ci
477db96d56Sopenharmony_ciPyAPI_FUNC(int) PyCapsule_SetName(PyObject *capsule, const char *name);
487db96d56Sopenharmony_ci
497db96d56Sopenharmony_ciPyAPI_FUNC(int) PyCapsule_SetContext(PyObject *capsule, void *context);
507db96d56Sopenharmony_ci
517db96d56Sopenharmony_ciPyAPI_FUNC(void *) PyCapsule_Import(
527db96d56Sopenharmony_ci    const char *name,           /* UTF-8 encoded string */
537db96d56Sopenharmony_ci    int no_block);
547db96d56Sopenharmony_ci
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ci#ifdef __cplusplus
577db96d56Sopenharmony_ci}
587db96d56Sopenharmony_ci#endif
597db96d56Sopenharmony_ci#endif /* !Py_CAPSULE_H */
60