NAME
h2xml - convert header files to XML intermediates
xml2py - convert XML intermediates to Python ctypes interface
SYNOPSIS
h2xml includefile ... [options] -o outputxmlfile
xml2py xmlfile ... [options] -o outputpyfile
DESCRIPTION
ctypeslib is a Python code generator capable of converting C header
files into xml files (using gccxml), and then converting the xmlfiles
into Python modules which define a ctypes interface to the
corresponding C library.
Ctypeslib is not ctypes. Ctypes is included in Python 2.5+ and as an
add-on for lower versions, while ctypeslib is a lesser known add-on
written by the ctypes author. If you use ctypes a lot and are tired of
setting argtypes and restype of the called functions, you should look
into ctypeslib. Ctypeslib can also set up data types and structures
from C header files automatically.
h2xml and xml2py are the user interface scripts to ctypeslib. h2xml
converts C header files into xml intermediates (using gccxml) and
xml2py converts these intermediates to Python files. At the minimum,
you can get automatic construction of the C types (structures, etc) in
ctypes definitions. With extra options, macro definitions can be
expanded and the output Python file can be automatically linked (using
ctypes) to the corresponding C library.
The briefest example is:
h2xml header.h -o out_c.xml
xml2py out_c.xml -o out_c.py
Key options are -c (include C preprocessor headers) to h2xml and -l
library.so (automatically link to the C library using ctypes) to
xml2py.
OPTIONS
h2xml options:
-h, --help
show brief help message
-q, --quiet
-D NAME[=VALUE]
macros to define
-U NAME
macros to undefine
-I DIRECTORY
additional include directories
-o XMLFILE
XML output filename
-c, --cpp-symbols
try to find #define symbols - this may give compiler
errors, so it’s off by default.
-k don’t delete the temporary files created (useful for
finding problems)
xml2py options:
-h, --help
show this help message and exit
-c include source file location in comments
-d include docstrings containing C prototype and source file
location
-k TYPEKIND
kind of type descriptions to include: d = #defines, e =
enumerations, f = functions, s = structures, t = typedefs
-l DLLS
libraries to search for exported functions
-o OUTPUT
output filename (if not specified, standard output will
be used)
-r EXPRESSION
regular expression for symbols to include (if neither
symbols nor expressions are specified,everything will be
included)
-s SYMBOL
symbol to include (if neither symbols nor expressions are
specified,everything will be included)
-v verbose output
-w add all standard windows dlls to the searched dlls list
-m module
Python module(s) containing symbols which will be
imported instead of generated
--preload=DLL
dlls to be loaded before all others (to resolve symbols)
-h, --help
show this help message and exit
-c include source file location in comments
-d include docstrings containing C prototype and source file
location
-k TYPEKIND
kind of type descriptions to include: d = #defines, e =
enumerations, f = functions, s = structures, t = typedefs
-l DLLS
libraries to search for exported functions
-o OUTPUT
output filename (if not specified, standard output will
be used)
-r EXPRESSION
regular expression for symbols to include (if neither
symbols nor expressions are specified,everything will be
included)
-s SYMBOL
symbol to include (if neither symbols nor expressions are
specified,everything will be included)
-v verbose output
-w add all standard windows dlls to the searched dlls list
-m module
Python module(s) containing symbols which will be
imported instead of generated
--preload=DLL
dlls to be loaded before all others (to resolve symbols)
EXAMPLES
Please see /usr/share/doc/python-ctypeslib/examples.Debian for examples
and explanation.
SEE ALSO
/usr/share/doc/python-ctypeslib/examples.Debian contains a brief
tutorial on some key features
Python docstrings (pydoc ctypeslib)
Ctypeslib upstream is http://python.net/crew/theller/ctypes/ (see
"Related Projects").
For ctypes information, see http://docs.python.org/library/ctypes.html
AUTHOR
ctypeslib was written by Thomas Heller <theller@ctypes.org>.
This manual page was written by Richard Darst <rkd@zgib.net>, for the
Debian project (and may be used by others).