/* File : example.i */ %module example #pragma SWIG nowarn=SWIGWARN_IGNORE_OPERATOR_EQ %{ #include "example.h" %} /* This header file is a little tough to handle because it has overloaded operators and constructors. We're going to try and deal with that here */ /* This turns the copy constructor in a function ComplexCopy() that can be called */ %rename(assign) Complex::operator=; %rename(plus) Complex::operator+; %rename(minus) Complex::operator-(const Complex &) const; %rename(uminus) Complex::operator-() const; %rename(times) Complex::operator*; /* Now grab the original header file */ %include "example.h" /* An output method that turns a complex into a short string */ %extend Complex { char *toString() { static char temp[512]; sprintf(temp,"(%g,%g)", $self->re(), $self->im()); return temp; } static Complex* copy(const Complex& c) { return new Complex(c); } };