Registo de codec e funções de suporte
*************************************

int PyCodec_Register(PyObject *search_function)

   Registra uma nova função de busca de codec.

   Como efeito colateral, tenta carrear o pacote "encodings", se isso
   ainda não tiver sido feito, com o propósito de garantir que ele
   sempre o primeiro na lista de funções de busca.

int PyCodec_KnownEncoding(const char *encoding)

   Return "1" or "0" depending on whether there is a registered codec
   for the given *encoding*.

PyObject* PyCodec_Encode(PyObject *object, const char *encoding, const char *errors)

   API de codificação baseada em codec genérico.

   *objeto* é passado por parâmetro para a função de codificação para
   o *enconding* dado,  usando o método de tratamento de erros
   definido por *errors*, *errors*  pode ser *NULL* para o método
   padrão definido para o codec ser usado. Lança a  "LookupError" se o
   codificador não puder ser encontrado.

PyObject* PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)

   API  de decodificação baseada em coded genérico.

   *objeto* é passado através da função de decodificação encontrada
   para o *enconding* dado usando o método de tratamento de erros
   definido por *errors*. *errors* pode ser *NULL* para o método
   padrão definido para o codec ser usado. Lança a "LookupError" se o
   codificador não puder ser encontrado.


API de pesquisa de codec
========================

Nas funções seguintes, a string *encoding* pesquisada é convertida
para todos os caracteres minuscúlos, o que torna os mecanismos de
pesquisa efetivamente case-insentive. Se o codec não puder ser
encontrado, uma "KeyError" é definida e *NULL* é retornado.

PyObject* PyCodec_Encoder(const char *encoding)

   Chama uma função de codificação para o *encoding* dado.

PyObject* PyCodec_Decoder(const char *encoding)

   Busca uma função de decodificação para o *encoding* dado.

PyObject* PyCodec_IncrementalEncoder(const char *encoding, const char *errors)

   Busca um objeto "IncrementalEncoder" para o *encoding* dado.

PyObject* PyCodec_IncrementalDecoder(const char *encoding, const char *errors)

   Busca um objeto "IncrementalDecoder" para o *encoding* dado.

PyObject* PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)

   Busca uma factory function "StreamReader" para o *encoding* dado.

PyObject* PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)

   Busca uma  função de fábrica "StreamWriter" para o *encoding* dado.


API de registro de manipuladores de erro de decodificadores Unicode
===================================================================

int PyCodec_RegisterError(const char *name, PyObject *error)

   Registra a função de chamada de tratamento de *erro* para o *nome*
   fornecido. Esta chamada de função é invocada por um codificador
   quando encontra caracteres/bytes indecodificáveis e *nome* é
   especificado como o parâmetro de erro na chamada da função de
   codificação/decodificação.

   O retorno de chamada obtém um único argumento, uma instância de
   "UnicodeEncodeError", "UnicodeDecodeError" ou
   "UnicodeTranslateError" que contém informações sobre a sequencia
   problemática de caracteres ou bytes e seu deslocamento na string
   original (consulte  Unicode Exception Objects para funções que
   extraem essa informação). A função de retorno de chamada necessita
   lançar a exceção dada , ou retornar uma tupla de dois itens
   contendo a substituição para a sequência problemática, e um inteiro
   fornecendo o deslocamento na string original na qual a
   codificação/decodificação deve ser retomada.

   Retorna``0`` em caso de sucesso, "-1" em caso de erro.

PyObject* PyCodec_LookupError(const char *name)

   Pesquisa a função de retorno de chamada de tratamento de erros
   registrada em *name*. Como um caso especial *NULL* pode ser
   passado,  nesse caso o retorno de chamada de tratamento de erro
   para *strict* será retornado.

PyObject* PyCodec_StrictErrors(PyObject *exc)

   Lança *exc* como uma exception.

PyObject* PyCodec_IgnoreErrors(PyObject *exc)

   Ignora o erro de unicode, ignorando a entrada que causou  o erro.

PyObject* PyCodec_ReplaceErrors(PyObject *exc)

   Substiui o erro de unicode por "?" ou "U+FFFD".

PyObject* PyCodec_XMLCharRefReplaceErrors(PyObject *exc)

   Substitui o erro de unicode por caracteres da referência XML.

PyObject* PyCodec_BackslashReplaceErrors(PyObject *exc)

   Substitui o erro de unicode com escapes de barra invertida ("\x",
   "\u" e "\U").
