イテレータプロトコル (iterator protocol)
****************************************

イテレータを扱うための固有の関数は二つあります。

int PyIter_Check(PyObject *o)
    * 次に属します: Stable ABI (バージョン 3.8 より).*

   オブジェクト *o* を "PyIter_NextItem()" に安全に渡せる場合はゼロ以
   外を、そうでなければ "0" を返します。 この関数は常に成功します。

int PyAIter_Check(PyObject *o)
    * 次に属します: Stable ABI (バージョン 3.10 より).*

   オブジェクト *o* が "AsyncIterator" プロトコルを提供する場合はゼロ
   以外を、そうでなければ "0" を返します。 この関数は常に成功します。

   Added in version 3.10.

int PyIter_NextItem(PyObject *iter, PyObject **item)
    * 次に属します: Stable ABI (バージョン 3.14 より).*

   成功すると、*item* にイテレータ *iter* の次の値への *強参照* を設定
   し、"1" を返します。 残りの値がなければ、*item* に "NULL" を設定し
   、"0" を返します。 エラーの場合は、*item* に "NULL" を設定し、例外
   を設定して "-1" を返します。

   Added in version 3.14.

PyObject *PyIter_Next(PyObject *o)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   これは "PyIter_NextItem()" の古い版で、後方互換性のために残されてい
   ます。 "PyIter_NextItem()" を使ってください。

   イテレータ *o* から次の値を返します。 このオブジェクトは
   "PyIter_Check()" で判定されるイテレータでなければなりません (確認は
   呼び出し側の責任です)。 残りの値がなければ、例外を設定せずに "NULL"
   を返します。 要素の取得中にエラーが起きると、"NULL" を返して例外を
   引き継ぎます。

type PySendResult

   "PyIter_Send()" の各種の結果を表す列挙値です。

   Added in version 3.10.

PySendResult PyIter_Send(PyObject *iter, PyObject *arg, PyObject **presult)
    * 次に属します: Stable ABI (バージョン 3.10 より).*

   値 *arg* をイテレータ *iter* に送ります。 戻り値は次のとおりです:

   * イテレータが return した場合は "PYGEN_RETURN"。 戻り値は
     *presult* を通じて返します。

   * イテレータが yield した場合は "PYGEN_NEXT"。 yield した値は
     *presult* を通じて返します。

   * イテレータが例外を送出した場合は "PYGEN_ERROR"。 *presult* は
     "NULL" になります。

   Added in version 3.10.
