[2] | 1 | .. highlightlang:: c
|
---|
| 2 |
|
---|
| 3 | .. _longobjects:
|
---|
| 4 |
|
---|
| 5 | Long Integer Objects
|
---|
| 6 | --------------------
|
---|
| 7 |
|
---|
| 8 | .. index:: object: long integer
|
---|
| 9 |
|
---|
| 10 |
|
---|
[391] | 11 | .. c:type:: PyLongObject
|
---|
[2] | 12 |
|
---|
[391] | 13 | This subtype of :c:type:`PyObject` represents a Python long integer object.
|
---|
[2] | 14 |
|
---|
| 15 |
|
---|
[391] | 16 | .. c:var:: PyTypeObject PyLong_Type
|
---|
[2] | 17 |
|
---|
| 18 | .. index:: single: LongType (in modules types)
|
---|
| 19 |
|
---|
[391] | 20 | This instance of :c:type:`PyTypeObject` represents the Python long integer type.
|
---|
[2] | 21 | This is the same object as ``long`` and ``types.LongType``.
|
---|
| 22 |
|
---|
| 23 |
|
---|
[391] | 24 | .. c:function:: int PyLong_Check(PyObject *p)
|
---|
[2] | 25 |
|
---|
[391] | 26 | Return true if its argument is a :c:type:`PyLongObject` or a subtype of
|
---|
| 27 | :c:type:`PyLongObject`.
|
---|
[2] | 28 |
|
---|
| 29 | .. versionchanged:: 2.2
|
---|
| 30 | Allowed subtypes to be accepted.
|
---|
| 31 |
|
---|
| 32 |
|
---|
[391] | 33 | .. c:function:: int PyLong_CheckExact(PyObject *p)
|
---|
[2] | 34 |
|
---|
[391] | 35 | Return true if its argument is a :c:type:`PyLongObject`, but not a subtype of
|
---|
| 36 | :c:type:`PyLongObject`.
|
---|
[2] | 37 |
|
---|
| 38 | .. versionadded:: 2.2
|
---|
| 39 |
|
---|
| 40 |
|
---|
[391] | 41 | .. c:function:: PyObject* PyLong_FromLong(long v)
|
---|
[2] | 42 |
|
---|
[391] | 43 | Return a new :c:type:`PyLongObject` object from *v*, or *NULL* on failure.
|
---|
[2] | 44 |
|
---|
| 45 |
|
---|
[391] | 46 | .. c:function:: PyObject* PyLong_FromUnsignedLong(unsigned long v)
|
---|
[2] | 47 |
|
---|
[391] | 48 | Return a new :c:type:`PyLongObject` object from a C :c:type:`unsigned long`, or
|
---|
[2] | 49 | *NULL* on failure.
|
---|
| 50 |
|
---|
| 51 |
|
---|
[391] | 52 | .. c:function:: PyObject* PyLong_FromSsize_t(Py_ssize_t v)
|
---|
[2] | 53 |
|
---|
[391] | 54 | Return a new :c:type:`PyLongObject` object from a C :c:type:`Py_ssize_t`, or
|
---|
[2] | 55 | *NULL* on failure.
|
---|
| 56 |
|
---|
| 57 | .. versionadded:: 2.6
|
---|
| 58 |
|
---|
| 59 |
|
---|
[391] | 60 | .. c:function:: PyObject* PyLong_FromSize_t(size_t v)
|
---|
[2] | 61 |
|
---|
[391] | 62 | Return a new :c:type:`PyLongObject` object from a C :c:type:`size_t`, or
|
---|
[2] | 63 | *NULL* on failure.
|
---|
| 64 |
|
---|
| 65 | .. versionadded:: 2.6
|
---|
| 66 |
|
---|
| 67 |
|
---|
[391] | 68 | .. c:function:: PyObject* PyLong_FromSsize_t(Py_ssize_t v)
|
---|
[2] | 69 |
|
---|
[391] | 70 | Return a new :c:type:`PyLongObject` object with a value of *v*, or *NULL*
|
---|
[2] | 71 | on failure.
|
---|
| 72 |
|
---|
[391] | 73 | .. versionadded:: 2.6
|
---|
[2] | 74 |
|
---|
| 75 |
|
---|
[391] | 76 | .. c:function:: PyObject* PyLong_FromSize_t(size_t v)
|
---|
| 77 |
|
---|
| 78 | Return a new :c:type:`PyLongObject` object with a value of *v*, or *NULL*
|
---|
| 79 | on failure.
|
---|
| 80 |
|
---|
| 81 | .. versionadded:: 2.6
|
---|
| 82 |
|
---|
| 83 |
|
---|
| 84 | .. c:function:: PyObject* PyLong_FromLongLong(PY_LONG_LONG v)
|
---|
| 85 |
|
---|
| 86 | Return a new :c:type:`PyLongObject` object from a C :c:type:`long long`, or *NULL*
|
---|
| 87 | on failure.
|
---|
| 88 |
|
---|
| 89 |
|
---|
| 90 | .. c:function:: PyObject* PyLong_FromUnsignedLongLong(unsigned PY_LONG_LONG v)
|
---|
| 91 |
|
---|
| 92 | Return a new :c:type:`PyLongObject` object from a C :c:type:`unsigned long long`,
|
---|
[2] | 93 | or *NULL* on failure.
|
---|
| 94 |
|
---|
| 95 |
|
---|
[391] | 96 | .. c:function:: PyObject* PyLong_FromDouble(double v)
|
---|
[2] | 97 |
|
---|
[391] | 98 | Return a new :c:type:`PyLongObject` object from the integer part of *v*, or
|
---|
[2] | 99 | *NULL* on failure.
|
---|
| 100 |
|
---|
| 101 |
|
---|
[391] | 102 | .. c:function:: PyObject* PyLong_FromString(char *str, char **pend, int base)
|
---|
[2] | 103 |
|
---|
[391] | 104 | Return a new :c:type:`PyLongObject` based on the string value in *str*, which is
|
---|
[2] | 105 | interpreted according to the radix in *base*. If *pend* is non-*NULL*,
|
---|
[391] | 106 | *\*pend* will point to the first character in *str* which follows the
|
---|
[2] | 107 | representation of the number. If *base* is ``0``, the radix will be determined
|
---|
| 108 | based on the leading characters of *str*: if *str* starts with ``'0x'`` or
|
---|
| 109 | ``'0X'``, radix 16 will be used; if *str* starts with ``'0'``, radix 8 will be
|
---|
| 110 | used; otherwise radix 10 will be used. If *base* is not ``0``, it must be
|
---|
| 111 | between ``2`` and ``36``, inclusive. Leading spaces are ignored. If there are
|
---|
| 112 | no digits, :exc:`ValueError` will be raised.
|
---|
| 113 |
|
---|
| 114 |
|
---|
[391] | 115 | .. c:function:: PyObject* PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)
|
---|
[2] | 116 |
|
---|
| 117 | Convert a sequence of Unicode digits to a Python long integer value. The first
|
---|
| 118 | parameter, *u*, points to the first character of the Unicode string, *length*
|
---|
| 119 | gives the number of characters, and *base* is the radix for the conversion. The
|
---|
| 120 | radix must be in the range [2, 36]; if it is out of range, :exc:`ValueError`
|
---|
| 121 | will be raised.
|
---|
| 122 |
|
---|
| 123 | .. versionadded:: 1.6
|
---|
| 124 |
|
---|
| 125 | .. versionchanged:: 2.5
|
---|
[391] | 126 | This function used an :c:type:`int` for *length*. This might require
|
---|
[2] | 127 | changes in your code for properly supporting 64-bit systems.
|
---|
| 128 |
|
---|
| 129 |
|
---|
[391] | 130 | .. c:function:: PyObject* PyLong_FromVoidPtr(void *p)
|
---|
[2] | 131 |
|
---|
| 132 | Create a Python integer or long integer from the pointer *p*. The pointer value
|
---|
[391] | 133 | can be retrieved from the resulting value using :c:func:`PyLong_AsVoidPtr`.
|
---|
[2] | 134 |
|
---|
| 135 | .. versionadded:: 1.5.2
|
---|
| 136 |
|
---|
| 137 | .. versionchanged:: 2.5
|
---|
| 138 | If the integer is larger than LONG_MAX, a positive long integer is returned.
|
---|
| 139 |
|
---|
| 140 |
|
---|
[391] | 141 | .. c:function:: long PyLong_AsLong(PyObject *pylong)
|
---|
[2] | 142 |
|
---|
| 143 | .. index::
|
---|
| 144 | single: LONG_MAX
|
---|
| 145 | single: OverflowError (built-in exception)
|
---|
| 146 |
|
---|
[391] | 147 | Return a C :c:type:`long` representation of the contents of *pylong*. If
|
---|
[2] | 148 | *pylong* is greater than :const:`LONG_MAX`, an :exc:`OverflowError` is raised
|
---|
| 149 | and ``-1`` will be returned.
|
---|
| 150 |
|
---|
| 151 |
|
---|
[391] | 152 | .. c:function:: long PyLong_AsLongAndOverflow(PyObject *pylong, int *overflow)
|
---|
[2] | 153 |
|
---|
[391] | 154 | Return a C :c:type:`long` representation of the contents of
|
---|
| 155 | *pylong*. If *pylong* is greater than :const:`LONG_MAX` or less
|
---|
| 156 | than :const:`LONG_MIN`, set *\*overflow* to ``1`` or ``-1``,
|
---|
| 157 | respectively, and return ``-1``; otherwise, set *\*overflow* to
|
---|
| 158 | ``0``. If any other exception occurs (for example a TypeError or
|
---|
| 159 | MemoryError), then ``-1`` will be returned and *\*overflow* will
|
---|
| 160 | be ``0``.
|
---|
| 161 |
|
---|
| 162 | .. versionadded:: 2.7
|
---|
| 163 |
|
---|
| 164 |
|
---|
| 165 | .. c:function:: PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *pylong, int *overflow)
|
---|
| 166 |
|
---|
| 167 | Return a C :c:type:`long long` representation of the contents of
|
---|
| 168 | *pylong*. If *pylong* is greater than :const:`PY_LLONG_MAX` or less
|
---|
| 169 | than :const:`PY_LLONG_MIN`, set *\*overflow* to ``1`` or ``-1``,
|
---|
| 170 | respectively, and return ``-1``; otherwise, set *\*overflow* to
|
---|
| 171 | ``0``. If any other exception occurs (for example a TypeError or
|
---|
| 172 | MemoryError), then ``-1`` will be returned and *\*overflow* will
|
---|
| 173 | be ``0``.
|
---|
| 174 |
|
---|
| 175 | .. versionadded:: 2.7
|
---|
| 176 |
|
---|
| 177 |
|
---|
| 178 | .. c:function:: Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)
|
---|
| 179 |
|
---|
[2] | 180 | .. index::
|
---|
| 181 | single: PY_SSIZE_T_MAX
|
---|
| 182 | single: OverflowError (built-in exception)
|
---|
| 183 |
|
---|
[391] | 184 | Return a C :c:type:`Py_ssize_t` representation of the contents of *pylong*. If
|
---|
[2] | 185 | *pylong* is greater than :const:`PY_SSIZE_T_MAX`, an :exc:`OverflowError` is raised
|
---|
| 186 | and ``-1`` will be returned.
|
---|
| 187 |
|
---|
| 188 | .. versionadded:: 2.6
|
---|
| 189 |
|
---|
| 190 |
|
---|
[391] | 191 | .. c:function:: unsigned long PyLong_AsUnsignedLong(PyObject *pylong)
|
---|
[2] | 192 |
|
---|
| 193 | .. index::
|
---|
| 194 | single: ULONG_MAX
|
---|
| 195 | single: OverflowError (built-in exception)
|
---|
| 196 |
|
---|
[391] | 197 | Return a C :c:type:`unsigned long` representation of the contents of *pylong*.
|
---|
[2] | 198 | If *pylong* is greater than :const:`ULONG_MAX`, an :exc:`OverflowError` is
|
---|
| 199 | raised.
|
---|
| 200 |
|
---|
| 201 |
|
---|
[391] | 202 | .. c:function:: Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)
|
---|
[2] | 203 |
|
---|
[391] | 204 | .. index::
|
---|
| 205 | single: PY_SSIZE_T_MAX
|
---|
[2] | 206 |
|
---|
[391] | 207 | Return a :c:type:`Py_ssize_t` representation of the contents of *pylong*. If
|
---|
| 208 | *pylong* is greater than :const:`PY_SSIZE_T_MAX`, an :exc:`OverflowError` is
|
---|
| 209 | raised.
|
---|
| 210 |
|
---|
| 211 | .. versionadded:: 2.6
|
---|
| 212 |
|
---|
| 213 |
|
---|
| 214 | .. c:function:: PY_LONG_LONG PyLong_AsLongLong(PyObject *pylong)
|
---|
| 215 |
|
---|
| 216 | .. index::
|
---|
| 217 | single: OverflowError (built-in exception)
|
---|
| 218 |
|
---|
| 219 | Return a C :c:type:`long long` from a Python long integer. If
|
---|
| 220 | *pylong* cannot be represented as a :c:type:`long long`, an
|
---|
| 221 | :exc:`OverflowError` is raised and ``-1`` is returned.
|
---|
| 222 |
|
---|
[2] | 223 | .. versionadded:: 2.2
|
---|
| 224 |
|
---|
| 225 |
|
---|
[391] | 226 | .. c:function:: unsigned PY_LONG_LONG PyLong_AsUnsignedLongLong(PyObject *pylong)
|
---|
[2] | 227 |
|
---|
[391] | 228 | .. index::
|
---|
| 229 | single: OverflowError (built-in exception)
|
---|
[2] | 230 |
|
---|
[391] | 231 | Return a C :c:type:`unsigned long long` from a Python long integer. If
|
---|
| 232 | *pylong* cannot be represented as an :c:type:`unsigned long long`, an
|
---|
| 233 | :exc:`OverflowError` is raised and ``(unsigned long long)-1`` is
|
---|
| 234 | returned.
|
---|
| 235 |
|
---|
[2] | 236 | .. versionadded:: 2.2
|
---|
| 237 |
|
---|
[391] | 238 | .. versionchanged:: 2.7
|
---|
| 239 | A negative *pylong* now raises :exc:`OverflowError`, not
|
---|
| 240 | :exc:`TypeError`.
|
---|
[2] | 241 |
|
---|
| 242 |
|
---|
[391] | 243 | .. c:function:: unsigned long PyLong_AsUnsignedLongMask(PyObject *io)
|
---|
| 244 |
|
---|
| 245 | Return a C :c:type:`unsigned long` from a Python long integer, without checking
|
---|
[2] | 246 | for overflow.
|
---|
| 247 |
|
---|
| 248 | .. versionadded:: 2.3
|
---|
| 249 |
|
---|
| 250 |
|
---|
[391] | 251 | .. c:function:: unsigned PY_LONG_LONG PyLong_AsUnsignedLongLongMask(PyObject *io)
|
---|
[2] | 252 |
|
---|
[391] | 253 | Return a C :c:type:`unsigned long long` from a Python long integer, without
|
---|
[2] | 254 | checking for overflow.
|
---|
| 255 |
|
---|
| 256 | .. versionadded:: 2.3
|
---|
| 257 |
|
---|
| 258 |
|
---|
[391] | 259 | .. c:function:: double PyLong_AsDouble(PyObject *pylong)
|
---|
[2] | 260 |
|
---|
[391] | 261 | Return a C :c:type:`double` representation of the contents of *pylong*. If
|
---|
| 262 | *pylong* cannot be approximately represented as a :c:type:`double`, an
|
---|
[2] | 263 | :exc:`OverflowError` exception is raised and ``-1.0`` will be returned.
|
---|
| 264 |
|
---|
| 265 |
|
---|
[391] | 266 | .. c:function:: void* PyLong_AsVoidPtr(PyObject *pylong)
|
---|
[2] | 267 |
|
---|
[391] | 268 | Convert a Python integer or long integer *pylong* to a C :c:type:`void` pointer.
|
---|
[2] | 269 | If *pylong* cannot be converted, an :exc:`OverflowError` will be raised. This
|
---|
[391] | 270 | is only assured to produce a usable :c:type:`void` pointer for values created
|
---|
| 271 | with :c:func:`PyLong_FromVoidPtr`.
|
---|
[2] | 272 |
|
---|
| 273 | .. versionadded:: 1.5.2
|
---|
| 274 |
|
---|
| 275 | .. versionchanged:: 2.5
|
---|
| 276 | For values outside 0..LONG_MAX, both signed and unsigned integers are accepted.
|
---|
| 277 |
|
---|
| 278 |
|
---|