Use the existing C and C++ libraries using SIP.

One of the features that makes Python so powerful is the ability to take existing libraries, written in C or C++ and make them available as Python extension modules, SIP is a tool that makes it very easy to create Python bindings for C and C++ libraries.

SIP was originally developed to create PyQt, the Python bindings for the Qt toolkit, but can be used to create bindings for any C or C++ library. Many of its ideas are from SWIG but because it is specifically designed for C++ and Python, is able to generate tighter bindings.

SIP comprises a code generator and a Python module. The code generator processes a set of specification files and generates C or C++ code which is then compiled to create the bindings extension module. The SIP Python module provides support functions to the automatically generated code.

Features:

  • Bindings are fast to load and minimise memory consumption when only a small sub-set of a large library is being used.
  • Automatic conversion between standard Python and C/C++ data types.
  • Overloading of functions and methods with different argument signatures
  • Support for ordinary C++ functions, class methods, static class methods, virtual class methods and abstract class methods
  • The ability to re-implement C++ virtual and abstract methods in Python
  • Support for C++ exceptions and wrapping them as Python exceptions
  • The ability to include documentation in the specification files which can be extracted and subsequently processed by external tools
  • The ability to include copyright notices and licensing information in the specification files that is automatically included in all generated source code
  • A build system, written in Python, that you can extend to configure, compile and install your own bindings without worrying about platform specific issues
  • SIP and the bindings it produces, runs under UNIX, Linux, Windows and MacOS/X.

You can get the full SIP documentation here.

Reference:
>> SIP – Overview

Content Team

The IndicThreads Content Team posts news about the latest and greatest in software development as well as content from IndicThreads' conferences and events. Track us social media @IndicThreads. Stay tuned!

Leave a Reply