summaryrefslogtreecommitdiff
path: root/Cython/Utility/ModuleSetupCode.c
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2012-04-14 16:50:55 +0200
committerStefan Behnel <stefan_ml@behnel.de>2012-04-14 16:50:55 +0200
commitec0ce7d3cc4e2ede6fdb9f3145ae5f2089607e36 (patch)
tree2a9202e0d91bd9666fed2f9ff305a123f07418d5 /Cython/Utility/ModuleSetupCode.c
parent4b6bd728add95a652d3a6fe6fa1d858e19dc29d8 (diff)
downloadcython-ec0ce7d3cc4e2ede6fdb9f3145ae5f2089607e36.tar.gz
reimplement unicode character iteration for PEP393 (Py3.3+)
Diffstat (limited to 'Cython/Utility/ModuleSetupCode.c')
-rw-r--r--Cython/Utility/ModuleSetupCode.c15
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