jpayne@69: jpayne@69: /* Module object interface */ jpayne@69: jpayne@69: #ifndef Py_MODULEOBJECT_H jpayne@69: #define Py_MODULEOBJECT_H jpayne@69: #ifdef __cplusplus jpayne@69: extern "C" { jpayne@69: #endif jpayne@69: jpayne@69: PyAPI_DATA(PyTypeObject) PyModule_Type; jpayne@69: jpayne@69: #define PyModule_Check(op) PyObject_TypeCheck(op, &PyModule_Type) jpayne@69: #define PyModule_CheckExact(op) (Py_TYPE(op) == &PyModule_Type) jpayne@69: jpayne@69: #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 jpayne@69: PyAPI_FUNC(PyObject *) PyModule_NewObject( jpayne@69: PyObject *name jpayne@69: ); jpayne@69: #endif jpayne@69: PyAPI_FUNC(PyObject *) PyModule_New( jpayne@69: const char *name /* UTF-8 encoded string */ jpayne@69: ); jpayne@69: PyAPI_FUNC(PyObject *) PyModule_GetDict(PyObject *); jpayne@69: #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 jpayne@69: PyAPI_FUNC(PyObject *) PyModule_GetNameObject(PyObject *); jpayne@69: #endif jpayne@69: PyAPI_FUNC(const char *) PyModule_GetName(PyObject *); jpayne@69: Py_DEPRECATED(3.2) PyAPI_FUNC(const char *) PyModule_GetFilename(PyObject *); jpayne@69: PyAPI_FUNC(PyObject *) PyModule_GetFilenameObject(PyObject *); jpayne@69: #ifndef Py_LIMITED_API jpayne@69: PyAPI_FUNC(void) _PyModule_Clear(PyObject *); jpayne@69: PyAPI_FUNC(void) _PyModule_ClearDict(PyObject *); jpayne@69: PyAPI_FUNC(int) _PyModuleSpec_IsInitializing(PyObject *); jpayne@69: #endif jpayne@69: PyAPI_FUNC(struct PyModuleDef*) PyModule_GetDef(PyObject*); jpayne@69: PyAPI_FUNC(void*) PyModule_GetState(PyObject*); jpayne@69: jpayne@69: #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 jpayne@69: /* New in 3.5 */ jpayne@69: PyAPI_FUNC(PyObject *) PyModuleDef_Init(struct PyModuleDef*); jpayne@69: PyAPI_DATA(PyTypeObject) PyModuleDef_Type; jpayne@69: #endif jpayne@69: jpayne@69: typedef struct PyModuleDef_Base { jpayne@69: PyObject_HEAD jpayne@69: PyObject* (*m_init)(void); jpayne@69: Py_ssize_t m_index; jpayne@69: PyObject* m_copy; jpayne@69: } PyModuleDef_Base; jpayne@69: jpayne@69: #define PyModuleDef_HEAD_INIT { \ jpayne@69: PyObject_HEAD_INIT(NULL) \ jpayne@69: NULL, /* m_init */ \ jpayne@69: 0, /* m_index */ \ jpayne@69: NULL, /* m_copy */ \ jpayne@69: } jpayne@69: jpayne@69: struct PyModuleDef_Slot; jpayne@69: #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 jpayne@69: /* New in 3.5 */ jpayne@69: typedef struct PyModuleDef_Slot{ jpayne@69: int slot; jpayne@69: void *value; jpayne@69: } PyModuleDef_Slot; jpayne@69: jpayne@69: #define Py_mod_create 1 jpayne@69: #define Py_mod_exec 2 jpayne@69: jpayne@69: #ifndef Py_LIMITED_API jpayne@69: #define _Py_mod_LAST_SLOT 2 jpayne@69: #endif jpayne@69: jpayne@69: #endif /* New in 3.5 */ jpayne@69: jpayne@69: typedef struct PyModuleDef{ jpayne@69: PyModuleDef_Base m_base; jpayne@69: const char* m_name; jpayne@69: const char* m_doc; jpayne@69: Py_ssize_t m_size; jpayne@69: PyMethodDef *m_methods; jpayne@69: struct PyModuleDef_Slot* m_slots; jpayne@69: traverseproc m_traverse; jpayne@69: inquiry m_clear; jpayne@69: freefunc m_free; jpayne@69: } PyModuleDef; jpayne@69: jpayne@69: #ifdef __cplusplus jpayne@69: } jpayne@69: #endif jpayne@69: #endif /* !Py_MODULEOBJECT_H */