長整数型オブジェクト (long integer object)
******************************************

PyLongObject

   この "PyObject" のサブタイプは長整数型を表現します。

PyTypeObject PyLong_Type

   この "PyTypeObject" のインスタンスは Python 長整数型を表現します。
   これは Python レイヤにおける "long" や "types.LongType" と同じオブ
   ジェクトです。

int PyLong_Check(PyObject *p)

   引数が "PyLongObject" か "PyLongObject" のサブタイプのときに真を返
   します。

   バージョン 2.2 で変更: サブタイプを引数にとれるようになりました.

int PyLong_CheckExact(PyObject *p)

   引数が "PyLongObject" 型で、かつ "PyLongObject" 型のサブタイプでな
   いときに真を返します。

   バージョン 2.2 で追加.

PyObject* PyLong_FromLong(long v)
    *Return value: New reference.*

   *v* から新たな "PyLongObject" オブジェクトを生成して返します。失敗
   のときには *NULL* を返します。

PyObject* PyLong_FromUnsignedLong(unsigned long v)
    *Return value: New reference.*

   Cの "unsigned long" から新たな "PyLongObject" オブジェクトを生成し
   て返します。失敗した際には *NULL* を返します。

PyObject* PyLong_FromSsize_t(Py_ssize_t v)
    *Return value: New reference.*

   C の "Py_ssize_t" 型から新たな "PyLongObject" オブジェクトを生成し
   て返します。 失敗のときには *NULL* を返します。

   バージョン 2.6 で追加.

PyObject* PyLong_FromSize_t(size_t v)
    *Return value: New reference.*

   C の "size_t" 型から新たな "PyLongObject" オブジェクトを生成して返
   します。 失敗のときには *NULL* を返します。

   バージョン 2.6 で追加.

PyObject* PyLong_FromLongLong(PY_LONG_LONG v)
    *Return value: New reference.*

   C の "long long" 型から新たな "PyLongObject" オブジェクトを生成して
   返します。失敗のときには *NULL* を返します。

PyObject* PyLong_FromUnsignedLongLong(unsigned PY_LONG_LONG v)
    *Return value: New reference.*

   C の "unsigned long long" 型から新たな "PyLongObject" オブジェクト
   を生成して返します。失敗のときには *NULL* を返します。

PyObject* PyLong_FromDouble(double v)
    *Return value: New reference.*

   *v* の整数部から新たな "PyLongObject" オブジェクトを生成して返しま
   す。失敗のときには *NULL* を返します。

PyObject* PyLong_FromString(char *str, char **pend, int base)
    *Return value: New reference.*

   *str* の文字列値に基づいて、新たな "PyLongObject" を返します。この
   とき *base* を基数として文字列を解釈します。 *pend* が *NULL* でな
   ければ、 **pend* は *str* 中で数が表現されている部分以後の先頭の文
   字のアドレスを指しています。 *base* が "0" ならば、 *str* の先頭の
   文字列に基づいて基数を決定します: もし *str* が "'0x'" または
   "'0X'" で始まっていれば、基数に 16 を使います; *str* が "'0'" で始
   まっていれば、基数に 8 を使います; その他の場合には基数に 10 を使い
   ます。 *base* が "0" でなければ、 *base* は "2" 以上 "36" 以下の数
   でなければなりません。先頭に空白がある場合は無視されます。数字が全
   くない場合、 "ValueError" が送出されます。

PyObject* PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)
    *Return value: New reference.*

   Unicode の数字配列を Python の長整数型に変換します。最初のパラメタ
   *u* は、 Unicode 文字列の最初の文字を指し、 *length* には文字数を指
   定し、 *base* には変換時の基数を指定します。基数は範囲 [2, 36] にな
   ければなりません; 範囲外の基数を指定すると、 "ValueError" を送出し
   ます。

   バージョン 1.6 で追加.

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

PyObject* PyLong_FromVoidPtr(void *p)
    *Return value: New reference.*

   ポインタ *p* から Python 整数値または長整数型を生成します。ポインタ
   の値は "PyLong_AsVoidPtr()" を適用した結果から取得できます。

   バージョン 1.5.2 で追加.

   バージョン 2.5 で変更: 整数値が LONG_MAX より大きい場合に、正の長整
   数を返すようになりました。

