summaryrefslogtreecommitdiff
path: root/trunk/Examples/perl5/value/example.i
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2010-06-02 20:53:17 +0000
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2010-06-02 20:53:17 +0000
commit2824b0cbb66e715490e1ef13250bd675d87b32d9 (patch)
treec3bc8d54c6d73f2b7ce08cac34172dbc9f5e5b95 /trunk/Examples/perl5/value/example.i
parent289cfef4b4766ff266f3b1bdda8ca3a952e5a047 (diff)
downloadswig-2.0.0.tar.gz
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/tags/rel-2.0.0@12089 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'trunk/Examples/perl5/value/example.i')
-rw-r--r--trunk/Examples/perl5/value/example.i32
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);
+}
+%}
+