diff options
author | Joel Andersson <j.a.e.andersson@gmail.com> | 2016-07-02 19:05:42 -0500 |
---|---|---|
committer | Joel Andersson <j.a.e.andersson@gmail.com> | 2016-07-02 19:05:42 -0500 |
commit | 3703053cbe25655e3e20d7ddc0f621c3e7c6d47d (patch) | |
tree | d0b57df47e258ff9ff3d976c20630af91c3d4010 /Examples/test-suite/java/director_pass_by_value_runme.java | |
parent | b5e75d1891a64000508b511e220483b0547f5428 (diff) | |
parent | 36bbeb478dfcecc7739284cd454ada8b4cb96333 (diff) | |
download | swig-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.java | 48 |
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; + } +} |