mirror of
https://github.com/python/cpython.git
synced 2026-10-28 10:25:05 +08:00
Move source access and logical spans into the tokenizer source API, and keep input and encoding ownership in the reader. Export the incremental decoder helper for parser generator extensions.
76 lines
2.3 KiB
C
76 lines
2.3 KiB
C
#ifndef Py_INTERNAL_CODECS_H
|
|
#define Py_INTERNAL_CODECS_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef Py_BUILD_CORE
|
|
# error "this header requires Py_BUILD_CORE define"
|
|
#endif
|
|
|
|
#include "pycore_interp_structs.h" // struct codecs_state
|
|
|
|
/* Initialize codecs-related state for the given interpreter, including
|
|
registering the first codec search function. Must be called before any other
|
|
PyCodec-related functions, and while only one thread is active. */
|
|
extern PyStatus _PyCodec_InitRegistry(PyInterpreterState *interp);
|
|
|
|
/* Finalize codecs-related state for the given interpreter. No PyCodec-related
|
|
functions other than PyCodec_Unregister() may be called after this. */
|
|
extern void _PyCodec_Fini(PyInterpreterState *interp);
|
|
|
|
extern PyObject* _PyCodec_Lookup(const char *encoding);
|
|
|
|
/*
|
|
* Un-register the error handling callback function registered under
|
|
* the given 'name'. Only custom error handlers can be un-registered.
|
|
*
|
|
* - Return -1 and set an exception if 'name' refers to a built-in
|
|
* error handling name (e.g., 'strict'), or if an error occurred.
|
|
* - Return 0 if no custom error handler can be found for 'name'.
|
|
* - Return 1 if the custom error handler was successfully removed.
|
|
*/
|
|
extern int _PyCodec_UnregisterError(const char *name);
|
|
|
|
/* Text codec specific encoding and decoding API.
|
|
|
|
Checks the encoding against a list of codecs which do not
|
|
implement a str<->bytes encoding before attempting the
|
|
operation.
|
|
|
|
Please note that these APIs are internal and should not
|
|
be used in Python C extensions.
|
|
|
|
XXX (ncoghlan): should we make these, or something like them, public
|
|
in Python 3.5+?
|
|
|
|
*/
|
|
PyAPI_FUNC(PyObject*) _PyCodec_LookupTextEncoding(
|
|
const char *encoding,
|
|
const char *alternate_command);
|
|
|
|
extern PyObject* _PyCodec_EncodeText(
|
|
PyObject *object,
|
|
const char *encoding,
|
|
const char *errors);
|
|
|
|
extern PyObject* _PyCodec_DecodeText(
|
|
PyObject *object,
|
|
const char *encoding,
|
|
const char *errors);
|
|
|
|
/* Helpers to create incremental codecs from a codec info object. */
|
|
// Export for test_peg_generator.
|
|
PyAPI_FUNC(PyObject*) _PyCodecInfo_GetIncrementalDecoder(
|
|
PyObject *codec_info,
|
|
const char *errors);
|
|
|
|
extern PyObject* _PyCodecInfo_GetIncrementalEncoder(
|
|
PyObject *codec_info,
|
|
const char *errors);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* !Py_INTERNAL_CODECS_H */
|