位元組陣列物件 (Byte Array Objects)
***********************************

type PyByteArrayObject

   這個 "PyObject" 的子型別代表了 Python 的位元組陣列物件。

PyTypeObject PyByteArray_Type
    * 為 穩定 ABI 的一部分.*

   這個 "PyTypeObject" 的實例代表了 Python 的位元組陣列型別；在 Python
   層中的 "bytearray" 為同一個物件。


型別檢查巨集
============

int PyByteArray_Check(PyObject *o)

   如果物件 *o* 是一個位元組陣列物件，或者是位元組陣列型別的子型別的實
   例，則回傳真值。此函式總是會成功執行。

int PyByteArray_CheckExact(PyObject *o)

   如果物件 *o* 是一個位元組陣列物件，但不是位元組陣列型別的子型別的實
   例，則回傳真值。此函式總是會成功執行。


直接 API 函式
=============

PyObject *PyByteArray_FromObject(PyObject *o)
    *回傳值：新的參照。** 為 穩定 ABI 的一部分.*

   由任意物件 *o* 回傳一個新的位元組陣列物件，並實作了緩衝協定 (buffer
   protocol)。

   在失敗時，會回傳 "NULL" 並設定例外。

PyObject *PyByteArray_FromStringAndSize(const char *string, Py_ssize_t len)
    *回傳值：新的參照。** 為 穩定 ABI 的一部分.*

   從 *string* 及其長度 *len* 建立一個新的位元組陣列物件。

   在失敗時，會回傳 "NULL" 並設定例外。

PyObject *PyByteArray_Concat(PyObject *a, PyObject *b)
    *回傳值：新的參照。** 為 穩定 ABI 的一部分.*

   連接位元組陣列 *a* 和 *b*，並回傳一個包含結果的新位元組陣列。

   在失敗時，會回傳 "NULL" 並設定例外。

Py_ssize_t PyByteArray_Size(PyObject *bytearray)
    * 為 穩定 ABI 的一部分.*

   在檢查為 "NULL" 指標後，回傳 *bytearray* 的大小。

char *PyByteArray_AsString(PyObject *bytearray)
    * 為 穩定 ABI 的一部分.*

   在檢查是否為 "NULL" 指標後，將 *bytearray* 的內容回傳為字元陣列。回
   傳的陣列總是會多附加一個空位元組。

int PyByteArray_Resize(PyObject *bytearray, Py_ssize_t len)
    * 為 穩定 ABI 的一部分.*

   將 *bytearray* 的內部緩衝區大小調整為 *len*。失敗時會回傳 "-1" 並設
   定例外。

   在 3.14 版的變更: 負的 *len* 現在會設定例外並回傳 -1。


巨集
====

這些巨集犧牲了安全性以換取速度，並且它們不會檢查指標。

char *PyByteArray_AS_STRING(PyObject *bytearray)

   與 "PyByteArray_AsString()" 類似，但沒有錯誤檢查。

Py_ssize_t PyByteArray_GET_SIZE(PyObject *bytearray)

   與 "PyByteArray_Size()" 類似，但沒有錯誤檢查。
