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

PyTypeObject PySlice_Type
    * 次に属します: Stable ABI.*

   スライスオブジェクトの型オブジェクトです。これは、Pythonレイヤにお
   ける "slice" と同じオブジェクトです。

int PySlice_Check(PyObject *ob)

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

PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   Return a new slice object with the given values.  The *start*,
   *stop*, and *step* parameters are used as the values of the slice
   object attributes of the same names.  Any of the values may be
   "NULL", in which case the "None" will be used for the corresponding
   attribute.

   Return "NULL" with an exception set if the new object could not be
   allocated.

int PySlice_GetIndices(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
    * 次に属します: Stable ABI.*

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

   Returns "0" on success and "-1" on error with no exception set
   (unless one of the indices was not "None" and failed to be
   converted to an integer, in which case "-1" is returned with an
   exception set).

   おそらく、あなたはこの関数を使いたくないでしょう。

   バージョン 3.2 で変更: 以前は、*slice* 引数の型は "PySliceObject*"
   でした。

int PySlice_GetIndicesEx(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)
    * 次に属します: Stable ABI.*

   Usable replacement for "PySlice_GetIndices()".  Retrieve the start,
   stop, and step indices from the slice object *slice* assuming a
   sequence of length *length*, and store the length of the slice in
   *slicelength*.  Out of bounds indices are clipped in a manner
   consistent with the handling of normal slices. *length* must not be
   negative.

   Return "0" on success and "-1" on error with an exception set.

   注釈:

     This function is considered not safe for resizable sequences. Its
     invocation should be replaced by a combination of
     "PySlice_Unpack()" and "PySlice_AdjustIndices()" where

        if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) {
            // return error
        }

     is replaced by

        if (PySlice_Unpack(slice, &start, &stop, &step) < 0) {
            // return error
        }
        slicelength = PySlice_AdjustIndices(length, &start, &stop, step);

   バージョン 3.2 で変更: 以前は、*slice* 引数の型は "PySliceObject*"
   でした。

   バージョン 3.6.1 で変更: If "Py_LIMITED_API" is not set or set to
   the value between "0x03050400" and "0x03060000" (not including) or
   "0x03060100" or higher "PySlice_GetIndicesEx()" is implemented as a
   macro using "PySlice_Unpack()" and "PySlice_AdjustIndices()".
   Arguments *start*, *stop* and *step* are evaluated more than once.

   バージョン 3.6.1 で非推奨: If "Py_LIMITED_API" is set to the value
   less than "0x03050400" or between "0x03060000" and "0x03060100"
   (not including) "PySlice_GetIndicesEx()" is a deprecated function.

int PySlice_Unpack(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
    * 次に属します: Stable ABI (バージョン 3.7 より).*

   Extract the start, stop and step data members from a slice object
   as C integers.  Silently reduce values larger than "PY_SSIZE_T_MAX"
   to "PY_SSIZE_T_MAX", silently boost the start and stop values less
   than "PY_SSIZE_T_MIN" to "PY_SSIZE_T_MIN", and silently boost the
   step values less than "-PY_SSIZE_T_MAX" to "-PY_SSIZE_T_MAX".

   Return "-1" with an exception set on error, "0" on success.

   Added in version 3.6.1.

Py_ssize_t PySlice_AdjustIndices(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)
    * 次に属します: Stable ABI (バージョン 3.7 より).*

   Adjust start/end slice indices assuming a sequence of the specified
   length. Out of bounds indices are clipped in a manner consistent
   with the handling of normal slices.

   *length* must not be negative. *step* must not be zero and must not
   be less than "-PY_SSIZE_T_MAX", as guaranteed by
   "PySlice_Unpack()".

   Return the length of the slice.  Always successful.  Doesn't call
   Python code.

   Added in version 3.6.1.


Ellipsis オブジェクト
=====================

PyTypeObject PyEllipsis_Type
    * 次に属します: Stable ABI.*

   The type of Python "Ellipsis" object.  Same as "types.EllipsisType"
   in the Python layer.

PyObject *Py_Ellipsis

   Python の "Ellipsis" オブジェクト。このオブジェクトにはメソッドがあ
   りません。 "Py_None" と同様、これは *immortal* でシングルトンなオブ
   ジェクトです。

   バージョン 3.12 で変更: "Py_Ellipsis" は immortal です。
