| #ifndef Py_INTERNAL_UNICODEOBJECT_H |
| #define Py_INTERNAL_UNICODEOBJECT_H |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #ifndef Py_BUILD_CORE |
| # error "this header requires Py_BUILD_CORE define" |
| #endif |
| |
| #include "pycore_fileutils.h" // _Py_error_handler |
| |
| void _PyUnicode_ExactDealloc(PyObject *op); |
| |
| /* runtime lifecycle */ |
| |
| extern void _PyUnicode_InitState(PyInterpreterState *); |
| extern PyStatus _PyUnicode_InitGlobalObjects(PyInterpreterState *); |
| extern PyStatus _PyUnicode_InitTypes(PyInterpreterState *); |
| extern void _PyUnicode_Fini(PyInterpreterState *); |
| extern void _PyUnicode_FiniTypes(PyInterpreterState *); |
| extern void _PyStaticUnicode_Dealloc(PyObject *); |
| |
| extern PyTypeObject _PyUnicodeASCIIIter_Type; |
| |
| /* other API */ |
| |
| struct _Py_unicode_runtime_ids { |
| PyThread_type_lock lock; |
| // next_index value must be preserved when Py_Initialize()/Py_Finalize() |
| // is called multiple times: see _PyUnicode_FromId() implementation. |
| Py_ssize_t next_index; |
| }; |
| |
| /* fs_codec.encoding is initialized to NULL. |
| Later, it is set to a non-NULL string by _PyUnicode_InitEncodings(). */ |
| struct _Py_unicode_fs_codec { |
| char *encoding; // Filesystem encoding (encoded to UTF-8) |
| int utf8; // encoding=="utf-8"? |
| char *errors; // Filesystem errors (encoded to UTF-8) |
| _Py_error_handler error_handler; |
| }; |
| |
| struct _Py_unicode_ids { |
| Py_ssize_t size; |
| PyObject **array; |
| }; |
| |
| struct _Py_unicode_state { |
| struct _Py_unicode_fs_codec fs_codec; |
| |
| // Unicode identifiers (_Py_Identifier): see _PyUnicode_FromId() |
| struct _Py_unicode_ids ids; |
| }; |
| |
| extern void _PyUnicode_ClearInterned(PyInterpreterState *interp); |
| |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif /* !Py_INTERNAL_UNICODEOBJECT_H */ |