bytearray オブジェクト
**********************

type PyByteArrayObject

   この "PyObject" のサブタイプは Python の bytearray オブジェクトを表
   します。

   "PyByteArrayObject" の内部バッファには、ヌル終端の C 文字列との互換
   性のため、末尾に余分なヌルバイトが常に含まれます。 このバイトは
   "PyByteArray_Size()" の戻り値にも、以下の関数の "len" 引数にも含め
   ません。

PyTypeObject PyByteArray_Type
    * 次に属します: Stable ABI.*

   この "PyTypeObject" のインスタンスは、 Python bytearray 型を示しま
   す。 Python レイヤでの "bytearray" と同じオブジェクトです。


型チェックマクロ
================

int PyByteArray_Check(PyObject *o)

   オブジェクト *o* が bytearray オブジェクトか bytearray 型のサブタイ
   プのインスタンスである場合に真を返します。この関数は常に成功します
   。

int PyByteArray_CheckExact(PyObject *o)

   オブジェクト *o* が bytearray オブジェクトだが bytearray 型のサブタ
   イプのインスタンスでない場合に真を返します。この関数は常に成功しま
   す。


ダイレクト API 関数
===================

PyObject *PyByteArray_FromObject(PyObject *o)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.** Thread safety:
   Safe for concurrent use on the same object.*

   buffer protocol を実装した任意のオブジェクト *o* から、新しい
   bytearrayオブジェクトを作成し、返します。

   失敗した場合は、例外を設定して "NULL" を返します。

   注釈:

     オブジェクトがバッファプロトコルを実装している場合、bytearray オ
     ブジェクトの作成中にバッファを変更してはいけません。

PyObject *PyByteArray_FromStringAndSize(const char *string, Py_ssize_t len)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.** Thread safety:
   Atomic.*

   "string" とその長さ "len" から新しい bytearray オブジェクトを作成し
   ます。

   失敗した場合は、例外を設定して "NULL" を返します。

PyObject *PyByteArray_Concat(PyObject *a, PyObject *b)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.** Thread safety:
   Safe for concurrent use on the same object.*

   bytearray *a* と *b* を連結した結果を新しい bytearray として返しま
   す。

   失敗した場合は、例外を設定して "NULL" を返します。

   注釈:

     オブジェクトがバッファプロトコルを実装している場合、bytearray オ
     ブジェクトの作成中にバッファを変更してはいけません。

Py_ssize_t PyByteArray_Size(PyObject *bytearray)
    * 次に属します: Stable ABI.** Thread safety: Atomic.*

   "NULL" ポインタチェックの後に *bytearray* のサイズを返します。

char *PyByteArray_AsString(PyObject *bytearray)
    * 次に属します: Stable ABI.** Thread safety: Safe to call from
   multiple threads with external synchronization only.*

   "NULL" ポインタチェックの後に *bytearray* の内容を char 配列として
   返します。 返される配列には、常に余分な null バイトが追加されます。

   注釈:

     返された char 配列の使用中に bytearray オブジェクトを変更する操作
     はスレッドセーフではありません。

int PyByteArray_Resize(PyObject *bytearray, Py_ssize_t len)
    * 次に属します: Stable ABI.*

   "bytearray" の内部バッファのサイズを "len" に変更します。 失敗した
   場合は、例外を設定して "-1" を返します。

   バージョン 3.14 で変更: "len" が負の場合は、例外を設定して -1 を返
   すようになりました。


マクロ
======

以下のマクロは、ポインタのチェックをしないことにより安全性を犠牲にして
スピードを優先しています。

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

   "PyByteArray_AsString()" に似ていますが、エラーチェックを行いません
   。

   注釈:

     返された char 配列の使用中に bytearray オブジェクトを変更する操作
     はスレッドセーフではありません。

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

   "PyByteArray_Size()" に似ていますが、エラーチェックを行いません。
