Objetos byte array
******************

type PyByteArrayObject

   Esse subtipo de "PyObject" representa um objeto Python bytearray.

PyTypeObject PyByteArray_Type
    * Parte da ABI Estável.*

   Essa instância de "PyTypeObject" representa um tipo Python
   bytearray; é o mesmo objeto que o "bytearray" na camada Python.


Macros para verificação de tipo
===============================

int PyByteArray_Check(PyObject *o)

   Retorna verdadeiro se o objeto *o* for um objeto bytearray ou se
   for uma instância de um subtipo do tipo bytearray. Esta função
   sempre tem sucesso.

int PyByteArray_CheckExact(PyObject *o)

   Retorna verdadeiro se o objeto *o* for um objeto bytearray, mas não
   uma instância de um subtipo do tipo bytearray. Esta função sempre
   tem sucesso.


Funções diretas da API
======================

PyObject *PyByteArray_FromObject(PyObject *o)
    *Retorna valor: Nova referência.** Parte da ABI Estável.** Thread
   safety: Safe for concurrent use on the same object.*

   Retorna um novo objeto bytearray, *o*, que implementa o protocolo
   de buffer.

   Em caso de falha, retorna "NULL" com uma exceção definida.

   Nota:

     If the object implements the buffer protocol, then the buffer
     must not be mutated while the bytearray object is being created.

PyObject *PyByteArray_FromStringAndSize(const char *string, Py_ssize_t len)
    *Retorna valor: Nova referência.** Parte da ABI Estável.** Thread
   safety: Atomic.*

   Cria um novo objeto bytearray a partir de *string* e seu
   comprimento, *len*.

   Em caso de falha, retorna "NULL" com uma exceção definida.

PyObject *PyByteArray_Concat(PyObject *a, PyObject *b)
    *Retorna valor: Nova referência.** Parte da ABI Estável.** Thread
   safety: Safe for concurrent use on the same object.*

   Concatena os bytearrays *a* e *b* e retorna um novo bytearray com o
   resultado.

   Em caso de falha, retorna "NULL" com uma exceção definida.

   Nota:

     If the object implements the buffer protocol, then the buffer
     must not be mutated while the bytearray object is being created.

Py_ssize_t PyByteArray_Size(PyObject *bytearray)
    * Parte da ABI Estável.** Thread safety: Atomic.*

   Retorna o tamanho de *bytearray* após verificar se há um ponteiro
   "NULL".

char *PyByteArray_AsString(PyObject *bytearray)
    * Parte da ABI Estável.** Thread safety: Safe to call from
   multiple threads with external synchronization only.*

   Retorna o conteúdo de *bytearray* como uma matriz de caracteres
   após verificar um ponteiro "NULL". O array retornado sempre tem um
   byte nulo extra acrescentado.

   Nota:

     It is not thread-safe to mutate the bytearray object while using
     the returned char array.

int PyByteArray_Resize(PyObject *bytearray, Py_ssize_t len)
    * Parte da ABI Estável.*

   Redimensiona o buffer interno de *bytearray* para o tamanho *len*.
   Falha é um retorno "-1" com um conjunto de exceções.

   Alterado na versão 3.14: Um *len* negativo agora resultará na
   definição de uma exceção e no retorno de -1.


Macros
======

Estas macros trocam segurança por velocidade e não verificam os
ponteiros.

char *PyByteArray_AS_STRING(PyObject *bytearray)
    * Thread safety: Safe to call from multiple threads with external
   synchronization only.*

   Similar a "PyByteArray_AsString()", mas sem verificação de erro.

   Nota:

     It is not thread-safe to mutate the bytearray object while using
     the returned char array.

Py_ssize_t PyByteArray_GET_SIZE(PyObject *bytearray)
    * Thread safety: Atomic.*

   Similar a "PyByteArray_Size()", mas sem verificação de erro.
