Branch data Line data Source code
1 : : #ifndef Py_INTERNAL_MODULEOBJECT_H 2 : : #define Py_INTERNAL_MODULEOBJECT_H 3 : : #ifdef __cplusplus 4 : : extern "C" { 5 : : #endif 6 : : 7 : : #ifndef Py_BUILD_CORE 8 : : # error "this header requires Py_BUILD_CORE define" 9 : : #endif 10 : : 11 : : typedef struct { 12 : : PyObject_HEAD 13 : : PyObject *md_dict; 14 : : PyModuleDef *md_def; 15 : : void *md_state; 16 : : PyObject *md_weaklist; 17 : : // for logging purposes after md_dict is cleared 18 : : PyObject *md_name; 19 : : } PyModuleObject; 20 : : 21 : 10265040 : static inline PyModuleDef* _PyModule_GetDef(PyObject *mod) { 22 : : assert(PyModule_Check(mod)); 23 : 10265040 : return ((PyModuleObject *)mod)->md_def; 24 : : } 25 : : 26 : 40056739 : static inline void* _PyModule_GetState(PyObject* mod) { 27 : : assert(PyModule_Check(mod)); 28 : 40056739 : return ((PyModuleObject *)mod)->md_state; 29 : : } 30 : : 31 : 2400621 : static inline PyObject* _PyModule_GetDict(PyObject *mod) { 32 : : assert(PyModule_Check(mod)); 33 : 2400621 : PyObject *dict = ((PyModuleObject *)mod) -> md_dict; 34 : : // _PyModule_GetDict(mod) must not be used after calling module_clear(mod) 35 : : assert(dict != NULL); 36 : 2400621 : return dict; 37 : : } 38 : : 39 : : #ifdef __cplusplus 40 : : } 41 : : #endif 42 : : #endif /* !Py_INTERNAL_MODULEOBJECT_H */