diff options
Diffstat (limited to 'Examples/test-suite')
-rw-r--r-- | Examples/test-suite/java/template_function_parm_runme.java | 25 | ||||
-rw-r--r-- | Examples/test-suite/template_function_parm.i | 28 |
2 files changed, 53 insertions, 0 deletions
diff --git a/Examples/test-suite/java/template_function_parm_runme.java b/Examples/test-suite/java/template_function_parm_runme.java new file mode 100644 index 000000000..3c8f3d1a9 --- /dev/null +++ b/Examples/test-suite/java/template_function_parm_runme.java @@ -0,0 +1,25 @@ +import template_function_parm.*; + +public class template_function_parm_runme { + + static { + try { + System.loadLibrary("template_function_parm"); + } catch (UnsatisfiedLinkError e) { + System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e); + System.exit(1); + } + } + + public static void main(String argv[]) { + VectorInt vi = new VectorInt(); + vi.add(10); + vi.add(20); + vi.add(30); + + MyC myc = new MyC(); + int sum = myc.take_function(template_function_parmConstants.accumulate_integers, vi); + if (sum != 60) + throw new RuntimeException("Expected sum of 60, got " + sum); + } +} diff --git a/Examples/test-suite/template_function_parm.i b/Examples/test-suite/template_function_parm.i new file mode 100644 index 000000000..3dc011b67 --- /dev/null +++ b/Examples/test-suite/template_function_parm.i @@ -0,0 +1,28 @@ +%module template_function_parm + +%include <std_vector.i> + +%{ +#include <numeric> +static int accumulate_integers(std::vector<int> vi) { + int sum = std::accumulate(vi.begin(), vi.end(), 0); + return sum; +} +%} + +%inline %{ +template<typename A> +struct C { + int take_function(int fp(std::vector<int>), std::vector<int> v) { + return fp(v); + } +}; +%} + +%constant int accumulate_integers(std::vector<int>); + +%template(VectorInt) std::vector<int>; + +// seg fault #983 +%template(MyC) C<int(std::vector<int>)>; + |