Pillow/py3.h
Brian Crowell 9631d42b60 py3k: Use "y#" code in PyArg_ParseTuple where we expect byte data
This commit also renames some functions from "fromstring" and the like to
"frombytes". I'll probably need to come back later and update any
references to "string," here or in the docs.

I also noticed that encode allocates some data for certain codecs, but
never frees them. That would be a good bug to fix. I fixed the one where it
outright stole a pointer from Python.
2013-01-10 08:46:38 -06:00

52 lines
1.8 KiB
C

/*
Python3 definition file to consistently map the code to Python 2.6 or
Python 3.
PyInt and PyLong were merged into PyLong in Python 3, so all PyInt functions
are mapped to PyLong.
PyString, on the other hand, was split into PyBytes and PyUnicode. We map
both back onto PyString, so use PyBytes or PyUnicode where appropriate. The
only exception to this is _imagingft.c, where PyUnicode is left alone.
*/
#if PY_VERSION_HEX >= 0x03000000
#define PY_ARG_BYTES_LENGTH "y#"
/* Map PyInt -> PyLong */
#define PyInt_AsLong PyLong_AsLong
#define PyInt_Check PyLong_Check
#define PyInt_FromLong PyLong_FromLong
#define PyInt_AS_LONG PyLong_AS_LONG
#else /* PY_VERSION_HEX < 0x03000000 */
#define PY_ARG_BYTES_LENGTH "s#"
#if !defined(KEEP_PY_UNICODE)
/* Map PyUnicode -> PyString */
#undef PyUnicode_AsString
#undef PyUnicode_AS_STRING
#undef PyUnicode_Check
#undef PyUnicode_FromStringAndSize
#undef PyUnicode_FromString
#undef PyUnicode_FromFormat
#define PyUnicode_AsString PyString_AsString
#define PyUnicode_AS_STRING PyString_AS_STRING
#define PyUnicode_Check PyString_Check
#define PyUnicode_FromStringAndSize PyString_FromStringAndSize
#define PyUnicode_FromString PyString_FromString
#define PyUnicode_FromFormat PyString_FromFormat
#endif
/* Map PyBytes -> PyString */
#define PyBytes_AsString PyString_AsString
#define PyBytes_AS_STRING PyString_AS_STRING
#define PyBytes_Check PyString_Check
#define PyBytes_FromStringAndSize PyString_FromStringAndSize
#define PyBytes_FromString PyString_FromString
#define _PyBytes_Resize _PyString_Resize
#endif /* PY_VERSION_HEX < 0x03000000 */