Stefan Behnel wrote at 2012-6-29 11:42 +0200: >Dieter Maurer, 29.06.2012 11:25: >> I have >> >> cdef extern from *: >> ctypedef char const_unsigned_char "const unsigned char" > >This is an incorrect declaration. "char" != "unsigned char".
You are right. I cheat to get "Cython" convert between "unsigned char*" and "bytes" in the same way as it does for "char *". For this conversion, there is no real difference between "char *" and "unsigned char *" (apart from a C level warning about a pointer of a bad type passed to "PyString_FromStringAndSize"). >> cdef const_unsigned_char *c_data = data >> >> leads to "Cannot convert Python object to 'const_unsigned_char *'" >> while "cdef char *c_data = data" works. >> >> Should the "ctypedef char const_unsigned_char" not ensure >> that "char" and "const_unsigned_char" are used as synonyms? > >I assume you are not using the latest Cython (0.17pre) from github, are >you? It should have a fix for this. You are right. I am using the "cython" version which comes with my operating system ("cython 0.13"). Very good, if the latest "Cython" behaves better :-) >Also note that libc.string contains declarations for "const char*" and friends. Unformatunately, I need "const unsigned char*" and "const xmlChar *" (where "xmlChar" is defined as "unsigned char"). I used the "libc.string" definitions as a blueprint for mine. -- Dieter _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel