classification
Title: Adding support for _Bool to ctypes as c_bool
Type: Stage:
Components: Extension Modules Versions: Python 2.6
process
Status: closed Resolution: accepted
Dependencies: Superseder:
Assigned To: theller Nosy List: chmod007, loewis, theller
Priority: normal Keywords: patch

Created on 2007-01-31 21:04 by chmod007, last changed 2007-03-13 20:45 by theller. This issue is now closed.

Files
File name Uploaded Description Edit
c_bool patch against r53606.diff chmod007, 2007-01-31 21:04 Patch relative to revision 53606
c_bool patch against r53623.diff chmod007, 2007-02-02 00:35 Patch relative to revision 53623 -- addressing thomas' review
Messages (6)
msg51825 - (view) Author: David Remahl (chmod007) Date: 2007-01-31 21:04
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.
msg51826 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2007-01-31 22:05
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.
msg51827 - (view) Author: David Remahl (chmod007) Date: 2007-02-01 15:50
Should I prepare the patch relative to /ctypes/trunk/ctypes instead?
msg51828 - (view) Author: Thomas Heller (theller) * (Python committer) Date: 2007-02-01 20:22
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.
msg51829 - (view) Author: David Remahl (chmod007) Date: 2007-02-02 00:35
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
msg51830 - (view) Author: Thomas Heller (theller) * (Python committer) Date: 2007-03-13 20:45
Committed as revision 54357.  Thanks for the patch.
History
Date User Action Args
2007-01-31 21:04:22chmod007create