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