summaryrefslogtreecommitdiff
path: root/Examples/test-suite/pointer_in_out.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/pointer_in_out.i')
-rw-r--r--Examples/test-suite/pointer_in_out.i35
1 files changed, 35 insertions, 0 deletions
diff --git a/Examples/test-suite/pointer_in_out.i b/Examples/test-suite/pointer_in_out.i
new file mode 100644
index 0000000..f4b1ed4
--- /dev/null
+++ b/Examples/test-suite/pointer_in_out.i
@@ -0,0 +1,35 @@
+/* This file tests the pointer-in-out typemap library,
+ currently only available for Guile. */
+
+%module pointer_in_out
+
+%include "pointer-in-out.i"
+
+TYPEMAP_POINTER_INPUT_OUTPUT(int *, int-pointer);
+
+int consume_int_pointer(int **INPUT);
+void produce_int_pointer(int **OUTPUT, int value1, int value2);
+void frobnicate_int_pointer(int **INOUT);
+
+%{
+
+int consume_int_pointer(int **INPUT)
+{
+ return **INPUT;
+}
+
+void produce_int_pointer(int **OUTPUT, int value1, int value2)
+{
+ int *foo = malloc(2 * sizeof(int));
+ foo[0] = value1;
+ foo[1] = value2;
+ *OUTPUT = foo;
+}
+
+void frobnicate_int_pointer(int **INOUT)
+{
+ /* advance the pointer */
+ (*INOUT)++;
+}
+
+%}