long PyLong_AsLong(PyObject *pylong)

   *pylong* の指す長整数値を、 C の "long" 型表現で返します。 *pylong*
   が "LONG_MAX" よりも大きい場合、 "OverflowError" を送出し、 "-1" を
   返します。

long PyLong_AsLongAndOverflow(PyObject *pylong, int *overflow)

   *pylong* の値を C の "long" 型表現で返します。 *pylong* が
   "LONG_MAX" より大きかったり "LONG_MIN" より小さい場合、 **overflow*
   に "1" か "-1" を設定して "-1" を返します。それ以外の場合は
   **overflow* に "0" を設定します。なにか例外が発生した場合は
   (TypeError や MemoryErrorなど)、 **overflow* は "0" で戻り値が "-1"
   になります。

   バージョン 2.7 で追加.

PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *pylong, int *overflow)

   *pylong* の値を C の "long long" 型表現で返します。 *pylong* が
   "PY_LLONG_MAX" より大きかったり "PY_LLONG_MIN" より小さい場合、
   **overflow* に "1" か "-1" を設定して "-1" を返します。それ以外の場
   合は **overflow* に "0" を設定します。なにか例外が発生した場合は
   (TypeError や MemoryErrorなど)、 **overflow* は "0" で戻り値が "-1"
   になります。

   バージョン 2.7 で追加.

Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)

   *pylong* の指す長整数値を、 C の "Py_ssize_t" 型表現で返します。
   *pylong* が "PY_SSIZE_T_MAX" よりも大きい場合、 "OverflowError" を
   送出し、 "-1" を返します。

   バージョン 2.6 で追加.

unsigned long PyLong_AsUnsignedLong(PyObject *pylong)

   *pylong* の指す長整数値を、 C の "unsigned long" 型表現で返します。
   *pylong* が "ULONG_MAX" よりも大きい場合、 "OverflowError" を送出し
   ます。

PY_LONG_LONG PyLong_AsLongLong(PyObject *pylong)

   *pylong* の指す長整数値を、 C の "long long" 型表現で返します。
   *pylong* が "long long" で表せない場合、 "OverflowError" を送出し
   "-1" を返します。

   バージョン 2.2 で追加.

unsigned PY_LONG_LONG PyLong_AsUnsignedLongLong(PyObject *pylong)

   *pylong* の指す長整数値を、 C の "unsigned long long" 型表現で返し
   ます。 *pylong* が "unsigned long long" で表せない場合、
   "OverflowError" を発生させて、 "(unsigned long long)-1" を返します
   。

   バージョン 2.2 で追加.

   バージョン 2.7 で変更: 負 *pylong* を指定した際に "TypeError" では
   なく、 "OverflowError" を送出するようになりました。

unsigned long PyLong_AsUnsignedLongMask(PyObject *io)

   Python 長整数値を、オーバフローチェックを行わずに C の "unsigned
   long" 型表現で返します。

   Returns "(unsigned long)-1" on error.  Use "PyErr_Occurred()" to
   disambiguate.

   バージョン 2.3 で追加.

unsigned PY_LONG_LONG PyLong_AsUnsignedLongLongMask(PyObject *io)

   Python 長整数値を、オーバフローチェックを行わずに C の "unsigned
   long long" 型表現で返します。

   Returns "(unsigned PY_LONG_LONG)-1" on error.  Use
   "PyErr_Occurred()" to disambiguate.

   バージョン 2.3 で追加.

double PyLong_AsDouble(PyObject *pylong)

   *pylong* の指す値を、 C の "double" 型表現で返します。 *pylong* が
   "double" を使って近似表現できない場合、 "OverflowError" 例外を送出
   して "-1.0" を返します。

void* PyLong_AsVoidPtr(PyObject *pylong)

   Python の整数型か長整数型を指す *pylong* を、 C の "void" ポインタ
   に変換します。 *pylong* を変換できなければ、 "OverflowError" を送出
   します。この関数は "PyLong_FromVoidPtr()" で値を生成するときに使う
   ような "void" ポインタ型を生成できるだけです。

   バージョン 1.5.2 で追加.

   バージョン 2.5 で変更: 値が 0..LONG_MAX の範囲外だった場合でも、符
   号付き整数と符号無し整数の両方とも利用可能になりました。
