mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	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
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			69 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 */
 |