17db96d56Sopenharmony_ci#ifndef Py_INTERNAL_EXCEPTIONS_H
27db96d56Sopenharmony_ci#define Py_INTERNAL_EXCEPTIONS_H
37db96d56Sopenharmony_ci#ifdef __cplusplus
47db96d56Sopenharmony_ciextern "C" {
57db96d56Sopenharmony_ci#endif
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_ci#ifndef Py_BUILD_CORE
87db96d56Sopenharmony_ci#  error "this header requires Py_BUILD_CORE define"
97db96d56Sopenharmony_ci#endif
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ci/* runtime lifecycle */
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_ciextern PyStatus _PyExc_InitState(PyInterpreterState *);
157db96d56Sopenharmony_ciextern PyStatus _PyExc_InitGlobalObjects(PyInterpreterState *);
167db96d56Sopenharmony_ciextern int _PyExc_InitTypes(PyInterpreterState *);
177db96d56Sopenharmony_ciextern void _PyExc_Fini(PyInterpreterState *);
187db96d56Sopenharmony_ci
197db96d56Sopenharmony_ci
207db96d56Sopenharmony_ci/* other API */
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_cistruct _Py_exc_state {
237db96d56Sopenharmony_ci    // The dict mapping from errno codes to OSError subclasses
247db96d56Sopenharmony_ci    PyObject *errnomap;
257db96d56Sopenharmony_ci    PyBaseExceptionObject *memerrors_freelist;
267db96d56Sopenharmony_ci    int memerrors_numfree;
277db96d56Sopenharmony_ci    // The ExceptionGroup type
287db96d56Sopenharmony_ci    PyObject *PyExc_ExceptionGroup;
297db96d56Sopenharmony_ci};
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ciextern void _PyExc_ClearExceptionGroupType(PyInterpreterState *);
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_ci
347db96d56Sopenharmony_ci#ifdef __cplusplus
357db96d56Sopenharmony_ci}
367db96d56Sopenharmony_ci#endif
377db96d56Sopenharmony_ci#endif /* !Py_INTERNAL_EXCEPTIONS_H */
38