Hi all, I'm undertaking a pretty significant wrapping project (a linux shared-object lib) early in my Python experience, and thought it might be useful for many more that just myself if this thread were to produce a sort of roadmap for approaching wrapping with ctypes.
I've been doing some reading, but want to verify my "big picture view" and have come to make the following presumptions: (so, please correct me where erroneous) - One gathers the ".h" header(s) for the library to determine the data structures (defined in "#define" and "typedef" statements) as well as the prototypes for the library routines. - From these header files, one defines attributes to reproduce the "#define" statements, and also reproduces the typedef "structs" by defining classes and assigning a Python list of tuples for the "_fields_" attribute, to associate a ctype and field name with each field in the "struct". - Use ctypes.CDLL to "connect" to the library, and instantiate an object whose attributes are the library routines. - From that object, instantiate each of the routines, and override the "argtypes" attribute for each of these with a list of "ctypes", and a single ctype for the "restype" attribute. In either case, the "type" might be a newly-defined type (class) that's more complex than just the provided ctypes. Presumably, judicious use of the leading "_" (underscore) is used to hide (make private) the "ugly details" from the wrapper user, revealing only the routines, and possibly, classes that describe data types the original API expects the user to need. ====== Can anyone with some "wrapping" experience add/modify/enhance the above? Many thanks for all feedback! -- Alaric -- http://mail.python.org/mailman/listinfo/python-list