[EMAIL PROTECTED] schrieb: >> It says: >> >> NULL pointers have a False boolean value: >> >>> null_ptr = POINTER(c_int)() >> >>> print bool(null_ptr) >> False > > Yes. > >> That means that NULL pointers are considered False in a boolean >> expression (and you could assume that non-NULL pointers are True, as >> any other object in general), > > I see this now that you show the clueless newbie me, yes thank you. > Except now by showing me here we have provoked the authority Thomas > Heller to say: > >> > > Generally pointer instances have a False boolean value, so >> > > 'if pv: ....' >> > > should work. Except for c_void_p, c_char_p and c_wchar_p instances. > > That English I do not understand. "Except" how?
Actually I was wrong - there is no exception. To summarize: All ctypes NULL pointers have a False boolean value. So, this C-code: if (pv) { /* or 'if (pv != NULL)' */ return *pv; /* whatever */ } else { /* handle NULL pointer */ } translates to this Python code: if pv: return pv[0] # or whatever else: # pv is a NULL pointer Works for instances of c_char_p, c_void_p, c_wchar_p, and instances of POINTER(some_ctype). If you want to make the 'if pv:' line more verbose, you could as well write 'if bool(pv):' or 'if bool(pv) == False', but why would you want to do this? Thomas -- http://mail.python.org/mailman/listinfo/python-list