summaryrefslogtreecommitdiffstats
path: root/Doc/c-api
diff options
context:
space:
mode:
authorMark Dickinson <mdickinson@enthought.com>2012-06-23 09:49:12 (GMT)
committerMark Dickinson <mdickinson@enthought.com>2012-06-23 09:49:12 (GMT)
commit0a22924d52fd3b57d214f64f6f16e4d7fc111888 (patch)
treeafee4e404f04afbc50a4c57fd5ea383aaf0c4225 /Doc/c-api
parent9b0c006eb0fa1c8b2514067fdcf6350a45722417 (diff)
downloadcpython-0a22924d52fd3b57d214f64f6f16e4d7fc111888.zip
cpython-0a22924d52fd3b57d214f64f6f16e4d7fc111888.tar.gz
cpython-0a22924d52fd3b57d214f64f6f16e4d7fc111888.tar.bz2
Issue #12965: Clean up C-API docs for PyLong_AsLong(AndOverflow); clarify that __int__ will be called for non-PyLongs
Diffstat (limited to 'Doc/c-api')
-rw-r--r--Doc/c-api/long.rst29
1 files changed, 16 insertions, 13 deletions
diff --git a/Doc/c-api/long.rst b/Doc/c-api/long.rst
index b2295e0..526a87d 100644
--- a/Doc/c-api/long.rst
+++ b/Doc/c-api/long.rst
@@ -108,26 +108,29 @@ All integers are implemented as "long" integer objects of arbitrary size.
.. XXX alias PyLong_AS_LONG (for now)
-.. c:function:: long PyLong_AsLong(PyObject *pylong)
+.. c:function:: long PyLong_AsLong(PyObject *obj)
.. index::
single: LONG_MAX
single: OverflowError (built-in exception)
- Return a C :c:type:`long` representation of the contents of *pylong*. If
- *pylong* is greater than :const:`LONG_MAX`, raise an :exc:`OverflowError`,
- and return -1. Convert non-long objects automatically to long first,
- and return -1 if that raises exceptions.
+ Return a C :c:type:`long` representation of *obj*. If *obj* is not an
+ instance of :c:type:`PyLongObject`, first call its :meth:`__int__` method
+ (if present) to convert it to a :c:type:`PyLongObject`.
-.. c:function:: long PyLong_AsLongAndOverflow(PyObject *pylong, int *overflow)
+ Raise :exc:`OverflowError` if the value of *obj* is out of range for a
+ :c:type:`long`.
- Return a C :c:type:`long` representation of the contents of
- *pylong*. If *pylong* is greater than :const:`LONG_MAX` or less
- than :const:`LONG_MIN`, set *\*overflow* to ``1`` or ``-1``,
- respectively, and return ``-1``; otherwise, set *\*overflow* to
- ``0``. If any other exception occurs (for example a TypeError or
- MemoryError), then ``-1`` will be returned and *\*overflow* will
- be ``0``.
+.. c:function:: long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)
+
+ Return a C :c:type:`long` representation of *obj*. If *obj* is not an
+ instance of :c:type:`PyLongObject`, first call its :meth:`__int__` method
+ (if present) to convert it to a :c:type:`PyLongObject`.
+
+ If the value of *obj* is greater than :const:`LONG_MAX` or less than
+ :const:`LONG_MIN`, set *\*overflow* to ``1`` or ``-1``, respectively, and
+ return ``-1``; otherwise, set *\*overflow* to ``0``. If any other exception
+ occurs set *\*overflow* to ``0`` and return ``-1`` as usual.
.. c:function:: PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *pylong, int *overflow)