mirror of https://github.com/swig/swig
31 lines
661 B
OpenEdge ABL
31 lines
661 B
OpenEdge ABL
// Tests SWIG's handling of pass-by-value for complex datatypes
|
|
%module example
|
|
|
|
%{
|
|
#include "example.h"
|
|
%}
|
|
|
|
/* Some functions that manipulate Vectors by value */
|
|
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 %x = (%g, %g, %g)\n", v, v->x, v->y, v->z);
|
|
}
|
|
%}
|
|
|