型オブジェクト
**************

PyTypeObject

   組み込み型を記述する際に用いられる、オブジェクトを表す C 構造体です
   。

PyObject* PyType_Type

   型オブジェクト自身の型オブジェクトです; Python レイヤにおける
   "type" と同じオブジェクトです。

int PyType_Check(PyObject *o)

   オブジェクト *o* が型オブジェクトの場合に真を返します。標準型オブジ
   ェクトから派生したサブタイプのインスタンスも含みます。その他の場合
   には偽を返します。

int PyType_CheckExact(PyObject *o)

   オブジェクト *o* が型オブジェクトの場合に真を返します。標準型のサブ
   タイプの場合は含みません。その他の場合には偽を返します。

unsigned int PyType_ClearCache()

   内部の検索キャッシュをクリアします。現在のバージョンタグを返します
   。

unsigned long PyType_GetFlags(PyTypeObject* type)

   *type* のメンバーである "tp_flags" を返します。この関数は基本的に
   *Py_LIMITED_API* を定義して使うことを想定しています。それぞれのフラ
   グはpythonの異なるリリースで安定していることが保証されていますが、
   "tp_flags" 自体は限定されたAPIの一部ではありません。

   バージョン 3.2 で追加.

   バージョン 3.4 で変更: 返り値の型が "long" ではなく "unsigned long"
   になりました。

void PyType_Modified(PyTypeObject *type)

   内部の検索キャッシュを、その type とすべてのサブタイプに対して無効
   にします。この関数は type の属性や基底クラス列を変更したあとに手動
   で呼び出さなければなりません。

int PyType_HasFeature(PyTypeObject *o, int feature)

   型オブジェクト *o* に、型機能 *feature* が設定されている場合に真を
   返します。型機能は各々単一ビットのフラグで表されます。

int PyType_IS_GC(PyTypeObject *o)

   型オブジェクトが *o* が循環参照検出をサポートしている場合に真を返し
   ます; この関数は型機能フラグ "Py_TPFLAGS_HAVE_GC" の設定状態をチェ
   ックします。

int PyType_IsSubtype(PyTypeObject *a, PyTypeObject *b)

   *a* が *b* のサブタイプの場合に真を返します。

   この関数は実際のサブクラスをチェックするだけです。つまり、
   "__subclasscheck__()" は *b* に対し呼ばれません。 "issubclass()" と
   同じチェックをするには "PyObject_IsSubclass()" を呼んでください。

PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
    *Return value: New reference.*

   型オブジェクトの "tp_alloc" に対するジェネリックハンドラです。
   Python のデフォルトのメモリアロケートメカニズムを使って新しいインス
   タンスをアロケートし、すべての内容を *NULL* で初期化します。

PyObject* PyType_GenericNew(PyTypeObject *type, PyObject *args, PyObject *kwds)
    *Return value: New reference.*

   型オブジェクトの "tp_new" に対するジェネリックハンドラです。型の
   "tp_alloc" スロットを使って新しいインスタンスを作成します。

int PyType_Ready(PyTypeObject *type)

   型オブジェクトのファイナライズを行います。この関数は全てのオブジェ
   クトで初期化を完了するために呼び出されなくてはなりません。この関数
   は、基底クラス型から継承したスロットを型オブジェクトに追加する役割
   があります。成功した場合には "0" を返し、エラーの場合には "-1" を返
   して例外情報を設定します。

PyObject* PyType_FromSpec(PyType_Spec *spec)

   関数引数に与えられた *spec* からヒープタイプのオブジェクトを作って
   返します。

PyObject* PyType_FromSpecWithBases(PyType_Spec *spec, PyObject *bases)

   *spec* からヒープタイプのオブジェクトを生成して返します。加えて、生
   成されたヒープタイプは *bases* タプルが保持するすべての型を基底の型
   として保持します。他のヒープ型を基底型として参照できます。

   バージョン 3.3 で追加.

void* PyType_GetSlot(PyTypeObject *type, int slot)

   与えられたスロットに格納されている関数ポインタを返します。返り値が
   *NULL* の場合は、スロットが *NULL* か、関数が不正な引数で呼ばれたこ
   とを示します。通常、呼び出し側は返り値のポインタを適切な関数型にキ
   ャストします。

   バージョン 3.4 で追加.
