summaryrefslogtreecommitdiff
path: root/Examples/test-suite/java/director_pass_by_value_runme.java
diff options
context:
space:
mode:
authorJoel Andersson <j.a.e.andersson@gmail.com>2016-07-02 19:05:42 -0500
committerJoel Andersson <j.a.e.andersson@gmail.com>2016-07-02 19:05:42 -0500
commit3703053cbe25655e3e20d7ddc0f621c3e7c6d47d (patch)
treed0b57df47e258ff9ff3d976c20630af91c3d4010 /Examples/test-suite/java/director_pass_by_value_runme.java
parentb5e75d1891a64000508b511e220483b0547f5428 (diff)
parent36bbeb478dfcecc7739284cd454ada8b4cb96333 (diff)
downloadswig-3703053cbe25655e3e20d7ddc0f621c3e7c6d47d.tar.gz
Merge branch 'master' of https://github.com/swig/swig into matlab
Diffstat (limited to 'Examples/test-suite/java/director_pass_by_value_runme.java')
-rw-r--r--Examples/test-suite/java/director_pass_by_value_runme.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/Examples/test-suite/java/director_pass_by_value_runme.java b/Examples/test-suite/java/director_pass_by_value_runme.java
new file mode 100644
index 000000000..24ded2ccf
--- /dev/null
+++ b/Examples/test-suite/java/director_pass_by_value_runme.java
@@ -0,0 +1,48 @@
+
+import director_pass_by_value.*;
+
+public class director_pass_by_value_runme {
+
+ static {
+ try {
+ System.loadLibrary("director_pass_by_value");
+ } 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);
+ }
+ }
+
+ private static void WaitForGC() {
+ System.gc();
+ System.runFinalization();
+ try {
+ java.lang.Thread.sleep(10);
+ } catch (java.lang.InterruptedException e) {
+ }
+ }
+
+ public static void main(String argv[]) {
+ Caller caller = new Caller();
+ caller.call_virtualMethod(new director_pass_by_value_Derived());
+ {
+ int countdown = 5;
+ while (true) {
+ WaitForGC();
+ if (--countdown == 0)
+ break;
+ };
+ }
+ // bug was the passByVal 'global' object was destroyed after the call to virtualMethod had finished.
+ int ret = director_pass_by_value_runme.passByVal.getVal();
+ if (ret != 0x12345678)
+ throw new RuntimeException("Bad return value, got " + Integer.toHexString(ret));
+ }
+
+ static PassedByValue passByVal;
+}
+
+class director_pass_by_value_Derived extends DirectorPassByValueAbstractBase {
+ public void virtualMethod(PassedByValue pbv) {
+ director_pass_by_value_runme.passByVal = pbv;
+ }
+}