Using C speeds
Key 4: Running at C speeds.
SWIG
SWIG is an interface compiler that connects programs written in C, and C++ with scripting languages. We can use SWIG to call C, C++ compiled in Python. Let's say that we have a factorial computing library in C, with source code in the fact.c
file and the corresponding fact.h
header file:
The source code in fact.c
is as follows:
#include "fact.h" long int fact(long int n) { if (n < 0){ return 0; } if (n == 0) { return 1; } else { return n * fact(n-1); } }
The source code in fact.h
is as follows:
long int fact(long int n);
Now, we need to write an interface file for SWIG, which tells it what it needs to be exposed to Python:
/* File: fact.i */ %module fact %{ #define SWIG_FILE_WITH_INIT #include "fact.h" %} long int fact(long int n);
Here, module indicates the module name for the Python library, and SWIG_FILE_WITH_INIT
indicates that the resulting C code should be built with a Python extension. The...