スライスオブジェクト (slice object)
***********************************

PyTypeObject PySlice_Type

   スライスオブジェクトの型オブジェクトです。 "slice" や
   "types.SliceType" と同じです。

int PySlice_Check(PyObject *ob)

   *ob* がスライスオブジェクトの場合に真を返します; *ob* は *NULL* で
   あってはなりません。

PyObject* PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
    *Return value: New reference.*

   指定した値から新たなスライスオブジェクトを返します。パラメタ
   *start*, *stop*, および *step* はスライスオブジェクトにおける同名の
   属性として用いられます。これらの値はいずれも *NULL* にでき、対応す
   る値には "None" が使われます。新たなオブジェクトをアロケーションで
   きない場合には *NULL* を返します。

int PySlice_GetIndices(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)

   スライスオブジェクト *slice* における *start*, *stop*, および
   *step* のインデクス値を取得します。このときシーケンスの長さを
   *length* と仮定します。*length* よりも大きなインデクスになるとエラ
   ーとして扱います。

   成功のときには "0" を、エラーのときには例外をセットせずに "-1" を返
   します (ただし、指定インデクスのいずれか一つが "None" ではなく、か
   つ整数に変換できなかった場合を除きます。この場合、 "-1" を返して例
   外をセットします)。

   おそらくこの関数を使う気にはならないでしょう。バージョン 2.3 以前の
   Python でスライスオブジェクトを使いたいのなら、
   "PySlice_GetIndicesEx()" のソースを適切に名前変更して自分の拡張モジ
   ュールのソースコード内に組み込むとよいでしょう。

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

int PySlice_GetIndicesEx(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)

   "PySlice_GetIndices()" の便利な代替です。  *slice* における、
   *start*,  *stop* および *step* のインデクス値を取得をします。シーケ
   ンスの長さを *length* 、スライスの長さを *slicelength* に格納します
   。境界外のインデクスは通常のスライスと一貫した方法でクリップされま
   す。

   成功のときには "0" を、エラーのときには例外をセットして "-1" を返し
   ます。

   バージョン 2.3 で追加.

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


Ellipsis オブジェクト
*********************

PyObject *Py_Ellipsis

   Python における "Ellipsis" オブジェクトです。 このオブジェクトはメ
   ソッドを持ちません。 参照カウントの点では、他のオブジェクトと同様に
   扱う必要があります。 "Py_None" のように、これもシングルトンオブジェ
   クトです。
