オブジェクトをヒープ上にメモリ確保する
**************************************

PyObject* _PyObject_New(PyTypeObject *type)
    *Return value: New reference.*

PyVarObject* _PyObject_NewVar(PyTypeObject *type, Py_ssize_t size)
    *Return value: New reference.*

   バージョン 2.5 で変更: この関数は以前は *size* の型に "int" を利用
   していました。この変更により、 64bit システムを正しくサポートするに
   は修正が必要になります。

void _PyObject_Del(PyObject *op)

PyObject* PyObject_Init(PyObject *op, PyTypeObject *type)
    *Return value: Borrowed reference.*

   新たにメモリ確保されたオブジェクト *op* に対し、型と初期状態での参
   照 (initial reference) を初期化します。初期化されたオブジェクトを返
   します。*type* からそのオブジェクトが循環参照ガベージ検出の機能を有
   する場合、検出機構が監視対象とするオブジェクトのセットに追加されま
   す。オブジェクトの他のフィールドには影響を及ぼしません。

PyVarObject* PyObject_InitVar(PyVarObject *op, PyTypeObject *type, Py_ssize_t size)
    *Return value: Borrowed reference.*

   "PyObject_Init()" の全ての処理を行い、可変サイズオブジェクトの場合
   には長さ情報も初期化します。

   バージョン 2.5 で変更: この関数は以前は *size* の型に "int" を利用
   していました。この変更により、 64bit システムを正しくサポートするに
   は修正が必要になります。

TYPE* PyObject_New(TYPE, PyTypeObject *type)
    *Return value: New reference.*

   C 構造体型 *TYPE* と Python型オブジェクト *type* を使って、新しい
   Python オブジェクトをメモリ上に確保します。Pythonオブジェクトヘッダ
   で定義されていないフィールドは初期化されません; オブジェクトの参照
   カウントは 1 になります。確保するメモリのサイズは型オブジェクトの
   "tp_basicsize" フィールドで決まります。

TYPE* PyObject_NewVar(TYPE, PyTypeObject *type, Py_ssize_t size)
    *Return value: New reference.*

   C 構造体型 *TYPE* と Python 型オブジェクト *type* を使って新しい
   Python オブジェクトをメモリ上に確保します。 Python オブジェクトヘッ
   ダで定義されていないフィールドは初期化されません。確保されたメモリ
   は、 *TYPE* 構造体に加え、*type* の "tp_itemsize" フィールドで指定
   されているサイズを *size* 個分の大きさを格納できます。この関数は、
   例えばタプルのように生成時にサイズを決定できるオブジェクトを実装す
   る際に便利です。一連の複数のフィールドのメモリ割り当てを一度で行う
   ことでアロケーション回数を減らし、メモリ管理の効率が向上します。

   バージョン 2.5 で変更: この関数は以前は *size* の型に "int" を利用
   していました。この変更により、 64bit システムを正しくサポートするに
   は修正が必要になります。

void PyObject_Del(PyObject *op)

   "PyObject_New()" や "PyObject_NewVar()" で 確保したメモリを解放しま
   す。通常、この関数はオブジェクトの型に指定されている "tp_dealloc"
   ハンドラから呼び出されます。 この関数を呼び出した後は、メモリ領域は
   もはや有効な Python オブジェクトを表現していないので、オブジェクト
   のフィールド に対してアクセスしてはなりません。

PyObject* Py_InitModule(char *name, PyMethodDef *methods)
    *Return value: Borrowed reference.*

   *name* と関数のテーブルに基づいて新たなモジュールオブジェクトを生成
   し、生成されたモジュールオブジェクトを返します。

   バージョン 2.3 で変更: 以前のバージョンの Python では、 *methods*
   引数の値として *NULL* をサポートしていませんでした.

PyObject* Py_InitModule3(char *name, PyMethodDef *methods, char *doc)
    *Return value: Borrowed reference.*

   *name* と関数のテーブルに基づいて新たなモジュールオブジェクトを生成
   し、生成されたモジュールオブジェクトを返します。 *doc* が *NULL* で
   ない場合、モジュールの docstring として使われます。

   バージョン 2.3 で変更: 以前のバージョンの Python では、 *methods*
   引数の値として *NULL* をサポートしていませんでした.

PyObject* Py_InitModule4(char *name, PyMethodDef *methods, char *doc, PyObject *self, int apiver)
    *Return value: Borrowed reference.*

   *name* と関数のテーブルに基づいて新たなモジュールオブジェクトを生成
   し、生成されたモジュールオブジェクトを返します。 *doc* が *NULL* で
   ない場合、モジュールの docstring として使われます。 *self* が
   *NULL* でない場合、モジュール内の各関数の第一引数として渡されます
   (*NULL* の時には第一引数も *NULL* になります)。 (この関数は実験的な
   機能のために追加されたもので、現在の Python のバージョンで使われて
   はいないはずです。) *apiver* に渡してよい値は、
   "PYTHON_API_VERSION" で定義されている定数だけです。

   注釈: この関数のほとんどの用途は、代わりに "Py_InitModule3()" を
     使える はずです; 本当にこの関数の必要性を理解しているときにだけ利
     用して ください。

   バージョン 2.3 で変更: 以前のバージョンの Python では、 *methods*
   引数の値として *NULL* をサポートしていませんでした.

PyObject _Py_NoneStruct

   Python からは "None" に見えるオブジェクトです。この値へのアクセスは
   、このオブジェクトへのポインタを評価する "Py_None" マクロを使わねば
   なりません。
