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...