Objetos Inteiros
****************

Todos os inteiros são implementados como objetos inteiros "longos" de
tamanho arbitrário.

Em caso de erro, a maioria das APIs "PyLong_As*" retorna "(tipo de
retorno)-1" que não pode ser distinguido de um número. Use
"PyErr_Occurred()" para desambiguar.

PyLongObject

   Este subtipo de "PyObject" representa um objeto inteiro Python.

PyTypeObject PyLong_Type

   Esta instância de "PyTypeObject" representa o tipo inteiro Python.
   Este é o mesmo objeto que "int" na camada Python.

int PyLong_Check(PyObject *p)

   Retorna true se seu argumento é um "PyLongObject" ou um subtipo de
   "PyLongObject". Esta função sempre tem sucesso.

int PyLong_CheckExact(PyObject *p)

   Retorna true se seu argumento é um "PyLongObject", mas não um
   subtipo de "PyLongObject". Esta função sempre tem sucesso.

PyObject* PyLong_FromLong(long v)
    *Return value: New reference.*

   Retorna um novo objeto "PyLongObject" de *v* ou "NULL" em caso de
   falha.

   A implementação atual mantém um vetor de objetos inteiros para
   todos os inteiros entre "-5" e "256". Quando você cria um int nesse
   intervalo, você na verdade apenas obtém uma referência ao objeto
   existente.

PyObject* PyLong_FromUnsignedLong(unsigned long v)
    *Return value: New reference.*

   Retorna um novo objeto "PyLongObject" de um "unsigned long" C ou
   "NULL" em caso de falha.

PyObject* PyLong_FromSsize_t(Py_ssize_t v)
    *Return value: New reference.*

   Retorna um novo objeto "PyLongObject" de um "Py_ssize_t" C ou
   "NULL" em caso de falha.

PyObject* PyLong_FromSize_t(size_t v)
    *Return value: New reference.*

   Retorna um novo objeto "PyLongObject" de um "size_t" C ou "NULL" em
   caso de falha.

PyObject* PyLong_FromLongLong(long long v)
    *Return value: New reference.*

   Retorna um novo objeto "PyLongObject" de um "long long" C ou "NULL"
   em caso de falha.

PyObject* PyLong_FromUnsignedLongLong(unsigned long long v)
    *Return value: New reference.*

   Retorna um novo objeto "PyLongObject" de um "unsigned long long" C
   ou "NULL" em caso de falha.

PyObject* PyLong_FromDouble(double v)
    *Return value: New reference.*

   Retorna um novo objeto "PyLongObject" da parte inteira de *v* ou
   "NULL" em caso de falha.

PyObject* PyLong_FromString(const char *str, char **pend, int base)
    *Return value: New reference.*

   Retorna um novo "PyLongObject" com base no valor da string em
   *str*, que é interpretado de acordo com a raiz em *base*. Se *pend*
   não for "NULL", **pend* apontará para o primeiro caractere em *str*
   que segue a representação do número. Se *base* for "0", *str* é
   interpretado usando a definição de Inteiros literais; neste caso,
   zeros à esquerda em um número decimal diferente de zero aumenta um
   "ValueError". Se *base* não for "0", deve estar entre "2" e "36",
   inclusive. Espaços iniciais e sublinhados simples após um
   especificador de base e entre dígitos são ignorados. Se não houver
   dígitos, "ValueError" será levantada.

PyObject* PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)
    *Return value: New reference.*

   Converte uma sequência de dígitos Unicode para um valor inteiro
   Python.

   Deprecated since version 3.3, will be removed in version 3.10:
   Parte do estilo antigo "Py_UNICODE" API; por favor, migre o uso
   para "PyLong_FromUnicodeObject()".

PyObject* PyLong_FromUnicodeObject(PyObject *u, int base)
    *Return value: New reference.*

   Converte uma sequência de dígitos Unicode na string *u* para um
   valor inteiro Python.

   Novo na versão 3.3.

PyObject* PyLong_FromVoidPtr(void *p)
    *Return value: New reference.*

   Cria um inteiro Python a partir do ponteiro *p*. O valor do
   ponteiro pode ser recuperado do valor resultante usando
   "PyLong_AsVoidPtr()".

long PyLong_AsLong(PyObject *obj)

   Retorna uma representação de "long" C de *obj*. Se *obj* não for
   uma instância de "PyLongObject", primeiro chama seu método
   "__index__()" ou "__int__()" (se presente) para convertê-lo em um
   "PyLongObject".

   Levanta "OverflowError" se o valor de *obj* estiver fora do
   intervalo de um "long".

   Retorna "-1" no caso de erro.  Use "PyErr_Occurred()" para
   desambiguar.

   Alterado na versão 3.8: Usa "__index__()", se disponível.

   Obsoleto desde a versão 3.8: O uso de  "__int__()" foi
   descontinuado.

long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)

   Retorna uma representação de "long" C de *obj*. Se *obj* não for
   uma instância de "PyLongObject", primeiro chama seu método
   "__index__()" ou "__int__()" (se presente) para convertê-lo em um
   "PyLongObject".

   Se o valor de *obj* for maior que "LONG_MAX" ou menor que
   "LONG_MIN", define **overflow* para "1" ou "-1", respectivamente, e
   retorna "-1"; caso contrário, define **overflow* para "0". Se
   qualquer outra exceção ocorrer, define **overflow* para "0" e
   retorne "-1" como de costume.

   Retorna "-1" no caso de erro.  Use "PyErr_Occurred()" para
   desambiguar.

   Alterado na versão 3.8: Usa "__index__()", se disponível.

   Obsoleto desde a versão 3.8: O uso de  "__int__()" foi
   descontinuado.

