swig/Examples/octave/operator/example.i
Karl Wette 125329466d octave: map unary functions to __...___ Python-style unary members
- Only available in Octave 3.8.0 and higher
2016-02-07 20:22:39 +01:00

50 lines
1.1 KiB
OpenEdge ABL

/* 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()));
}
};