diff options
Diffstat (limited to 'trunk/Examples/perl5/value/example.i')
-rw-r--r-- | trunk/Examples/perl5/value/example.i | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/trunk/Examples/perl5/value/example.i b/trunk/Examples/perl5/value/example.i new file mode 100644 index 000000000..98fd60ed5 --- /dev/null +++ b/trunk/Examples/perl5/value/example.i @@ -0,0 +1,32 @@ +// Tests SWIG's handling of pass-by-value for complex datatypes +%module example + +%{ +#include "example.h" +%} + +/* Some functions that manipulate Vectors by value */ +%inline %{ +extern double dot_product(Vector a, Vector b); +extern Vector vector_add(Vector a, Vector b); +%} + +/* Include this because the vector_add() function will leak memory */ +void free(void *); + +/* Some helper functions for our interface */ +%inline %{ + +Vector *new_Vector(double x, double y, double z) { + Vector *v = (Vector *) malloc(sizeof(Vector)); + v->x = x; + v->y = y; + v->z = z; + return v; +} + +void vector_print(Vector *v) { + printf("Vector %p = (%g, %g, %g)\n", v, v->x, v->y, v->z); +} +%} + |