50 lines
1.1 KiB
OpenEdge ABL
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()));
|
|
}
|
|
|
|
};
|