(root)/
Python-3.11.7/
Include/
internal/
pycore_moduleobject.h
       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  static inline PyModuleDef* _PyModule_GetDef(PyObject *mod) {
      22      assert(PyModule_Check(mod));
      23      return ((PyModuleObject *)mod)->md_def;
      24  }
      25  
      26  static inline void* _PyModule_GetState(PyObject* mod) {
      27      assert(PyModule_Check(mod));
      28      return ((PyModuleObject *)mod)->md_state;
      29  }
      30  
      31  static inline PyObject* _PyModule_GetDict(PyObject *mod) {
      32      assert(PyModule_Check(mod));
      33      PyObject *dict = ((PyModuleObject *)mod) -> md_dict;
      34      // _PyModule_GetDict(mod) must not be used after calling module_clear(mod)
      35      assert(dict != NULL);
      36      return dict;
      37  }
      38  
      39  #ifdef __cplusplus
      40  }
      41  #endif
      42  #endif /* !Py_INTERNAL_MODULEOBJECT_H */