# 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.

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

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

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

  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.

  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.

Py_ssize_t PyByteArray_Size(PyObject *bytearray)
  Parte da ABI Estável.

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

char *PyByteArray_AsString(PyObject *bytearray)
  Parte da ABI Estável.

  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.

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

  Redimensiona o buffer interno de bytearray para o tamanho len.

## Macros

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

char *PyByteArray_AS_STRING(PyObject *bytearray)

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

Py_ssize_t PyByteArray_GET_SIZE(PyObject *bytearray)

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