整数型オブジェクト (integer object)¶
すべての整数は任意の長さをもつ "long" 整数として実装されます。
エラーが起きると、ほとんどの PyLong_As* API は (return type)-1 を返しますが、これは数値と見分けが付きません。
見分けを付けるためには PyErr_Occurred() を使ってください。
- 
PyTypeObject PyLong_Type¶
- この - PyTypeObjectのインスタンスは Python 整数型を表現します。これは Python レイヤにおける- intと同じオブジェクトです。
- 
int PyLong_Check(PyObject *p)¶
- 引数が - PyLongObjectか- PyLongObjectのサブタイプのときに真を返します。
- 
int PyLong_CheckExact(PyObject *p)¶
- 引数が - PyLongObject型で、かつ- PyLongObject型のサブタイプでないときに真を返します。
- 
PyObject* PyLong_FromLong(long v)¶
- Return value: New reference.v から新たな PyLongObjectオブジェクトを生成して返します。失敗のときにはNULLを返します。現在の実装では、 -5から256までの全ての整数に対する整数オブジェクトの配列を保持するようにしており、この範囲の数を生成すると、実際には既存のオブジェクトに対する参照が返るようになっています。従って、1の値を変えることすら可能です。変えてしまった場合の Python の挙動は未定義です :-)
- 
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を返します。
- 
PyObject* PyLong_FromSize_t(size_t v)¶
- Return value: New reference.C の size_t型から新たなPyLongObjectオブジェクトを生成して返します。 失敗のときにはNULLを返します。
- 
PyObject* PyLong_FromLongLong(long long v)¶
- Return value: New reference.C の long long型から新たなPyLongObjectオブジェクトを生成して返します。失敗のときにはNULLを返します。
- 
PyObject* PyLong_FromUnsignedLongLong(unsigned 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(const char *str, char **pend, int base)¶
- Return value: New reference.str の文字列値に基づいて、新たな PyLongObjectを返します。 このとき base を基数として文字列を解釈します。 pend がNULLでない場合は、 *pend は str 中で数が表現されている部分以降の先頭文字のアドレスを指しています。 base が0の場合は、 str は 整数リテラル の定義を使って解釈されます; この場合では、先頭に 0 がある 0 でない十進数はValueErrorを送出します。 base が0でなければ、 base は2以上36以下の数でなければなりません。 先頭の空白、基数の指定の後や数字の間にある単一のアンダースコアは無視されます。 数字が全くない場合、ValueErrorが送出されます。
- 
PyObject* PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)¶
- Return value: New reference.Convert a sequence of Unicode digits to a Python integer value. Deprecated since version 3.3, will be removed in version 3.10: 古いスタイルの Py_UNICODEAPIの一部です;PyLong_FromUnicodeObject()を使用するように移行してください。
- 
PyObject* PyLong_FromUnicodeObject(PyObject *u, int base)¶
- Return value: New reference.Convert a sequence of Unicode digits in the string u to a Python integer value. バージョン 3.3 で追加. 
- 
PyObject* PyLong_FromVoidPtr(void *p)¶
- Return value: New reference.ポインタ p から Python 整数値を生成します。ポインタの値は PyLong_AsVoidPtr()を適用した結果から取得されます。
- 
long PyLong_AsLong(PyObject *obj)¶
- obj が表す、Cの - long表現を返します。もし obj が- PyLongObjectのインスタンスでなければ、まず、その- __index__()メソッドあるいは- __int__()メソッドを (もしあれば) 呼び出して、オブジェクトを- PyLongObjectに変換します。- もし obj の値が - longの範囲外であれば、- OverflowErrorを送出します。- エラーが起きたときに - -1を返します。 見分けを付けるためには- PyErr_Occurred()を使ってください。- バージョン 3.8 で変更: 可能であれば - __index__()を使うようになりました。- バージョン 3.8 で非推奨: - __int__()の使用は非推奨です。
- 
long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)¶
- obj が表す、Cの - long表現を返します。もし obj が- PyLongObjectのインスタンスでなければ、まず、その- __index__()メソッドあるいは- __int__()メソッドを (もしあれば) 呼び出して、オブジェクトを- PyLongObjectに変換します。- もし、 obj の値が - LONG_MAXより大きいか、- LONG_MINより小さければ、 *overflow は、それぞれ- 1か- -1に設定され、- -1を返します; さもなければ *overflow は- 0に設定されます。もし、ほかの例外が発生した場合は *overflow が- 0に設定され- -1を返します。- エラーが起きたときに - -1を返します。 見分けを付けるためには- PyErr_Occurred()を使ってください。- バージョン 3.8 で変更: 可能であれば - __index__()を使うようになりました。- バージョン 3.8 で非推奨: - __int__()の使用は非推奨です。
- 
long long PyLong_AsLongLong(PyObject *obj)¶
- obj が表す、Cの - long long表現を返します。 もし obj が- PyLongObjectのインスタンスでなければ、まず、その- __index__()メソッドあるいは- __int__()メソッドを (もしあれば) 呼び出して、オブジェクトを- PyLongObjectに変換します。- もし obj の値が - long longの範囲外であれば、- OverflowErrorを送出します。- エラーが起きたときに - -1を返します。 見分けを付けるためには- PyErr_Occurred()を使ってください。- バージョン 3.8 で変更: 可能であれば - __index__()を使うようになりました。- バージョン 3.8 で非推奨: - __int__()の使用は非推奨です。
- 
long long PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow)¶
- obj が表す、Cの - long long表現を返します。 もし obj が- PyLongObjectのインスタンスでなければ、まず、その- __index__()メソッドあるいは- __int__()メソッドを (もしあれば) 呼び出して、オブジェクトを- PyLongObjectに変換します。- もし、 obj の値が - PY_LLONG_MAXより大きいか、- PY_LLONG_MINより小さければ、 *overflow は、それぞれ- 1か- -1に設定され、- -1を返します; さもなければ *overflow は- 0に設定されます。もし、ほかの例外が発生した場合は *overflow が- 0に設定され- -1を返します。- エラーが起きたときに - -1を返します。 見分けを付けるためには- PyErr_Occurred()を使ってください。- バージョン 3.2 で追加. - バージョン 3.8 で変更: 可能であれば - __index__()を使うようになりました。- バージョン 3.8 で非推奨: - __int__()の使用は非推奨です。
- 
Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)¶
- pylong を表す C の - Py_ssize_tを返します。 pylong は- PyLongObjectのインスタンスでなければなりません。- もし pylong の値が - Py_ssize_tの範囲外であれば、- OverflowErrorを送出します。- エラーが起きたときに - -1を返します。 見分けを付けるためには- PyErr_Occurred()を使ってください。
- 
unsigned long PyLong_AsUnsignedLong(PyObject *pylong)¶
- pylong を表す C の - unsigned longを返します。 pylong は- PyLongObjectのインスタンスでなければなりません。- もし pylong の値が - unsigned longの範囲外であれば、- OverflowErrorを送出します。- エラーが起きたときに - (unsigned long)-1を返します。 見分けを付けるためには- PyErr_Occurred()を使ってください。
- 
size_t PyLong_AsSize_t(PyObject *pylong)¶
- pylong を表す C の - size_tを返します。 pylong は- PyLongObjectのインスタンスでなければなりません。- もし pylong の値が - size_tの範囲外であれば、- OverflowErrorを送出します。- エラーが起きたときに - (size_t)-1を返します。 見分けを付けるためには- PyErr_Occurred()を使ってください。
- 
unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong)¶
- pylong を表す C の - unsigned long longを返します。 pylong は- PyLongObjectのインスタンスでなければなりません。- もし pylong の値が - unsigned long longの範囲外であれば、- OverflowErrorを送出します。- エラーが起きたときに - (unsigned long long)-1を返します。 見分けを付けるためには- PyErr_Occurred()を使ってください。- バージョン 3.1 で変更: 負 pylong を指定した際に - TypeErrorではなく、- OverflowErrorを送出するようになりました。
- 
unsigned long PyLong_AsUnsignedLongMask(PyObject *obj)¶
- obj が表す、Cの - unsigned long表現を返します。 もし obj が- PyLongObjectのインスタンスでなければ、まず、その- __index__()メソッドあるいは- __int__()メソッドを (もしあれば) 呼び出して、オブジェクトを- PyLongObjectに変換します。- obj の値が - unsigned longの範囲から外れていた場合は、- ULONG_MAX + 1を法とした剰余を返します。- エラーが起きたときに - (unsigned long)-1を返します。 見分けを付けるためには- PyErr_Occurred()を使ってください。- バージョン 3.8 で変更: 可能であれば - __index__()を使うようになりました。- バージョン 3.8 で非推奨: - __int__()の使用は非推奨です。
- 
unsigned long long PyLong_AsUnsignedLongLongMask(PyObject *obj)¶
- obj が表す、Cの - unsigned long long表現を返します。 もし obj が- PyLongObjectのインスタンスでなければ、まず、その- __index__()メソッドあるいは- __int__()メソッドを (もしあれば) 呼び出して、オブジェクトを- PyLongObjectに変換します。- obj の値が - unsigned long longの範囲から外れていた場合は、- PY_ULLONG_MAX + 1を法とした剰余を返します。- エラーが起きたときに - (unsigned long long)-1を返します。 見分けを付けるためには- PyErr_Occurred()を使ってください。- バージョン 3.8 で変更: 可能であれば - __index__()を使うようになりました。- バージョン 3.8 で非推奨: - __int__()の使用は非推奨です。
- 
double PyLong_AsDouble(PyObject *pylong)¶
- pylong を表す C の - doubleを返します。 pylong は- PyLongObjectのインスタンスでなければなりません。- もし pylong の値が - doubleの範囲外であれば、- OverflowErrorを送出します。- エラーが起きたときに - -1.0を返します。 見分けを付けるためには- PyErr_Occurred()を使ってください。
- 
void* PyLong_AsVoidPtr(PyObject *pylong)¶
- Python の整数型を指す pylong を、 C の - voidポインタに変換します。 pylong を変換できなければ、- OverflowErrorを送出します。この関数は- PyLong_FromVoidPtr()で値を生成するときに使うような- voidポインタ型を生成できるだけです。- エラーが起きたときに - NULLを返します。 見分けを付けるためには- PyErr_Occurred()を使ってください。