# 長整数型オブジェクト (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` 型表現で返します。

  エラーが起きたときに `(unsigned long)-1` を返します。 見分けを付けるためには `PyErr_Occurred()` を使ってください。

  バージョン 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 の範囲外だった場合でも、符号付き整数と符号無し整数の両方とも利用可能になりました。