diff options
author | Stefan Behnel <stefan_ml@behnel.de> | 2012-04-14 16:50:55 +0200 |
---|---|---|
committer | Stefan Behnel <stefan_ml@behnel.de> | 2012-04-14 16:50:55 +0200 |
commit | ec0ce7d3cc4e2ede6fdb9f3145ae5f2089607e36 (patch) | |
tree | 2a9202e0d91bd9666fed2f9ff305a123f07418d5 /Cython/Utility/ModuleSetupCode.c | |
parent | 4b6bd728add95a652d3a6fe6fa1d858e19dc29d8 (diff) | |
download | cython-ec0ce7d3cc4e2ede6fdb9f3145ae5f2089607e36.tar.gz |
reimplement unicode character iteration for PEP393 (Py3.3+)
Diffstat (limited to 'Cython/Utility/ModuleSetupCode.c')
-rw-r--r-- | Cython/Utility/ModuleSetupCode.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/Cython/Utility/ModuleSetupCode.c b/Cython/Utility/ModuleSetupCode.c index 6a69fdf94..045ea58ca 100644 --- a/Cython/Utility/ModuleSetupCode.c +++ b/Cython/Utility/ModuleSetupCode.c @@ -116,15 +116,22 @@ #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif -/* new Py3.3 unicode representation (PEP 393) */ -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_GET_LENGTH) +/* new Py3.3 unicode type (PEP 393) */ +#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #else #define CYTHON_PEP393_ENABLED 0 - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_KIND(u) (0) /* PyUnicode_WCHAR_KIND */ + #define __Pyx_PyUnicode_DATA(u) PyUnicode_AS_UNICODE(u) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + /* (k=k) => avoid unused variable warning due to macro: */ + #define __Pyx_PyUnicode_READ(k, d, i) ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #endif #if PY_MAJOR_VERSION >= 3 |