Adds support for the C99 _Bool type to ctypes. Requires struct patch that has already been accepted in the python 2.6 train. Updates ctypes C extension, ctypes __init__.py, ctypes documentation and ctypes tests.
Thomas, can you take a look? I think this needs to take into account Python versions without bool support in the struct module, as the same ctypes code is used with older Python releases as well.
David, I encountered these issues with the patch: 1. a typo in Lib/ctypes/test/test_numbers.py: 'bool_type' should be 'bool_types' It is trivial to fix this. 2. ctypes/__init__.py should be cean for 'from ctypes import *', but with your patch it exposes the 'struct_error' symbol. I would recommend to change Modules/_ctypes/cfield.c so that a c_bool type can be created even if HAVE_C99_BOOL is undefined (I think you took that approach in your _Bool struct patch). Then, ctypes/__init__.py would not have to depend on the struct 't' typecode at all. The '_check_size(c_bool, "t")' check can probably be removed. 3. ctypes/test/test_repr.py does not work. Easy to fix this: just add c_bool to the list of types starting at line 5. These changes would also ensure compatibility with previous Python versions, with one exception: A check for the _Bool type must be added to Modules/ctypes/libffi/configure.in. To answer your question: No, it is not needed to prepare a patch relative to ctypes/trunk/ctypes. This repository contains svn:external properties for the 'source' and 'ctypes' directories that point into the 'release25-maint/Modules/_ctypes' and 'release25-maint/Lib/ctypes' directories from Python.
Thanks for the review, Thomas! I've attached a new patch that addresses the points you bring up (I hope) in the suggested manner. I have not tested it on 2.5, but tests pass on 2.6. File Added: c_bool patch against r53623.diff