| /* File : example.i */ |
| %module swigexample |
| |
| %feature("autodoc", 1); |
| |
| #pragma SWIG nowarn=SWIGWARN_IGNORE_OPERATOR_EQ |
| |
| %{ |
| #include "example.h" |
| %} |
| |
| /* Rename friend operator */ |
| %rename(op_scalar_mul_ComplexVal) operator*(const double&, const ComplexVal&); |
| |
| /* Now grab the original header file */ |
| %include "example.h" |
| |
| /* An output method that turns a complex into a short string */ |
| %extend ComplexVal { |
| char *__str__() { |
| static char temp[512]; |
| sprintf(temp,"(%g,%g)", $self->re(), $self->im()); |
| return temp; |
| } |
| |
| ComplexVal __paren__(int j) { |
| return ComplexVal($self->re()*j,$self->im()*j); |
| } |
| |
| double __float__() { |
| return (double) $self->re(); |
| } |
| |
| double __real__() { |
| return $self->re(); |
| } |
| double __imag__() { |
| return $self->im(); |
| } |
| double __abs__() { |
| return sqrt($self->re()*$self->re() + $self->im()*$self->im()); |
| } |
| ComplexVal __conj__() { |
| return ComplexVal($self->re(), -$self->im()); |
| } |
| ComplexVal __exp__() { |
| return exp($self->re()) * ComplexVal(cos($self->im()), sin($self->im())); |
| } |
| |
| }; |