Commit 4008ef0f authored by Benjamin Peterson's avatar Benjamin Peterson

clarify a few things

parent e6896050
...@@ -45,7 +45,7 @@ Python 3.0's :func:`str` (``PyString_*`` functions in C) type is equivalent to ...@@ -45,7 +45,7 @@ Python 3.0's :func:`str` (``PyString_*`` functions in C) type is equivalent to
2.x's :func:`unicode` (``PyUnicode_*``). The old 8-bit string type has become 2.x's :func:`unicode` (``PyUnicode_*``). The old 8-bit string type has become
:func:`bytes`. Python 2.6 and later provide a compatibility header, :func:`bytes`. Python 2.6 and later provide a compatibility header,
:file:`bytesobject.h`, mapping ``PyBytes`` names to ``PyString`` ones. For best :file:`bytesobject.h`, mapping ``PyBytes`` names to ``PyString`` ones. For best
interpolation with 3.0, :ctype:`PyUnicode` should be used for textual data and compatibility with 3.0, :ctype:`PyUnicode` should be used for textual data and
:ctype:`PyBytes` for binary data. It's also important to remember that :ctype:`PyBytes` for binary data. It's also important to remember that
:ctype:`PyBytes` and :ctype:`PyUnicode` in 3.0 are not interchangeable like :ctype:`PyBytes` and :ctype:`PyUnicode` in 3.0 are not interchangeable like
:ctype:`PyString` and :ctype:`PyString` are in 2.x. The following example shows :ctype:`PyString` and :ctype:`PyString` are in 2.x. The following example shows
...@@ -68,6 +68,7 @@ best practices with regards to :ctype:`PyUnicode`, :ctype:`PyString`, and ...@@ -68,6 +68,7 @@ best practices with regards to :ctype:`PyUnicode`, :ctype:`PyString`, and
return result; return result;
} }
/* just a forward */
static char * do_encode(PyObject *); static char * do_encode(PyObject *);
/* bytes example */ /* bytes example */
...@@ -94,14 +95,12 @@ long/int Unification ...@@ -94,14 +95,12 @@ long/int Unification
In Python 3.0, there is only one integer type. It is called :func:`int` on the In Python 3.0, there is only one integer type. It is called :func:`int` on the
Python level, but actually corresponds to 2.x's :func:`long` type. In the Python level, but actually corresponds to 2.x's :func:`long` type. In the
C-API, ``PyInt_*`` functions are replaced by their ``PyLong_*`` neighbors. The C-API, ``PyInt_*`` functions are replaced by their ``PyLong_*`` neighbors. The
best course of action here is probably aliasing ``PyInt_*`` functions to best course of action here is using the ``PyInt_*`` functions aliased to
``PyLong_*`` variants or using the abstract ``PyNumber_*`` APIs. :: ``PyLong_*`` found in :file:`intobject.h`. The the abstract ``PyNumber_*`` APIs
can also be used in some cases. ::
#include "Python.h" #include "Python.h"
#include "intobject.h"
#if PY_MAJOR_VERSION >= 3
#define PyInt_FromLong PyLong_FromLong
#endif
static PyObject * static PyObject *
add_ints(PyObject *self, PyObject *args) { add_ints(PyObject *self, PyObject *args) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment