mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
	
	
		
			43 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			43 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #ifndef Py_INTERNAL_MODULEOBJECT_H
 | ||
|  | #define Py_INTERNAL_MODULEOBJECT_H
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifndef Py_BUILD_CORE
 | ||
|  | #  error "this header requires Py_BUILD_CORE define"
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | typedef struct { | ||
|  |     PyObject_HEAD | ||
|  |     PyObject *md_dict; | ||
|  |     struct PyModuleDef *md_def; | ||
|  |     void *md_state; | ||
|  |     PyObject *md_weaklist; | ||
|  |     // for logging purposes after md_dict is cleared
 | ||
|  |     PyObject *md_name; | ||
|  | } PyModuleObject; | ||
|  | 
 | ||
|  | static inline PyModuleDef* _PyModule_GetDef(PyObject *mod) { | ||
|  |     assert(PyModule_Check(mod)); | ||
|  |     return ((PyModuleObject *)mod)->md_def; | ||
|  | } | ||
|  | 
 | ||
|  | static inline void* _PyModule_GetState(PyObject* mod) { | ||
|  |     assert(PyModule_Check(mod)); | ||
|  |     return ((PyModuleObject *)mod)->md_state; | ||
|  | } | ||
|  | 
 | ||
|  | static inline PyObject* _PyModule_GetDict(PyObject *mod) { | ||
|  |     assert(PyModule_Check(mod)); | ||
|  |     PyObject *dict = ((PyModuleObject *)mod) -> md_dict; | ||
|  |     // _PyModule_GetDict(mod) must not be used after calling module_clear(mod)
 | ||
|  |     assert(dict != NULL); | ||
|  |     return dict; | ||
|  | } | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | #endif /* !Py_INTERNAL_MODULEOBJECT_H */
 |