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

PyTypeObject `PySlice_Type`
  スライスオブジェクトの型オブジェクトです。 `types.SliceType` と同じです。

int `PySlice_Check`( | PyObject *ob)

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

PyObject* `PySlice_New`( | PyObject *start, PyObject *stop, PyObject *step)

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

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

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

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

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

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

  `PySlice_GetIndices` の置き換えとして使える関数です。

  スライスオブジェクト slice における start, stop, および step のインデクス値を取得します。このとき配列の 長さを length と仮定します。スライスの長さを slicelength に記憶します。境界をはみだしたインデクスは、通常のスライスを扱うのと 同じ一貫したやり方でクリップされます。

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

  バージョン2.3 以降で新規追加された 仕様です。