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