Converting None to NULL using ndpointer
Hello, I am trying to use a C library function from Python using numpy and ctypes. Assume the function has the signature void foo(int* bar) so it usually takes an integer array as a parameter. In python, I define foo.argtypes=[ndpointer(dtype="intc",flags="C_CONTIGUOUS")] and can then call the function foo(x), where x is an appropriate ndarray. This works very well. The problem is that I need to be able to call the function foo with a NULL pointer as an argument. Ideally, I would like to be able to use foo(None), but that doesn't work because the argument conversion throws a TypeError. Therefore my questions: 1. Is there a ndarray that is converted to NULL by ndpointer? I was hoping that maybe ndarray(None) or an array of size 0 would work, but they don't. 2. Is there a way to tell ndpointer that None is an acceptable parameter, which should be converted to NULL? 3. I could also change the argument specification in python to foo.argtypes=[POINTER(c_int)], but then I would lose the type checking features of ndpointer. Can I invoke the ndpointer conversion manually? For example, does a ndpointer object have a method that takes a ndarray as an argument and returns a POINTER(c_int) if appropriate? Any suggestions would be much appreciated. Thanks, Lutz
participants (1)
-
Lutz Maibaum