mirror of
https://github.com/python/cpython.git
synced 2026-05-14 00:18:52 -04:00
ba65a065cf
We can revisit the options for keeping it global later, if desired. For now the approach seems quite complex, so we've gone with the simpler isolation solution in the meantime. https://github.com/python/cpython/issues/100227
70 lines
1.9 KiB
C
70 lines
1.9 KiB
C
#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
|
|
#include "pycore_ucnhash.h" // _PyUnicode_Name_CAPI
|
|
|
|
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 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;
|
|
};
|
|
|
|
struct _Py_unicode_runtime_state {
|
|
struct _Py_unicode_runtime_ids ids;
|
|
};
|
|
|
|
/* 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;
|
|
|
|
_PyUnicode_Name_CAPI *ucnhash_capi;
|
|
|
|
// Unicode identifiers (_Py_Identifier): see _PyUnicode_FromId()
|
|
struct _Py_unicode_ids ids;
|
|
};
|
|
|
|
extern void _PyUnicode_InternInPlace(PyInterpreterState *interp, PyObject **p);
|
|
extern void _PyUnicode_ClearInterned(PyInterpreterState *interp);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* !Py_INTERNAL_UNICODEOBJECT_H */
|