diff options
Diffstat (limited to 'Examples/test-suite/pointer_in_out.i')
| -rw-r--r-- | Examples/test-suite/pointer_in_out.i | 35 |
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)++; +} + +%} |
