Simplified Wrapper and Interface Generator 1.3.28 review

by on

SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages

License: BSD License
File size: 0K
Developer: Dave Beazley
0 stars award from

SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages.

The list of supported languages also includes non-scripting languages such as C#, Common Lisp (CLISP, Allegro CL, UFFI), Java, Modula-3 and OCAML. Also several interpreted and compiled Scheme implementations (Guile, MzScheme, Chicken) are supported.

SWIG is most commonly used to create high-level interpreted or compiled programming environments, user interfaces, and as a tool for testing and prototyping C/C++ software. SWIG can also export its parse tree in the form of XML and Lisp s-expressions. SWIG may be freely used, distributed, and modified for commercial and non-commercial use.

Here are some key features of "Simplified Wrapper and Interface Generator":
Code Generation

SWIG current generates wrapper code for thirteen different target languages:
Allegro CL
In addition to this, an XML output module is also available and work is in progress on a Pike module.


SWIG is capable of wrapping all of ANSI C. Features include:
Handling of all ANSI C datatypes.
Global functions, global variables, and constants.
Structures and unions.
Arrays and multidimensional arrays.
Pointers to functions.
Variable length arguments.


SWIG provides wrapping support for almost all of ANSI C++.
All C++ datatypes.
Pointers to members.
Inheritance and multiple inheritance.
Overloaded functions and methods (using dynamic dispatch).
Overloaded operators.
Static members.
Namespaces (including using declarations, aliases, nesting, etc.)
Member templates
Template specialization and partial specialization.
Smart pointers
Library support for strings, STL vectors, and more.
The only major C++ feature not currently supported by SWIG is the wrapping of nested classes--a problem we're working on. SWIG also does not allow C++ virtual methods to be implemented in certain target languages (a subtle feature that might be useful in projects that rely heavily on the use of callback functions).
C++ users who rely on advanced template programming techniques (e.g., template meta-programming) should also be aware that SWIG currently requires manual instantiation of all template classes. Therefore, if your application somehow involves the instantiation of 50000 template classes, your mileage might vary.


SWIG provides a full C preprocessor with the following features:
Macro expansion.
Automatic wrapping of #define statements as constants (when applicable).
Support for C99 (variadic macro expansion).

Customization features

SWIG provides control over most aspects of wrapper generation. Most of these customization options are fully integrated into the C++ type system--making it easy to apply customizations across inheritance hierarchies, template instantiations, and more. Features include:
Customizated type conversion/marshaling.
Exception handling.
Class/structure extension.
Memory management.
Ambiguity resolution.
Template instantiation.
File import and cross-module linking.
Code inclusion, helper function support.
Extensive diagnostics (error/warning messages).
Extended SWIG macro handling.

What's New in This Release:
Major features and bugfixes.

Simplified Wrapper and Interface Generator 1.3.28 keywords