long long PyLong_AsLongLong(PyObject *obj)

   Retorna uma representação de "long long" C de *obj*. Se *obj* não
   for uma instância de "PyLongObject", primeiro chama seu método
   "__index__()" ou "__int__()" (se presente) para convertê-lo em um
   "PyLongObject".

   Levanta "OverflowError" se o valor de *obj* estiver fora do
   intervalo de um "long long".

   Retorna "-1" no caso de erro.  Use "PyErr_Occurred()" para
   desambiguar.

   Alterado na versão 3.8: Usa "__index__()", se disponível.

   Obsoleto desde a versão 3.8: O uso de  "__int__()" foi
   descontinuado.

long long PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow)

   Retorna uma representação de "long long" C de *obj*. Se *obj* não
   for uma instância de "PyLongObject", primeiro chama seu método
   "__index__()" ou "__int__()" (se presente) para convertê-lo em um
   "PyLongObject".

   Se o valor de *obj* for maior que "LLONG_MAX" ou menor que
   "LLONG_MIN", define **overflow* para "1" ou "-1", respectivamente,
   e retorna "-1"; caso contrário, define **overflow* para "0". Se
   qualquer outra exceção ocorrer, define **overflow* para "0" e
   retorne "-1" como de costume.

   Retorna "-1" no caso de erro.  Use "PyErr_Occurred()" para
   desambiguar.

   Novo na versão 3.2.

   Alterado na versão 3.8: Usa "__index__()", se disponível.

   Obsoleto desde a versão 3.8: O uso de  "__int__()" foi
   descontinuado.

Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)

   Retorna uma representação de "Py_ssize_t" C de *pylong*. *pylong*
   deve ser uma instância de "PyLongObject".

   Levanta "OverflowError" se o valor de *pylong* estiver fora do
   intervalo de um "Py_ssize_t".

   Retorna "-1" no caso de erro.  Use "PyErr_Occurred()" para
   desambiguar.

unsigned long PyLong_AsUnsignedLong(PyObject *pylong)

   Retorna uma representação de "unsigned long" C de *pylong*.
   *pylong* deve ser uma instância de "PyLongObject".

   Levanta "OverflowError" se o valor de *pylong* estiver fora do
   intervalo de um "unsigned long".

   Retorna "(unsigned long)-1" no caso de erro.  Use
   "PyErr_Occurred()" para desambiguar.

size_t PyLong_AsSize_t(PyObject *pylong)

   Retorna uma representação de "size_t" C de *pylong*. *pylong* deve
   ser uma instância de "PyLongObject".

   Levanta "OverflowError" se o valor de *pylong* estiver fora do
   intervalo de um "size_t".

   Retorna "(size)-1" no caso de erro.  Use "PyErr_Occurred()" para
   desambiguar.

unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong)

   Retorna uma representação de "unsigned long long" C de *pylong*.
   *pylong* deve ser uma instância de "PyLongObject".

   Levanta "OverflowError" se o valor de *pylong* estiver fora do
   intervalo de um "unsigned long long".

   Retorna "(unsigned long long)-1" no caso de erro.  Use
   "PyErr_Occurred()" para desambiguar.

   Alterado na versão 3.1: Um *pylong* negativo agora levanta
   "OverflowError", não "TypeError".

unsigned long PyLong_AsUnsignedLongMask(PyObject *obj)

   Retorna uma representação de "unsigned long" C de *obj*. Se *obj*
   não for uma instância de "PyLongObject", primeiro chama seu método
   "__index__()" ou "__int__()" (se presente) para convertê-lo em um
   "PyLongObject".

   Se o valor de *obj* estiver fora do intervalo para um "unsigned
   long", retorna a redução desse módulo de valor "ULONG_MAX + 1".

   Retorna "(unsigned long)-1" no caso de erro.  Use
   "PyErr_Occurred()" para desambiguar.

   Alterado na versão 3.8: Usa "__index__()", se disponível.

   Obsoleto desde a versão 3.8: O uso de  "__int__()" foi
   descontinuado.

unsigned long long PyLong_AsUnsignedLongLongMask(PyObject *obj)

   Retorna uma representação de "unsigned long long" C de *obj*. Se
   *obj* não for uma instância de "PyLongObject", primeiro chama seu
   método "__index__()" ou "__int__()" (se presente) para convertê-lo
   em um "PyLongObject".

   Se o valor de *obj* estiver fora do intervalo para um "unsigned
   long long", retorna a redução desse módulo de valor "ULLONG_MAX +
   1".

   Retorna "(unsigned long long)-1" no caso de erro.  Use
   "PyErr_Occurred()" para desambiguar.

   Alterado na versão 3.8: Usa "__index__()", se disponível.

   Obsoleto desde a versão 3.8: O uso de  "__int__()" foi
   descontinuado.

double PyLong_AsDouble(PyObject *pylong)

   Retorna uma representação de "double" C de *pylong*. *pylong* deve
   ser uma instância de "PyLongObject".

   Levanta "OverflowError" se o valor de *pylong* estiver fora do
   intervalo de um "double".

   Retorna "-1.0" no caso de erro.  Use "PyErr_Occurred()" para
   desambiguar.

void* PyLong_AsVoidPtr(PyObject *pylong)

   Converte um inteiro Python *pylong* em um ponteiro "void" C. Se
   *pylong* não puder ser convertido, uma "OverflowError" será
   levantada. Isso só é garantido para produzir um ponteiro utilizável
   "void" para valores criados com "PyLong_FromVoidPtr()".

   Retorna "NULL" no caso de erro.  Use "PyErr_Occurred()" para
   desambiguar.
