[Cython] char* and NULL in log statements

Johannes Wienke languitar at semipol.de
Wed Jun 4 23:42:37 CEST 2008


Hi,

Am 06/04/2008 11:36 PM schrieb Dag Sverre Seljebotn:
> Johannes Wienke wrote:
>> Hi,
>>
>> Am 06/04/2008 09:54 PM schrieb Stefan Behnel:
>>> Johannes Wienke wrote:
>>>> Am 06/04/2008 07:47 PM schrieb Stefan Behnel:
>>>>
>>>> To my mind only char pointers would need this extra behavior as they
>>>> have a somewhat special role in C because of the absence a string type.
>>> Then why None and not ''? And why None and not a ValueError?
>> Because None has for python the same meaning as NULL in C. ValueError
>> would be another possibility. Nevertheless if NULL can be a legal value
>> for the rest of that function, this would be as awkward to handle as the
>> explicit check for NULL if I only want a safe print statement.
 >
> char* is usually used to call into legacy C code, if you need to print 
> them I'd argue that in most cases you are converting to char* one step 
> too early. But if you really need to print char* directly,

Well but for my purposes the legacy code calls into cython.

> print "%s ... %s" % (cb2str(a), cb2str(b))

What is that function? I have never seen that before?

Conversion problems are of course a much better reason not to implement 
this than speed reasons.

[...]

> However, Cython cannot be Java because C is not Java. It will always be 
> possible to do (<int*>0)[0] and segfault; that's part of the deal when 
> writing C.

That's true. But that's a much more obvious bug.

> Cython can very well work safely; simply use Python strings!; avoid all 
> pointers, etc. Java doesn't have a char* either. The Cython equivalent 
> to java.lang.String is a Python str, not a char*!

But I can't, because the pugins I have to wrap work in C and there may 
be other situations where an existing C API requires callbacks and so on.

- Johannes

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 260 bytes
Desc: OpenPGP digital signature
Url : http://codespeak.net/pipermail/cython-dev/attachments/20080604/d66957fb/attachment.pgp 


More information about the Cython-dev mailing list