2006-11-07 Thomas Heller * Fixed the _ctypes.py and _ctypes_test.py loader modules to work independend of the cwd. 2006-10-20 Thomas Heller * Replaced the mechanism to run ctypes from the SVN sandbox: a _ctypes.py file at top-level loads the _ctypes.pyd / _ctypes.so extension module from the platform specific build directory without installing it. Same for _ctypes_test. ----- big change in SVN repository ----- * Removed the 'ctypes' and 'source' directories with 'svn rm'. Replaced them by svn:externals definitions pointing into the official Python SVN tree: source http://svn.python.org/projects/python/trunk/Modules/_ctypes/ ctypes http://svn.python.org/projects/python/trunk/Lib/ctypes/ 2006-08-24 Thomas Heller * Various changes for Win64 / AMD64 support. 2006-08-18 Thomas Heller * Sync with the Python SVN version of ctypes: Remove the special casing of Py_None when converting the return value of the Python part of a callback function to C. If it cannot be converted, call PyErr_WriteUnraisable with the exception we got. Before, arbitrary data has been passed to the calling C code in this case. The __repr__ method of a NULL py_object does no longer raise an exception. Remove a stray '?' character from the exception text when the value is retrieved of such an object. Add commented assert statements to check that the result of PyObject_stgdict() and PyType_stgdict() calls are non-NULL before dereferencing the result. Fix a few other nits as well. Check for NULL return value from new_CArgObject(). Check for NULL return value from GenericCData_new(). 2006-08-14 Thomas Heller * New testcases for the _as_parameter_ property in ctypes/test/test_as_parameter.py, contributed by Shane Holloway. * Unfortunately, the result storage for a C callback function cannot be zero'd out in an easy way because the size is unknown in source/callbacks.c - so the following change has been taken out again. 2006-08-11 Thomas Heller * source/callbacks.c: When a ctypes C callback function is called, zero out the result storage before converting the result to C data. This ensures that callback functions returning None will pass a zero or NULL value (depending on the result type) to the calling code. Provide a better context for errors when the conversion of a callback function's result cannot be converted. 2006-08-09 Thomas Heller * Remove the builtin _as_parameter_ attributes of ctypes instances. Instead, a function pointer in the type's stgdict is used to convert a ctypes instance to a function call parameter. This allows to change the from_param methods to check for _as_parameter_ attribute as the documentation promises. Change version number to 1.0.1. 2006-08-08 Thomas Heller * Patch from Damien Miller for OpenBSD: Remove unneeded "-fno-stack-protector" flag, support x86_64. Regenerated source/libffi/configure. 2006-08-03 Thomas Heller * Changed version number to 1.0.0. * ctypes/__init__.py: Remove support for ctypes.com in DllCanUnloadNow and DllGetClassObject. Fix the DllGetClassObject and DllCanUnloadNow so that they forward the call to the comtypes.server.inprocserver module. 2006-08-01 Thomas Heller * source/_ctypes.c: Fix a potential segfault and several potential refcount leaks in the cast() function. 2006-07-21 Thomas Heller * source/libffi/configure.ac: Integrated a patch from Damien Miller: More target platforms for OpenBSD. source/libffi/configure regenerated with autoconf 2.59. * Merged in changes from Python trunk: Make sure the _ctypes extension can be compiled when WITH_THREAD is not defined on Windows, even if that configuration is probably not supported at all. * Replace an unneeded Py_XINCREF with Py_INCREF. 2006-07-14 Thomas Heller * Merged in changes done in Python trunk: Fix #1521375. When running with root priviledges, 'gcc -o /dev/null' did overwrite /dev/null. Use a temporary file instead of /dev/null. When a foreign function is retrived by calling __getitem__ on a ctypes library instance, do not set it as attribute. Fix #1467450: ctypes now uses RTLD_GLOBAL by default on OSX 10.3 to load shared libraries. 2006-07-13 Thomas Heller * Change version number to 0.9.9.9. * Because of a misspelled symbols (WITH_THREADS instead of WITH_THREAD) ctypes was always compiled without thread support; this is now fixed. * Index checking on 1-sized arrays was reintroduced, so they can no longer be used as variable sized data. 2006-07-10 Thomas Heller * Backport various fixes done in Python SVN: Assigning None to pointer type structure fields possible overwrote wrong fields. Fixed a segfault when ctypes.wintypes were imported on non-Windows machines. Fix bug #1518190: accept any integer or long value in the ctypes.c_void_p constructor. Patch #1517790: It is now possible to use custom objects in the ctypes foreign function argtypes sequence as long as they provide a from_param method, no longer is it required that the object is a ctypes type. 2006-07-06 Thomas Heller * ctypes\test\test_win32.py: Disable the test_SEH test unless the "SEH" resource is enabled when running tests. * Remove the "ctypes.uses_seh()" function again, it will not go into Python 2.5. 2006-07-05 Thomas Heller * Merge in change done in Python SVN trunk: Protect the thread api calls in the _ctypes extension module within #ifdef WITH_THREADS/#endif blocks. Found by Sam Rushing. * Merge changes done by Ronald Oussoren in Python SVN trunk: Sync the darwin/x86 port libffi with the copy in PyObjC. This fixes a number of bugs in that port. The most annoying ones were due to some subtle differences between the document ABI and the actual implementation :-( There are no python unittests that fail without this patch, but without it some of libffi's unittests fail. 2006-07-04 Thomas Heller * source\cfield.c: Applied a patch that Khalid A. Bakr sent in some time ago, it fixes the bitfield test when _ctypes is compiled with the MINGW32. 2006-06-30 Thomas Heller * source/libffi_msvc/fficonfig.h: #define __attribute__(x) only for MSVC, not for mingw compilers. This was the main thing that was missing for building _ctypes with MINGW32. Still, 2 tests are failing when compiled with mingw32: test_bitfields and test_struct_return_8H. * source/callproc.c: The _ctypes extension module now exports the function "uses_seh()" which will return True when Windows Structured Exception Handling (SEH) is used to catch faults in foreign functions, False otherwise. SEH is not used when _ctypes is compiled with the Mingw compiler, or with MSVC in DEBUG mode. 2006-06-22 Thomas Heller * Merge in changes done in Python SVN for 2.5 beta 1: - cleanup whitespace - add Python2.3 compatibility comments - fix the testsuite for openbsd 2006-06-12 Thomas Heller * Fix wrong printf format in _ctypes.c. * Release the GIL during COM method calls, to avoid deadlocks in Python coded COM objects. 2006-06-10 Thomas Heller * Tagged release_0_9_9_7. * Fix build on MIPS for libffi. 2006-06-09 Thomas Heller * Correctly support nested anonymous structures/union fields. * Remove the restriction that pointer item assignments only work with index of zero. Another fix for the cast function to keep needed objects alive. * A casted object does now reference the source objects '_objects' member. * It is now possible to assign arbitrary indexes on pointer instances. 2006-06-08 Thomas Heller * Merged in changes done in Python trunk: Fixes for 64-bit big endian machines. 2006-06-02 Thomas Heller * Fixed slice assignment to variable-sized arrays, with test. 2006-06-01 Thomas Heller * Added support for unnamed structure fields, they must be listed in the '_anonymous_' class variable. 2006-05-31 Thomas Heller * Merged in changes done in Python trunk, by Bob Ippolito and Ronald Oussuren: enable darwin/x86 support for libffi and hence ctypes (doesn't yet support --enable-universalsdk) 2006-05-23 Thomas Heller * ctypes\__init__.py: Fixed a possible FutureWarning when id() returned an integer less than zero or larger than sys.maxint, in CDLL.__repr__. 2006-05-19 Thomas Heller * docs\anatomy.txt: Add some documentation, also containing doctest testcases, about some ctypes object internals. * docs\manual\tutorial.txt: Document variable-sized data types. * source\_ctypes.c: Allow zero-sized arrays again, although accessing elements will always raise IndexError. * source\_ctypes.c: Change the way unique_key calculates the keys into the b_objects array. The previous way was broken for arrays or structures having more than 256 components, which led to strange errors. 2006-05-18 Thomas Heller * source\callproc.c: Fix compiler warning about comparison of signed and unsigned values. * source\_ctypes.c: Correct refcount issues in the (unlikely) case that KeepRef fails. 2006-05-12 Thomas Heller * Bug fix for the cast function, so that it better keeps needed objects alive. Prevent creation of array types with zero or negative sizes. * Implemented support for variable sized data structures: array types with exactly 1 element don't do bounds checking any more, and a resize function can resize the internal memory buffer of ctypes instances. * Some fixes to the test-suite. Free allocated memory, remove duplicate tests, don't run unreliable tests by default. 2006-04-28 Thomas Heller * docs/manual/tutorial.txt: End each code sample with '>>>', so that doctest also works on the LaTeX version of the tutorial (otherwise some tests would break because doctest would see '\end{verbatim}' as expected output. * docs/manual/test-tutorial.py: Python 2.5a2 formats exceptions in a different way (I'm not sure if this will be fixed or not). Add doctest.IGNORE_EXCEPTION_DETAIL. 2006-04-26 Thomas Heller * Tagged release_0_9_9_6, and released it. 2006-04-25 Thomas Heller * Fix compiler warnings on Darwin, patch by Brett Canon. 2006-04-19 Thomas Heller * docs\manual\tutorial.txt: Updates to the tutorial. * When a 'source' object is casted to another object, the other object keeps a reference to the source object to keep it alive. 2006-04-18 Thomas Heller * Patch from Skip Montanaro, in Python SVN: C++ compiler cleanup: the typical few casts, and ... C++ didn't like that the StgDictObject's ffi_type member had the same name as its type. I changed that to ffi_type_pointer. Fix refcount issues in CreateSwappedType - this removes the refleak when reloading ctypes. 2006-04-15 Thomas Heller * source\libffi\src\x86\ffi.c (ffi_prep_cif_machdep): Add a fix for FreeBSD. See also http://python.org/sf/1470353. 2006-04-13 Thomas Heller * Changed version number to 0.9.9.6. * Merged in changes made in the 'LoadLibrary_branch' branch: Restore the old way to load libraries again: cdll/windll have a LoadLibrary method, and no other public attributes. CDLL/WinDLL accept library pathname in the constructor, that's the only public attribute: all the find(), load(), and load_library() methods are gone. In other words, use these ways to load shared libraries: CDLL("path_to_lib") CDLL("path_to_lib", mode=RTLD_GLOBAL) cdll.path_to_lib cdll.LoadLibrary("path_to_lib") cdll.LoadLibrary("path_to_lib", mode=RTLD_GLOBAL) The CDLL/WinDLL base class has been renamed to LibraryLoader, in case anyone wants to subclass it. The ctypes._loader module has been removed completely. ctypes.util has been revived, it implements a find_library() function which should be useful to find libraries from the linker name (on platforms where this makes sense): find_library("c") -> "/usr/lib/libc.so.6" (Linux) find_library("c") -> "/usr/lib/libc.dylib" (OS X) find_library("msvcr71") -> "c:\windows\system32\msvcr71.dll" (Windows) If the library is not found, None is returned. 2006-04-13 Thomas Heller * Merged in several changes made in Python SVN: RTLD_LOCAL and RTLD_GLOBAL are defined for each platform. 2006-04-06 Thomas Heller * Simplify code, improve error handling, and a Py_ssize_t fix by Neal Norwitz. * Spelled 'signed char' instead of 'char', to avoid test failures on platforms where the C 'char' type is unsigned. 2006-04-05 Thomas Heller * ctypes/_loader.py: Extend the posix findLib_ld function to try output from 'ldd'. This makes findLib work on OSF1 (True 64). Patch from Neal Norwitz. * source/libffi/src/powerpc/darwin_closure.S: Remove the live_support segment attribute so that this file compiles on OSX 10.3. * source/libffi: Add support for OpenBSD. The ctypes test-suite works. 2006-03-29 Thomas Heller * source\_ctypes.c: Accept function pointers as first argument, and a function pointer types as second argument in the cast function. Fix a potential segfault. 2006-03-27 Thomas Heller * source/libffi_msvc/prep_cif.c: Fix calling of stdcall functions on Windows, when compiled with MingW32. * setup.py: Fixes from Khalid A. Bakr. He writes: """I have made some changes (see attached diff) to the setup.py to have MinGW pass the "--enable-stdcall-fixup" to the linker to suppress some warnings. And I have added another linker option, namely "--kill-at" to remove the @XY decoration that MinGW normally attaches to stdcall functions. With the latter change, test_cfuncs (which had previously reported 26 failures out of 52 tests) now only reports 3. It seems that the stdcall part now passes as it does when compiled with a MSVC type compiler.""" Still, all ctypes callback tests crash Python, and there are other failures as well - when compiled with mingw. 2006-03-20 Thomas Heller * source\cfield.c: Accessing unaligned structure fields is now supported on all machines. 2006-03-17 Thomas Heller * Several changes that will eventually allow to compile the extensions with the MingW32 compiler on Windows (hopefully!). Currently, calling foreign functions seems to work with some exceptions: functions that return structures raise errors. Callback functions crash Python. * source\libffi_msvc: Remove unneeded #ifdef and #if defined blocks: the code in this directory is for Windows X86 ONLY. * source: Backport some changes made in the Python SVN repository that made the code more robust and did better handling of errors. The only visible change should be that for [in, lcid] parameter types a default value of int(0) is used if not default has been supplied in paramflags. 2006-03-15 Thomas Heller * source/libffi/include/ffi.h.in: Suppress most warnings when files that include ffi.h are compiled by using proper function prototypes. 2006-03-15 Thomas Heller * source/cfield.c: PyString_FromFormat()b understands the C99 "z" qualifier on all platforms, in Python 2.5. Patch from Tim Peters, adapted to work with older Python versions. 2006-03-14 Thomas Heller * source\ctypes.h, source\_ctypes.c: Apply a patch (after adding support for older versions of Python) supplied by Neal Norwitz. This patch implements the changes needed for PEP353 (Py_ssize_t). He writes: The attached patch fixes all the ctypes tests so they pass on amd64. It also fixes several warnings. I'm not sure what else to do with the patch. Let me know how you want to handle these in the future. I'm not sure the patch is 100% correct. You will need to decide what can be 64 bits and what can't. I believe sq_{item,slice,ass_item,ass_slice} all need to use Py_ssize_t. The types in ctypes.h may not require all the changes I made. I don't know how you want to support older version, so I unconditionally changed the types to Py_ssize_t. 2006-03-10 Thomas Heller * source/_ctypes.c: Fix foreign functions loaded via ordinal on Windows CE. 2006-03-10 Thomas Heller * (Repository): cast is now implemented as foreign function. This should fix potential issues on 64-bit platforms. * On Windows, it is now possible to access functions exported by ordinal by indexing the loaded dll with the ordinal number: my_function = somedll[42] To implement this, the signature of the _CFuncPtr class has changed. The _CFuncPtr constructor now be accepts these arguments: _CFuncPtr(integer address) -> foreign function _CFuncPtr(callable) -> create a C callable function from callable _CFuncPtr(integer index, method name) -> foreign function calling a COM method _CFuncPtr((ordinal number, dll object), ...) -> foreign function exported by ordinal _CFuncPtr((function name, dll object), ...) -> foreign function exported by name WINFUNCTYPE and CFUNCTYPE are factory functions for _CFuncPtr subclasses, so the above applies to the types returned from those as well. * Changed version number to 0.9.9.5. * Use /Wp64 compiler flag on Windows. 2006-03-08 Thomas Heller * (Repository): Tagged as release_0_9_9_4. 2006-03-07 Thomas Heller * (Repository): Removed the ctypes.decorators module completely, so the cdecl and stdcall symbols are no longer available. 2006-03-03 Thomas Heller * (Repository): Moved all files from the CVS branch 'branch_1_0' to CVS head. The branch is dead, long live the HEAD! * ctypes/__init__.py, ctypes/test/test_sizes.py: Added c_int8, c_int16, c_int32, c_int64, c_uint8, c_uint16, c_uint32, c_uint64 types. Patch and unittest provided by Joe Wreschnig. Also added c_size_t which represents the C type size_t. * ctypes/_loader.py: Added a load_library() method to library loader classes. Plus an alias LoadLibrary() for backwards compatibility. * (Repository): Removed the codegenerator in ctypes/wrap completely. The last state has been tagged in CVS as 'BEFORE_REMOVAL'. It will be revived later - not yet sure where. * Changed the version number to 0.9.9.4. 2006-03-01 Thomas Heller * (Repository): Removed the samples subdirectory completely, because it has become out of sync. * (Repository): Moved the ctypes.wintypes module into the ctypes/ directory, got rid of the platform specific modules magic in setup.py and the .CTYPES_DEVEL file. * source\callbacks.c: Checked the return value of PyErr_Warn(). 2006-02-28 Thomas Heller * ctypes\__init__.py (OleDLL._FuncPtr._restype_): oledll now uses the HRESULT restype, no longer the ctypes builtin FUNCFLAG_HRESULT magic flag. This allows easier overriding. 2006-02-22 Thomas Heller * source/callbacks.c: Discovered and hacked around a problem with callback functions. If the callback function has a return type other than void, py_object, or an integral C type, it is impossible to either avoid a memory leak or return a possibly invalid result. Previously, the possibly invalid result has been returned, now the memory leak will appear but a "RuntimeWarning: memory leak in callback function" will be emitted. 2006-02-21 Thomas Heller * source/_ctypes.c: The _b_needsfree_ member is now always 1 if the object 'owns' it's memory buffer (even if it uses it's small builtin buffer, instead of mallocing a new one). This is useful to determine whether resources in the buffer need to be freed when the object is destroyed. * source/_ctypes.c: Finally fix this nasty 'set array through pointer' bug. See ctypes.test.test_array_in_pointer * source/malloc_closure.c: Fix compilation on Windows. 2006-02-15 Bob Ippolito * New ctypes_dlfcn.h created to allow for potential indirection of dl functions. Changed code to use "ctypes_" prefix on all dl functions. * Darwin's dlfcn compatibility wrapper no longer used for 10.3 and later, as it has a native implementation in libSystem. Compiler macros and weak linking are used to make sure the right thing happens even if compiled on OS X 10.3+ with a deployment target of 10.2. Tested with gcc-3.3 and gcc-4.0. 2006-02-15 Thomas Heller * ctypes 0.9.9.3 released. 2006-02-10 Thomas Heller * string_at and wstring_at are now implemented in the same way as memmove and memset. * Fixed the wrong return type of memmove. 2006-02-09 Thomas Heller * memmove and memset are now implemented as foreign functions, using the standard ctypes mechanism. The addresses are exported by the _ctypes extension, restype and argtypes are set in ctypes/__init__.py. This Required to extend c_void_p.from_param to accept int/long arguments as well. memmove and memset now work on 64-bit platforms. 2006-02-02 Hye-Shik Chang * source/callproc.c: ConvParam() is fixed to convert Python int and long types via libffi signed long. This fixes a compatibility problem on alpha and ia64. 2006-02-01 Thomas Heller * Hye-Shik Chang made these changes: Update libffi to gcc head as of 2006/02/01. This fixes several unittest failures on 64bit platforms. 2006-02-01 Thomas Heller * Committed a patch from Hye-Shik Chang (perky). See http://mail.python.org/pipermail/python-dev/2006-January/060199.html, where he wrote: I did some work to make ctypes+libffi compacter and liberal. I removed sources/gcc and put sources/libffi copied from gcc 4.0.2. And removed all automake-related build processes and integrated them info setup.py. There's still aclocal.m4 in sources/libffi. But it is just identical to libffi's acinclude.m4 which looks liberal. 2006-01-26 Thomas Heller * ctypes._loader implements the new LibraryLoader class. The class itself is exposed from the ctypes module itself. LibraryLoader objects expose load(), find(), and load_version() methods - see the docstrings. The register_library_alias() function is gone, it does belong somewhere else (if at all). 2006-01-02 Thomas Heller * Subtypes of simple types (the c_int and c_char variations, c_void_p, c_char_p and c_wchar_p) behave different now. XXX More explanations needed. * Removed the complete ctypes.com package, which lived (in CVS) in the ctypes\win32\com directory. 2005-12-30 Thomas Heller * Changes for Windows CE, contributed by Luke Dunstan. 2005-12-14 Thomas Heller * Implemented different endians for c_float and c_double. Added testcases for them. 2005-11-30 Thomas Heller * Implemented BigEndianStructure and LittleEndianStructure base classes which support different endians. The fields of structures with non-native byte ordering are limited to c_char and all the integer variantions of different sizes, plus arrays of these. Integer bit fields do work. c_double, c_float, and structures are not yet supported as field types. * Changed version number to 0.9.9.1. 2005-11-04 Thomas Heller * Moved tests from the 'unittests' directories to packages 'ctypes.test' and 'ctypes.com.test'. The ctypes.test package's __init__.py file contains test support functions, and a test runner. The test runner is also called by starting the script ctypes/test/runtests.py. The test runner can search for refcount leaks by running the tests in a loop, this requires a debug build of Python and takes quite some time. Start runtests.py with a '-r' command line option. Tests can now 'require' additional resources (which are strings), by default these tests are disabled. To provide resources, these can be specified by the '-u' command line flag. The 'out-of-process' test command has been removed. Tests can also be run by setup in this way: python setup.py test [-u] [-r] 2005-11-03 Thomas Heller * source\callbacks.c: For callback functions with result type None ('void'), actually ignore the return value. Add some assert statements for easier debugging. * source\_ctypes.c: Enable cycle GC on CFuncPtrType objects (does not seem to have a visible effect). Fix quite some refcount leaks, and a crash when outargs is NULL. Add some asserts for easier debugging. * source\stgdict.c: Fixed a very nasty bug: The dict portion of StgDict objects were never freed. Assigning a non-sequence to a Structure _fields_ raises TypeError, not AttributeError. Fix another refcount leak. 2005-10-28 Thomas Heller * setup.py: ctypes.macholib was missing in the packages list. Remove the comtypes package from the tests. * source\cfield.c: Fix a refcount leak when unicode is converted to ascii. * source\_ctypes.c: Fix a refcount leak. And finally correct the wrong static declaration of Pointer_Type, preventing compilation with gcc4 (which I don't have). * source\callproc.c: Fix a refcount leak when COMError is raised. 2005-10-21 Thomas Heller * ctypes\wrap\codegenerator.py: The codegenerator now by default assumes 'char *' and 'wchar_t *' types are pointers to zero-terminated strings. It generates STRING = c_char_p WSTRING = c_wchar_p and STRING / WSTRING is used instead of POINTER(c_char) and POINTER(c_wchar). This behaviour can be changed by setting the global variable ASSUME_STRINGS to False. 2005-10-18 Thomas Heller * source\callproc.c: Remove all the too fancy traceback printing stuff. The DllGetClassObject() and DllCanUnloadNow() functions are now exposed by the ctypes module itself, which forwards their requests to ctypes.com.server. Later, there should also be a way to forward to comtypes.server (when that exists). * source\_ctypes.c: Implemented __nonzero__ for simple types. 2005-10-14 Thomas Heller * source\callbacks.c: Fixed a refcount leak in callbacks. 2005-09-06 Thomas Heller * source\_ctypes.c (CData_FromBaseObj): The b_size member is now set. Before, the effect was that sizeof(obj) would return always zero for objects retrieved from structure fields, for example. 2005-09-02 Thomas Heller * source: Implemented Mike Fletcher's errcheck protocol. A new 'errcheck' field has been added to CFuncPtrObject. If the function has an 'errcheck' attribute, this is called with (function_return_value, function, arguments, ...) and the result of this call is returned. The 'errcheck' function must accept more than three parameters for future compatibility. * source/callproc.c: Call checker (which is the _check_retval_ attribute of the restype) also when restype is *not* a simple ctypes type. 2005-08-30 Thomas Heller * source/callproc.c: Don't call __new__ and __init__ when a ctypes instance is created from a function return value. * ctypes/wrap/cparser.py: Added a function to find gccxml on $PATH. 2005-08-24 Thomas Heller * ctypes/wrap: Merged some of Andreas Degert's changes from CVS HEAD: The code generator now sorts the generated definitions according to the location in the source code. If function argument names are found in the xml-file (newer gccxml create these), the code generator uses them in the generated wrappers. 2005-08-22 Thomas Heller * source\_ctypes.c (CDataType_from_address): Fixed another potential problem for systems where sizeof(int) != sizeof(void *). * Fix a problem which showed up as array.value != array[:]. 2005-08-19 Thomas Heller * source\_ctypes.c: Add a CFuncPtr_repr which gives more useful output when the instance is a COM method. Fix two problems that will show up on platforms where sizeof(int) != sizeof(void *). Get pointer values by PyLong_AsVoidPtr. Fix a bug when paramflags are specified as [], and so the numerical flag value is 0. Per suggestion from Mike Fletcher: call byref() automatically, if needed, for POINTER types in argtypes. Fix crash with ARRAY types in argtypes. Fix a small refcount leak. Cleanup and clarify some code. 2005-08-18 Thomas Heller * Finally committed a patch from Mike Fletcher which allows to use the RTLD_GLOBAL flag to load libraries. 2005-08-17 Thomas Heller * source\*.[ch]: Implement rich error reporting for COM method calls (on Windows). CFuncPtrObject gets a new 'iid' slot which stores a pointer to the guid of the interface this method belongs to. When iid is != NULL, use IErrorInfo to get rich error information from the com object. Add a COMError class, and implement custom __init__ and __str__ methods. 2005-08-12 Thomas Heller * source\callbacks.c: A buffer allocated for callbacks was too small. This could lead to crashed when callbacks were garbage collected. Problem reported by Mike Fletcher. 2005-05-20 Thomas Heller * source\_ctypes.c: Also don't call __new__ when a ctypes instance is created from a base object. 2005-05-17 Andreas Degert * source/gcc, README.txt: merged with HEAD 2005-05-11 Thomas Heller * source\_ctypes.c (CData_FromBaseObj): Don't call __init__, only __new__, when a ctypes instance is retrieved from a base object. This avoids confusion when structure fields containing structures (for example) are accessed. 2005-05-06 Thomas Heller * source/_ctypes.c: Clearer code, less code, and greater performance by reworking CData_FromBaseObj. * source/_ctypes.c, source/ctypes.h: CDataObject and CFuncPtrObject now have a small buffer. If the C type fits into that it is used, otherwise PyMem_Malloc() is called to create a bigger one. This speeds up instance creation a lot. 2005-04-22 Thomas Heller * Committed a patch from Andreas Degert which allows to call vararg functions on x86_64b platforms (although not officially supported by libffi). 2005-04-19 Thomas Heller * Fixed quite a few problems on 64-bit platforms. Reported and partly patched by Mike Flechter. 2005-04-15 Thomas Heller * Added some files from Bob Ippolito's macholib, to help finding shared libraries on OS X. 2005-04-14 Thomas Heller * source/_ctypes.c: Fix a crash when a POINTER type has no _type_. Reported by Georg Thalhammer, patch provided by Andreas Degert, somewhat modified. 2005-04-07 Thomas Heller * Changed version number to 0.9.8. 2005-04-04 Thomas Heller * Fix a refcount leak. * Fix a possible segfault in the 'cast' function (the code possibly tried to Py_DECREF an uninitialized pointer). 2005-04-04 Thomas Heller * CVS: Created a branch_1_0 branch. 2005-03-18 Thomas Heller * ctypes-0.9.6 released. * Back out the '.so' magic again. 2005-03-17 Thomas Heller * ctypes\__init__.py: On platforms where dlopen is used, and '.so' is the default shared library extension, if dlopen fails and the filename doesn't end with '.so', try again with '.so' appended to the filename. This allows to use the attribute access syntax to cdll to load libraries in some cases: 'cdll.libm'. * ctypes\__init__.py: Removed the __del__ method in _CDLL. This caused garbage in Python's gc. Reported by Erik Andersen. * ctypes.com.register: Enclose the Python script to run as com server in double quotes in case the path contains spaces. Fix by Juan Carlos Coruna. * ctypes.wrap.h2xml script: Added command line options to include preprocessor symbols into the xml file (that was the default before), and to not delete temporary files which may help locating problems in the compilation. The latter was suggested by 'Bryan' on the ctypes-users list. Expanded the default excluded symbols list on Windows, so that 'limits.h' can be processed. 'h2xml.py' can now read preprocessor symbol names to exclude from a local configuration file 'h2xml.cfg' inb the current directory. 2005-03-16 Thomas Heller * ctypes\source\_ctypes.c: Subclasses of c_char_p, c_wchar_p, and c_void_p were not able to override the from_param class method in their class definitions because SimpleType_new overwrote them. Reported by Andreas Degert. * ctypes\source: Removed the unneeded nArgBytes member from StgDictObject, and changed the code accordingly. Thanks to Andreas Degert for spotting this. * ctypes\wrap\cparser_config.py: Added some symbols from windows limits.h header file to the excluded list - h2xml.py choked on them. 2005-03-14 Thomas Heller * _ctypes.c: Fixed refcount leak in functions with 'out' parameters. This has only relevance for the unreleased comtypes package. * _ctypes.c: Keyword arguments to Structures/Unions were ignored. Thanks to Jimmy Retzlaff for finding this. 2005-03-11 Thomas Heller * ctypes-0.9.5 released. * The prototypes that WINFUNCTYPE or CFUNCTYPE return can now be called with an optional third parameter: paramflags. This must be a tuple specifying the parameter direction (in, out), the parameter name (optional), and the default parameter value (also optional). This creates a somewhat higher level function, and also allows to call functions with named parameters. The change made on 2005-01-15 has been reverted again - it is better to create instancemethods, if needed, in the calling code. 2005-02-10 Thomas Heller * Clean up the_ semantics on Structure/Union types. The _fields_ attribute can no longer be set after one of the following happens: - The _fields_ attribute is set. - An instance of the type is created. - The type is used as field in another Structure/Union. - The type is subclassed. 2005-01-26 Thomas Heller * source\_ctypes.c: Prevent a crash when .restype or .argtypes attribute of a function is deleted. 2005-01-20 Thomas Heller * source\callproc.c: Print a real traceback when an exception is raised in a callback function. 2005-01-15 Thomas Heller * source\_ctypes.c: WINFUNCTYPE (and CFUNCTYPE) can now be called with three parameters: integer, string, class. It returns an unbound method fpr class, calling into a COM vtable at the integer index. The string is the method name. Better error chcking, and fix a compiler warning in CFuncPtr_new. 2004-12-30 Thomas Heller * _ctypes.c (_CData_set): Assinging None to a POINTER structure field makes a NULL pointer. * source\_ctypes.c (Pointer_ass_item): Prevent NULL pointer access when assigning to pointer instances. 2004-12-17 Thomas Heller * source/callbacks.c: Corrected the exception handling in callback functions. SystemExit in a callback now actually exits Python. 2004-12-02 Thomas Heller * Structure types as restype and in argtypes of functions do work now. Not sure about callback functions. The _fields_ attribute is now handled correctly in Structure sub-subclasses. It is extended instead of replaced. if 'sizeof(int) == sizeof(long)', c_int/c_uint are now aliases for c_long/c_ulong, and if 'sizeof(long) == sizeof(long long)', c_longlong/c_ulonglong are now aliases now for c_long/c_ulong. 2004-12-01 Thomas Heller * The annoying pointer bug has been fixed. 2004-11-19 Thomas Heller * (Message): The _fields_ attribute can now be set *after* a Structure or Union type has been created. XXX Describe the exact semantics. 2004-10-29 Thomas Heller * (Message): Define a new protocol for function's restype. If it is a ctypes' type, it is handled in the usual way. But if it additionally has an _check_retval_ attribute, this is called with the result, and the return value of this call is the functions return value. This allows to define HRESULT as a ctypes' type, because it can check for failure in it's _check_retval_ static method, and raise a WindowsError. The big advantage is that now HRESULT is also usable in the argtypes list. Although HRESULT is defined in python code (since it is derived from c_long), the _check_retval_ method is implemented in C - in this way the traceback won't include the _check_retval_ method definition itself. * (Message): Increased version number to 0.9.3. 2004-10-28 Thomas Heller * (Message): ctypes 0.9.2 released. * Renamed the functions: get_string -> string_at, get_wstring -> wstring_at 2004-10-20 Thomas Heller * Cycle GC support added for the PointerType_Type metaclass. This makes the test_leaks unittests work. Reverted the changes for lazy structures again. * Remove CFuncPtrType_from_param again. Later. 2004-10-19 Thomas Heller * unittests\test_cfuncs.py: Fixed the test to work on OS X. The problem probably was that OS X loads several different instances of the _ctypes_test shared library. 2004-10-15 Thomas Heller * Implemented memmove, memset and get_string functions. They will operate on any type of argument, so they should be used carefully. * Reinstalled the magic _abstract_ attribute for Structure and Union types. If this attribute is defined, the _fields_ attribute looses it's special meaning. Kept for backwards compatibility. * Work around a bug in Python's PyUnicode_FromWideChar and PyUnicode_AsWideChar api functions. 2004-10-14 Thomas Heller * Implemented cycle GC for several internal types fixed some leaks. Fixed another memory leak and a refcount leak. Added a unittest to check for leaks. 2004-10-13 Thomas Heller * Bit fields in structures and unions are now implemented. They are defined using a third item in the _fields_ list, which specifies the number of bits in this field. Bit fields are only allowed for numeric types, not for character types like c_char. Tested on several x86, windows and linux. 2004-10-12 Thomas Heller * Implemented a cast(obj, ctype) function. This should be used to convert one type of pointer to abother type of pointer. For example, a POINTER(c_byte) instance could be converted to a c_char_p instance pointing to the same memory location, allowing to access the zero-terminated string pointed to. * Unicode should now work on non-windows systems. Tested on Suse Linux x86 and x86-64, Redhat linux x86 (wide unicode build). 2004-10-08 Thomas Heller * source\callbacks.c: Added a cast function, which creates a new ctypes type instance from an existing instance. Does not yet work correctly for integers of different sizes, but should work for pointers - and that's where it is needed. * ctypes\__init__.py: POINTER(None) will now return c_void_p. This change was made to ease automatic code generation (and makes sense, since None is used in other places for 'void' as well. * source\_ctypes.c: ctypes _pointer_type_cache now lives in the _ctypes module, to make it available to C code. Setting the _fields_ attribute on a Structure or Union type after creation automatically update the POINTER instance to it when it already exists, this allows to use POINTER() in the _fields_ list without need to update the POINTER type later. Implemented a customg from_param class method for CFuncPtrType: Python callables can now be passed directly as arguments to functions requiring callbacks: WINFUNCTYPE() or CFUNCTYPE() in the argtypes list. To avoid having to keep a reference to the created callback function explicitely (which will always be forgotten), started code to keep a reference automatically - currently this only works for functions, *not* for methods!!! 2004-09-28 Thomas Heller * (Message): Support for 'lazy' Structure and Union definitions. The _fields_ attribute can now be set after the class has been defined. 2004-09-21 Thomas Heller * (Message): Increased version number to 0.9.2. 2004-09-16 Thomas Heller * (Message): ctypes 0.9.1 released. * (Message): The internal conversions that ctypes does between unicode and strings can now use a specified encoding and error handling. A set_conversion_mode() function allows to set them, it returns the previous values. The inital values are ('mbcs', 'ignore') on Windows, and ('ascii', 'strist') on other systems. (source\callproc.c): The Extend_Error_Info() function has been fixed - sometimes is displayed weird error messages like 'TypeError: function takes 5 arguments (1 given)' when an UnicodeEncodingError was raised. When internal processing of an argument for a function call fails, the new ctypes.ArgumentError exception is raised. 2004-09-15 Thomas Heller * ctypes\__init__.py: CDLL and subclasses now accept an optional second handle parameter. If this is supplied, it is used instead of calling LoadLibrary() or dlopen() to get one. * source\callproc.c: Important fix - sometimes pointers to arguments in function call have been free'd too early, especially when argtypes have been specified for functions. 2004-09-07 Thomas Heller * (Message): Fix the create_unicode_buffer function - it was returning c_char arrays instead of c_wchar arrays. Both create_string_buffer and create_unicode_buffer can now be called with string and unicode instances, they will do the needed conversions themselves. 2004-09-01 Thomas Heller * (Message): A pythonapi object has been added to the ctypes package. On windows, it is bound to the python dll, on other systems it is bound to the current process. It allows to access C Python api functions. py_object is the ctypes type corresponding to the C 'PyObject *' type. * ctypes: It is now possible to call cdecl functions with more arguments than the length of the argtypes attribute, even if this is set. This allows specify argtypes for functions like sprintf(). 2004-08-27 Thomas Heller * ctypes: Accept integer addresses, uncode strings, and strings in the c_char_p and c_wchar_p constructor and as c_char_p and c_wchar_p fields in Structures. strings are automatically decoded to unicode, and unicode is automatically encoded in strings if needed. Integer addresses are *not* accepted in function parameter lists, they must before be converted to c_char_p or c_wchar_p. 2004-08-26 Thomas Heller * source\callproc.c: Implemented Py_INCREF and Py_DECREF as functions. * ctypes\__init__.py: Cache the types that WINFUNCTYPE and CFUNCTYPE creates, to avoid creation of a lot of similar classes. Rearrange the code to use try:except: instead of dict.get(xxx, None), the former is faster if lookup mostly succeeds - as is the case for POINTER imo. This makes importing large COM files created by readtlb a lot faster, since WINFUNCTYPE is called for every COM method. The python wrapper for mshtml.tlb, which contains nearly 600 interfaces, now imports in 3 seconds instead of 40! 2004-08-20 Thomas Heller * (Message): Add the PyDLL class and pydll object to ctypes, they will expose functions using FUNCFLAG_PYTHONAPI allowing to call Python api functions. * source/cfield.c: Add accessors for 'O' typecode (which converts to/from python objects). * (Message): Implement the FUNCFLAG_PYTHONAPI flag which allows to call Python API functions with ctypes. Somewhat tricky - we have to keep the thread state during the call, and we have to make sure to return failure if the Python error flag has been set. 2004-08-19 Thomas Heller * (Message): the alignment function was not exported by the ctypes module. It returns the alignment requirements in bytes of a type or instance. * source/callproc.c: The _ctypes.call_function function, although private and deprecated, has been put back in - it is used by Gary Bishop's readline module. 2004-08-18 Thomas Heller * (Message): Array and POINTER instance now support slicing, for POINTER only getslice is implemented (setslice is too dangerous, probably). Slices are accepted or returned as lists of the elements, except for character and unicode character pointer and arrays, where strings resp. unicode strings are used - much more convenient. * MANIFEST.windows.in: Added the include files which were missing from the source distribution. 2004-07-28 Thomas Heller * (Message): CopyComPointer is no longer a function exported from the _ctypes dll/shared lib, instead it is a normal Python function implemented in the _ctypes extension. This allows to build _ctypes as a builtin module. 2004-07-23 Thomas Heller (Message): ctypes 0.9.0 released. * (Message): c_int, c_uint and other integer variants now use the masked functions when converting Python integers/longs to C integers. This has the effect that the value of the integer is never checked, it is silently truncated. * (Message): ctypes now requires Python 2.3 or better. * (Message): Add some 'hacks' which make ctypes work on big-endian platforms. On platforms with strict alignment rules, there are still some crashes (solaris sparc). 2004-xx-xx Thomas Heller * (Message): Conversion to libffi is now complete. libffi is now used on all platforms. unittests pass, at least on x86 architectures. Tested on Linux, FreeBSD. 2004-05-07 Thomas Heller * (Message): Tag the HEAD with before_libffi_2004_05_07 * ctypes\source\callbacks.c: Callback functions can now return c_char and c_char_p data types. 2004-05-06 Thomas Heller * Finally fixed the sometimes shortened traceback prints when an exception occurrs in a callback function - only the exception class was printed, not the value. 2004-05-03 Thomas Heller * win32\com\client.py: Add a COMError class, compatible to that used in pywin32. If _DispMethod.__call__ fails, a COMError is now raised, with more detailed information. * ctypes\__init__.py: The WinError function does now accept an optional second parameter, this is the textual error description. 2004-04-20 Thomas Heller * ctypes\__init__.py: c_buffer is silently deprecated, and replaced by create_string_buffer. A similar function create_unicode_buffer has been added. * source\callproc.c: Improve the error reporting for access violations - the message now reports the faulting address in charge, and whether reading or writing failed. 2004-02-05 Thomas Heller * source\_ctypes.c: Added c_char_p_from_param and c_void_p_from_param class methods to the _SimpleCData type. These are later used as from_param class methods for the c_void_p, c_char_p, and POINTER(c_char) types. Added unittests for them. * (CFuncPtr_set_argtypes): It is now possible to assign None to a functions argtypes attribute. This clear the argtypes sequence, after that the function can be called with any number and types of arguments. 2004-01-20 Thomas Heller * source\_ctypes.c: Moved the test functions into a seaparate Python extension module _ctypes_test.c. Setup-script and unittests updated. 2003-10-30 Thomas Heller * source\_ctypes.c: Finally added cycle GC support for all the base-types implemented in this module, without breaking the test-suite. 2003-10-24 Thomas Heller * win32\com\__init__.py: Changes to prevent crashes when the interpreter exits, and COM pointers are to be cleaned up. The problem was that CoUninitialize was registered by the atexit module, and this runs *before* all the modules are cleared out and the final Release() call on the COM pointers is done. The solution is to create an object in the com\__init__.py module which will call CoUninitialize when it's refcount reaches zero. Even better would probably be to make this an attribute of the sys module, because sys is cleaned last, only __builtins__ is cleaned later. 2003-07-18 Thomas Heller * ctypes\__init__.py (c_buffer): Accept int as well as long integers as the size argment for c_buffer. 2003-07-09 Thomas Heller * source\_ctypes.c: Prevent crashes on pointer(IUnknown()) call. 2003-07-08 Thomas Heller * source\_ctypes.c: Finally fixed this nasty pointer bug. The incomplete pointer sample from the tutorial now works. 2003-07-03 Thomas Heller * ctypes\__init__.py: Use __getitem__ to load libaries or get functions. gpib = cdll["gpib-32.dll"], and gpib["Function-With-A-Strange_Name@@@"]. Suggested by Chuck Esterbrook. 2003-06-24 Thomas Heller * source\_callbacks.c: Callback functions can now return simple data types like floats, doubles, long long and so on. Before, only integers were returned. 2003-06-12 Thomas Heller * source\*.c: On Windows, structures and unions can now be passed *by value* to function calls. 2003-06-03 Thomas Heller * source\_ctypes.c: Raise AttributeError instead of ValueError when a function is not found in a dll. Suggested by Chuck Esterbrook. 2003-05-16 Thomas Heller * source\_ctypes.c: Fix some (but not all) problems with pointer instance and types. * source\_ctypes.c: Make the restype atribute of functions readable. VisualPython's debugger had problems if it was not. Contributed by Nick Adams. * ctypes\__init__.py: Fix the name of the void pointer type, it's c_void_p not c_voidp (but leave the old name intact) * source\cfield.c: The c_wchar_p.from_param method did not accept None (NULL pointer as parameter). Unittests updated. * source\_ctypes.c: ctypes' types now have a in_dll() class method. It allows to access values exported from dlls. Also added a unittest. Often requested feature. 2003-05-14 Thomas Heller * win32\com\register.py: Register the script with the absolute pathname. 2003-03-11 Thomas Heller * ctypes/source: CFuncPtr changes: The _argtypes_ attribute is now optional (but required if you want to construct callbacks). CFuncPtr now has two contructors: CFuncPtr(callable), and CFuncPtr(funcname, dll). So CFuncPtr can now completely replace both CFunction (for callbacks) and DynFunction (for dll functions). 2003-03-07 Thomas Heller * ctypes: The CFuncPtr type now supports cyclic garbage collection, it is especially useful here, but GC support for other types is not far away. * ctypes: The CFunction subclass _types_ attribute does not accept format characters any more, types like c_int, c_char_p and so on must now be used. The same change has been made for the argtypes and restype attribute of dll functions. A new base type CFuncPtr was added. This will soon make CFunction and DynFunction obsolete. Subclass creation requires an _argtype_ attribute mush must be a sequence of types like c_int or c_charp, a _flags_attribute which must be a bitwise or of FUNCFLAG_CDECL, FUNCFLAG_STDCALL and FUNCFLAG_HRESULT (the latter two only on Windows) to specify the calling convention, and an optional _restype_ attribute which defaults to c_int. The plan is to create some factory functions like STDCALL() and CDECL() which return CFuncPtr subclasses, this is useful to define these subclasses in an expression instead of a class statement, also it probably makes it easier to use. Obscure change: If the CFunction instance uses c_int in the _types_ sequence, it will now receive a standard Python integer and no longer a c_int instance if it is called. (CFuncPtr instances behave in the same way). 2003-03-04 Thomas Heller * ctypes.py (cdll): Changed the __getattr__ implementations for all *DLL classes to raise an attribute error if the requested name both starts and ends with a double underscore. Thanks to Wolfgang Strobl for pointing at this. 2003-02-26 Thomas Heller * source\_ctypes.c: Removed the unused from_bytes stuff. * source\_ctypes.c (CString_new): The buffer is only initialized to the bytes from the string is passed in, if any. The terminating NUL byte is always set. This allows large c_string instances to be created with minimum overhead. * source: Moved code from _ctypes.c into the new files cfield.c (field accessors) and stgdict.c (storage info dict). 2003-02-25 Thomas Heller * source\callproc.c: Added call_cdeclfunction. * source\_ctypes.c: addressof() now accepts CFunction instances. 2003-02-24 Thomas Heller * source\_ctypes.c: c_string() and c_wstring() signatures changed. If the first parameter is a string, an optional positive integer can be used as second parameter to specify the size of the internal buffer. This size does NOT include the terminating NUL byte. Since sizeof() does now support c_string and c_wstring, len() is no longer supported (c_string and c_wstring have never really been sequences). * source\_ctypes.c: Made sizeof() and addressof() work with c_string and c_wstring objects. * source\callproc.c: PyCArgObjects now have a readonly _obj attribute, this is the object passed to the byref() call. Useful for implmenting custom argument type checking in Python. 2003-02-20 Thomas Heller * unittests\test_strings.py (StringTestCase.test_sized_strings): Added tests for the new c_string constructor. * source\_ctypes.c (CString_new): The c_string constructor can now be called with a positive integer, this will create an empty string buffer of the specified length (+ 1 for a terminating NUL character). * source\_ctypes.c (CString_new): It's no longer possible to call c_string with None as argument. It created a string of zero size, but this doesn't seem to make sense. 2003-02-19 Thomas Heller * source/_ctypes.c, ctypes.py: Add a c_voidp data type, which represents (void) pointers to memory locations. The value attribute is a Python integer (or a long). 2003-02-18 Thomas Heller * (Repository): Added a packages directory, and created a ctcom package. See separate changelog. 2003-02-11 Thomas Heller * source/_ctypes.c: The .from_parameter method of POINTER classes now accept Array instances containing elements of exactly the same type. * source/callproc.c: Make sure call_comproc checks for valid number of arguments before calling _CallProc. 2003-02-07 Thomas Heller * Version 0.4.0 released and uploaded. * source/_ctypes.c: PointerType_new, ArrayType_new, SimpleType_new, and CFunctionType_new did not check for NULL result from PyType_Type.tp_new() call. This call will fail in Python 2.3 when 'object' is listed as the first base class with a TypeError: MRO conflict among bases. Spotted by Greg Chapman. 2003-02-05 Thomas Heller * The 'raw' and 'value' properties of c_wstring are back, also fixed some severe bugs (it seems c_wstring never worked correctly). Added unittests. * Fixed a problem in c_string: The NUL byte at the buffer end could be overwritten. Added unittests for c_strings. Per suggestion from Niki Spahiev, CFieldObjects now have a readonly size and offset property. Added short docs for them. 2003-01-31 Thomas Heller * Item deletion on Array or Pointer instances did crash with a NULL pointer access. Added unittest for this, and also for Arrays. 2003-01-28 Thomas Heller * source\_ctypes.c: Dangerous code checked in. Pointer instances can point to a single data item, or they can point to an array of values. Back in the distant past ;-), I had a SetSize() method, which would enable indexes != 0. Don't know when and why I removed it, but I need it again. Should it have to be enabled explicitely? Would be better, it seems. Note that there's no corresponding ass_item implementation with indexes != 0. This means, we can get and change the items the pointer points to, if they are mutable, but not replace the items by different ones. 2003-01-24 Thomas Heller * (several): Fixed the alignment and size of the compound datatypes Structure, Union, and hopefully also Array. 2003-01-23 Thomas Heller * source/_ctypes.c: Raise a TypeError if a SimpleCData type or a CDataType is specified as a CFunction's restype. * source/_ctypes.c: CFunction now has a from_param class method. This means that CFunction subclasses can now be used in the argtypes attribute, and so typechecking is done. * unittests: Rewrote the tests from doctest to pyunit. 2003-01-21 Thomas Heller * source/: Merged in these changes from the C_FAST_CARGS branch: ConvParam returns PyCArgObject instances now. Fixed the _as_parameter_ properties of Array, CString, and CFunction so that they 'return' PyCArgObject instances instead of magic tuples. Added a public 'P' fielddescriptor, which is mostly for internal use. The 's' rettype value for functions is probably useless, because functions return *pointers* to strings (char *), not strings. Adapted all the unittests to work, and also changed the samples. 2003-01-20 Thomas Heller * source/*.[ch]: Introduced PyCArgObject objects, which contain a Python object itself and also the data converted to C. This replaces the magic 3-tuples, and should be somewhat faster because no two conversions take place. This is now used by SimpleType_from_param(), byref(), and Pointer_as_parameter(), and is understood by ConvParam(). In the long run this should be the only thing (besides primitive Python data types with trivial conversions) used by ConvParam(). Also ConvParam should probably *return* these things. 2003-01-17 Thomas Heller * source/_ctypes.c: Rewrite of SimpleType_from_param complete. unittests/test_parameters.py shows that it does the right things in most cases. * (Repository): Moved everything from local CVS to the SF repository, and restructured the directories.