17db96d56Sopenharmony_ci#ifndef Py_INTERNAL_UNICODEOBJECT_H 27db96d56Sopenharmony_ci#define Py_INTERNAL_UNICODEOBJECT_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#include "pycore_fileutils.h" // _Py_error_handler 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_civoid _PyUnicode_ExactDealloc(PyObject *op); 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ci/* runtime lifecycle */ 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ciextern void _PyUnicode_InitState(PyInterpreterState *); 187db96d56Sopenharmony_ciextern PyStatus _PyUnicode_InitGlobalObjects(PyInterpreterState *); 197db96d56Sopenharmony_ciextern PyStatus _PyUnicode_InitTypes(PyInterpreterState *); 207db96d56Sopenharmony_ciextern void _PyUnicode_Fini(PyInterpreterState *); 217db96d56Sopenharmony_ciextern void _PyUnicode_FiniTypes(PyInterpreterState *); 227db96d56Sopenharmony_ciextern void _PyStaticUnicode_Dealloc(PyObject *); 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ciextern PyTypeObject _PyUnicodeASCIIIter_Type; 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ci/* other API */ 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_cistruct _Py_unicode_runtime_ids { 297db96d56Sopenharmony_ci PyThread_type_lock lock; 307db96d56Sopenharmony_ci // next_index value must be preserved when Py_Initialize()/Py_Finalize() 317db96d56Sopenharmony_ci // is called multiple times: see _PyUnicode_FromId() implementation. 327db96d56Sopenharmony_ci Py_ssize_t next_index; 337db96d56Sopenharmony_ci}; 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_ci/* fs_codec.encoding is initialized to NULL. 367db96d56Sopenharmony_ci Later, it is set to a non-NULL string by _PyUnicode_InitEncodings(). */ 377db96d56Sopenharmony_cistruct _Py_unicode_fs_codec { 387db96d56Sopenharmony_ci char *encoding; // Filesystem encoding (encoded to UTF-8) 397db96d56Sopenharmony_ci int utf8; // encoding=="utf-8"? 407db96d56Sopenharmony_ci char *errors; // Filesystem errors (encoded to UTF-8) 417db96d56Sopenharmony_ci _Py_error_handler error_handler; 427db96d56Sopenharmony_ci}; 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_cistruct _Py_unicode_ids { 457db96d56Sopenharmony_ci Py_ssize_t size; 467db96d56Sopenharmony_ci PyObject **array; 477db96d56Sopenharmony_ci}; 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_cistruct _Py_unicode_state { 507db96d56Sopenharmony_ci struct _Py_unicode_fs_codec fs_codec; 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ci // Unicode identifiers (_Py_Identifier): see _PyUnicode_FromId() 537db96d56Sopenharmony_ci struct _Py_unicode_ids ids; 547db96d56Sopenharmony_ci}; 557db96d56Sopenharmony_ci 567db96d56Sopenharmony_ciextern void _PyUnicode_ClearInterned(PyInterpreterState *interp); 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_ci#ifdef __cplusplus 607db96d56Sopenharmony_ci} 617db96d56Sopenharmony_ci#endif 627db96d56Sopenharmony_ci#endif /* !Py_INTERNAL_UNICODEOBJECT_H */ 63