mirror of https://github.com/python/cpython
124 lines
3.3 KiB
C
124 lines
3.3 KiB
C
#ifndef Py_CODECREGISTRY_H
|
|
#define Py_CODECREGISTRY_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* ------------------------------------------------------------------------
|
|
|
|
Python Codec Registry and support functions
|
|
|
|
|
|
Written by Marc-Andre Lemburg (mal@lemburg.com).
|
|
|
|
Copyright (c) Corporation for National Research Initiatives.
|
|
|
|
------------------------------------------------------------------------ */
|
|
|
|
/* Register a new codec search function.
|
|
|
|
As side effect, this tries to load the encodings package, if not
|
|
yet done, to make sure that it is always first in the list of
|
|
search functions.
|
|
|
|
The search_function's refcount is incremented by this function. */
|
|
|
|
extern DL_IMPORT(int) PyCodec_Register(
|
|
PyObject *search_function
|
|
);
|
|
|
|
/* Codec register lookup API.
|
|
|
|
Looks up the given encoding and returns a tuple (encoder, decoder,
|
|
stream reader, stream writer) of functions which implement the
|
|
different aspects of processing the encoding.
|
|
|
|
The encoding string is looked up converted to all lower-case
|
|
characters. This makes encodings looked up through this mechanism
|
|
effectively case-insensitive.
|
|
|
|
If no codec is found, a KeyError is set and NULL returned.
|
|
|
|
As side effect, this tries to load the encodings package, if not
|
|
yet done. This is part of the lazy load strategy for the encodings
|
|
package.
|
|
|
|
*/
|
|
|
|
extern DL_IMPORT(PyObject *) _PyCodec_Lookup(
|
|
const char *encoding
|
|
);
|
|
|
|
/* Generic codec based encoding API.
|
|
|
|
object is passed through the encoder function found for the given
|
|
encoding using the error handling method defined by errors. errors
|
|
may be NULL to use the default method defined for the codec.
|
|
|
|
Raises a LookupError in case no encoder can be found.
|
|
|
|
*/
|
|
|
|
extern DL_IMPORT(PyObject *) PyCodec_Encode(
|
|
PyObject *object,
|
|
const char *encoding,
|
|
const char *errors
|
|
);
|
|
|
|
/* Generic codec based decoding API.
|
|
|
|
object is passed through the decoder function found for the given
|
|
encoding using the error handling method defined by errors. errors
|
|
may be NULL to use the default method defined for the codec.
|
|
|
|
Raises a LookupError in case no encoder can be found.
|
|
|
|
*/
|
|
|
|
extern DL_IMPORT(PyObject *) PyCodec_Decode(
|
|
PyObject *object,
|
|
const char *encoding,
|
|
const char *errors
|
|
);
|
|
|
|
/* --- Codec Lookup APIs --------------------------------------------------
|
|
|
|
All APIs return a codec object with incremented refcount and are
|
|
based on _PyCodec_Lookup(). The same comments w/r to the encoding
|
|
name also apply to these APIs.
|
|
|
|
*/
|
|
|
|
/* Get an encoder function for the given encoding. */
|
|
|
|
extern DL_IMPORT(PyObject *) PyCodec_Encoder(
|
|
const char *encoding
|
|
);
|
|
|
|
/* Get a decoder function for the given encoding. */
|
|
|
|
extern DL_IMPORT(PyObject *) PyCodec_Decoder(
|
|
const char *encoding
|
|
);
|
|
|
|
/* Get a StreamReader factory function for the given encoding. */
|
|
|
|
extern DL_IMPORT(PyObject *) PyCodec_StreamReader(
|
|
const char *encoding,
|
|
PyObject *stream,
|
|
const char *errors
|
|
);
|
|
|
|
/* Get a StreamWriter factory function for the given encoding. */
|
|
|
|
extern DL_IMPORT(PyObject *) PyCodec_StreamWriter(
|
|
const char *encoding,
|
|
PyObject *stream,
|
|
const char *errors
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* !Py_CODECREGISTRY_H */
|