Its completely different approach. SWIG is a tool
designed to create bindings, for which you provide an interface
descripitions, which usually includes your C/C++ headers, and you
provide some SWIG specific directives for improving the generated
bindings.
It produces C side module and a language specific
module. The C side is required, since some C stuff can only be detected
by an actual C compiler. In these matter, maybe TalkFFI is better,
because is based in an actual compiler(clang), but maybe you lose some bindings fine tuning.
The
problem is when you add C++ to the mix. In C++ there's not a standard
defined ABI, so a module made in one C++ compiler is almost for sure
going to be incompatible with a module made by another C++ compiler. For
making bindings to a C++ module, you have to first make C bindings to
that module, compile those bindings with the same compiler that was used
for the original module and then you can start making NativeBoost
bindings. This is the only portable way for C++.
For example, gcc
and Microsoft Visual C++ compilers are completely incompatible for C++,
but for C they can interact. Clang is apparently designed to use the
same ABI as gcc, so maybe it could be used in Linux, Mac but not for a
closed source library in Window.
What SWIG does is
generating the C bindings and Smalltalk code that calls the C bindings
ready to be filed in. In addition, you can add extra code to the
bindings to make things that hard to do using directly NativeBoost but
can be easy to do with an intermediate function in C, for example
messing with some unions and things that required lot of pointer
arithmetic, that could be used maybe for a bad written library that some
project needs.
P.S I have yet to make an example. When I add some documentation, which is required to be able to integrate into the main SWIG distribution, I will post a new message to the list.