summaryrefslogtreecommitdiff
path: root/Examples/test-suite/li_typemaps_apply.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/li_typemaps_apply.i')
-rw-r--r--Examples/test-suite/li_typemaps_apply.i46
1 files changed, 46 insertions, 0 deletions
diff --git a/Examples/test-suite/li_typemaps_apply.i b/Examples/test-suite/li_typemaps_apply.i
new file mode 100644
index 000000000..ecb3f87b6
--- /dev/null
+++ b/Examples/test-suite/li_typemaps_apply.i
@@ -0,0 +1,46 @@
+%module li_typemaps_apply
+
+// Test %apply to global primitive type references/pointers to make sure the return types are still okay... mainly for the strongly typed languages.
+
+%include "typemaps.i"
+
+#if !defined(SWIGJAVA) // Needs asymmetric type marshalling support for this testcase to work
+
+%define TMAPS(PRIMTYPE, NAME)
+%apply PRIMTYPE *INPUT { PRIMTYPE * }
+%apply PRIMTYPE &INPUT { PRIMTYPE & }
+%inline %{
+PRIMTYPE *input_ptr_##NAME(PRIMTYPE *v) { static PRIMTYPE stat; stat = *v; return &stat; }
+PRIMTYPE &input_ref_##NAME(PRIMTYPE &v) { static PRIMTYPE stat; stat = v; return stat; }
+%}
+
+%apply PRIMTYPE *OUTPUT { PRIMTYPE * }
+%apply PRIMTYPE &OUTPUT { PRIMTYPE & }
+%inline %{
+PRIMTYPE *output_ptr_##NAME(PRIMTYPE x, PRIMTYPE *v) { static PRIMTYPE stat; stat = x; *v = x; return &stat; }
+PRIMTYPE &output_ref_##NAME(PRIMTYPE x, PRIMTYPE &v) { static PRIMTYPE stat; stat = x; v = x; return stat; }
+%}
+
+%apply PRIMTYPE *INOUT { PRIMTYPE * }
+%apply PRIMTYPE &INOUT { PRIMTYPE & }
+%inline %{
+PRIMTYPE *inout_ptr_##NAME(PRIMTYPE *v) { static PRIMTYPE stat; stat = *v; *v = *v; return &stat; }
+PRIMTYPE &inout_ref_##NAME(PRIMTYPE &v) { static PRIMTYPE stat; stat = v; v = v; return stat; }
+%}
+%enddef
+
+TMAPS(bool, bool)
+TMAPS(int, int)
+TMAPS(short, short)
+TMAPS(long, long)
+TMAPS(unsigned int, uint)
+TMAPS(unsigned short, ushort)
+TMAPS(unsigned long, ulong)
+TMAPS(unsigned char, uchar)
+TMAPS(signed char, schar)
+TMAPS(float, float)
+TMAPS(double, double)
+TMAPS(long long, longlong)
+TMAPS(unsigned long long, ulonglong)
+
+#endif