17db96d56Sopenharmony_ci 27db96d56Sopenharmony_ci/* Module object interface */ 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci#ifndef Py_MODULEOBJECT_H 57db96d56Sopenharmony_ci#define Py_MODULEOBJECT_H 67db96d56Sopenharmony_ci#ifdef __cplusplus 77db96d56Sopenharmony_ciextern "C" { 87db96d56Sopenharmony_ci#endif 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ciPyAPI_DATA(PyTypeObject) PyModule_Type; 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci#define PyModule_Check(op) PyObject_TypeCheck(op, &PyModule_Type) 137db96d56Sopenharmony_ci#define PyModule_CheckExact(op) Py_IS_TYPE(op, &PyModule_Type) 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 167db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyModule_NewObject( 177db96d56Sopenharmony_ci PyObject *name 187db96d56Sopenharmony_ci ); 197db96d56Sopenharmony_ci#endif 207db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyModule_New( 217db96d56Sopenharmony_ci const char *name /* UTF-8 encoded string */ 227db96d56Sopenharmony_ci ); 237db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyModule_GetDict(PyObject *); 247db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 257db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyModule_GetNameObject(PyObject *); 267db96d56Sopenharmony_ci#endif 277db96d56Sopenharmony_ciPyAPI_FUNC(const char *) PyModule_GetName(PyObject *); 287db96d56Sopenharmony_ciPy_DEPRECATED(3.2) PyAPI_FUNC(const char *) PyModule_GetFilename(PyObject *); 297db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyModule_GetFilenameObject(PyObject *); 307db96d56Sopenharmony_ci#ifndef Py_LIMITED_API 317db96d56Sopenharmony_ciPyAPI_FUNC(void) _PyModule_Clear(PyObject *); 327db96d56Sopenharmony_ciPyAPI_FUNC(void) _PyModule_ClearDict(PyObject *); 337db96d56Sopenharmony_ciPyAPI_FUNC(int) _PyModuleSpec_IsInitializing(PyObject *); 347db96d56Sopenharmony_ci#endif 357db96d56Sopenharmony_ciPyAPI_FUNC(PyModuleDef*) PyModule_GetDef(PyObject*); 367db96d56Sopenharmony_ciPyAPI_FUNC(void*) PyModule_GetState(PyObject*); 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 397db96d56Sopenharmony_ci/* New in 3.5 */ 407db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyModuleDef_Init(PyModuleDef*); 417db96d56Sopenharmony_ciPyAPI_DATA(PyTypeObject) PyModuleDef_Type; 427db96d56Sopenharmony_ci#endif 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_citypedef struct PyModuleDef_Base { 457db96d56Sopenharmony_ci PyObject_HEAD 467db96d56Sopenharmony_ci PyObject* (*m_init)(void); 477db96d56Sopenharmony_ci Py_ssize_t m_index; 487db96d56Sopenharmony_ci PyObject* m_copy; 497db96d56Sopenharmony_ci} PyModuleDef_Base; 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_ci#define PyModuleDef_HEAD_INIT { \ 527db96d56Sopenharmony_ci PyObject_HEAD_INIT(_Py_NULL) \ 537db96d56Sopenharmony_ci _Py_NULL, /* m_init */ \ 547db96d56Sopenharmony_ci 0, /* m_index */ \ 557db96d56Sopenharmony_ci _Py_NULL, /* m_copy */ \ 567db96d56Sopenharmony_ci } 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 597db96d56Sopenharmony_ci/* New in 3.5 */ 607db96d56Sopenharmony_cistruct PyModuleDef_Slot { 617db96d56Sopenharmony_ci int slot; 627db96d56Sopenharmony_ci void *value; 637db96d56Sopenharmony_ci}; 647db96d56Sopenharmony_ci 657db96d56Sopenharmony_ci#define Py_mod_create 1 667db96d56Sopenharmony_ci#define Py_mod_exec 2 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ci#ifndef Py_LIMITED_API 697db96d56Sopenharmony_ci#define _Py_mod_LAST_SLOT 2 707db96d56Sopenharmony_ci#endif 717db96d56Sopenharmony_ci 727db96d56Sopenharmony_ci#endif /* New in 3.5 */ 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_cistruct PyModuleDef { 757db96d56Sopenharmony_ci PyModuleDef_Base m_base; 767db96d56Sopenharmony_ci const char* m_name; 777db96d56Sopenharmony_ci const char* m_doc; 787db96d56Sopenharmony_ci Py_ssize_t m_size; 797db96d56Sopenharmony_ci PyMethodDef *m_methods; 807db96d56Sopenharmony_ci PyModuleDef_Slot *m_slots; 817db96d56Sopenharmony_ci traverseproc m_traverse; 827db96d56Sopenharmony_ci inquiry m_clear; 837db96d56Sopenharmony_ci freefunc m_free; 847db96d56Sopenharmony_ci}; 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci 877db96d56Sopenharmony_ci// Internal C API 887db96d56Sopenharmony_ci#ifdef Py_BUILD_CORE 897db96d56Sopenharmony_ciextern int _PyModule_IsExtension(PyObject *obj); 907db96d56Sopenharmony_ci#endif 917db96d56Sopenharmony_ci 927db96d56Sopenharmony_ci#ifdef __cplusplus 937db96d56Sopenharmony_ci} 947db96d56Sopenharmony_ci#endif 957db96d56Sopenharmony_ci#endif /* !Py_MODULEOBJECT_H */ 96