"SWIG (Simplified Wrapper and Interface Generator) is a free computer software tool used to connect programs written in C/C++ with scripting languages such as Tcl, Perl, Python, Ruby, Guile, PHP and other languages like Java, C#, and Ocaml. The aim is to achieve this connection with minimal effort: a small number of directives are added to the program's header files. Running the SWIG tool creates source code which provides the glue between C/C++ and the target language. Depending on the language, this glue comes in three forms: an executable that embeds the interpreter for the scripting language, a shared library that links into an existing interpreter as some form of extension module, or a shared library that can be linked to other programs compiled in the target language (for example, using JNI)."