diff options
Diffstat (limited to 'src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java')
-rw-r--r-- | src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java | 404 |
1 files changed, 393 insertions, 11 deletions
diff --git a/src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java b/src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java index e80be6f..e43d73e 100644 --- a/src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java +++ b/src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java @@ -31,6 +31,7 @@ package com.jogamp.gluegen.test.junit.generation; import java.io.IOException; import com.jogamp.common.os.NativeLibrary; +import com.jogamp.gluegen.test.junit.generation.Bindingtest2.ALBUFFERCALLBACKTYPESOFT; import com.jogamp.gluegen.test.junit.generation.Bindingtest2.T2_CallbackFunc01; import com.jogamp.gluegen.test.junit.generation.impl.Bindingtest2Impl; @@ -83,30 +84,30 @@ public class Test4JavaCallback extends BaseClass { final T2_CallbackFunc01 myCallback01 = new T2_CallbackFunc01() { @Override public void callback(final long id, final String msg, final Object userParam) { - final MyUserParam myUserParam = (MyUserParam)userParam; + final MyUserParam01 myUserParam = (MyUserParam01)userParam; id_res[0] = id + myUserParam.i; msg_res[0] = msg; myUserParam.j += id_res[0]; - System.err.println("chapter10.myCallback01: "+id+", '"+msg+"'"); + System.err.println("chapter01.myCallback01: "+id+", '"+msg+"'"); } }; final T2_CallbackFunc01 myCallback02 = new T2_CallbackFunc01() { @Override public void callback(final long id, final String msg, final Object userParam) { - final MyUserParam myUserParam = (MyUserParam)userParam; + final MyUserParam01 myUserParam = (MyUserParam01)userParam; id_res[0] = id; msg_res[0] = msg; myUserParam.j += id_res[0]; - System.err.println("chapter10.myCallback02: "+id+", '"+msg+"'"); + System.err.println("chapter01.myCallback02: "+id+", '"+msg+"'"); } }; - final MyUserParam myUserParam01 = new MyUserParam(10); + final MyUserParam01 myUserParam01 = new MyUserParam01(10); Assert.assertEquals(10, myUserParam01.i); Assert.assertEquals( 0, myUserParam01.j); - Assert.assertEquals(false, bt2.isMessageCallback01Mapped(myUserParam01)); + Assert.assertEquals(false, bt2.isMessageCallback01Mapped()); bt2.MessageCallback01(myCallback01, myUserParam01); - Assert.assertEquals(true, bt2.isMessageCallback01Mapped(myUserParam01)); + Assert.assertEquals(true, bt2.isMessageCallback01Mapped()); Assert.assertEquals(-1, id_res[0]); Assert.assertEquals(null, msg_res[0]); Assert.assertEquals(10, myUserParam01.i); @@ -132,7 +133,7 @@ public class Test4JavaCallback extends BaseClass { // Switch the callback function // The previously mapped myUserParam01 gets released and remapped to new callback bt2.MessageCallback01(myCallback02, myUserParam01); - Assert.assertEquals(true, bt2.isMessageCallback01Mapped(myUserParam01)); + Assert.assertEquals(true, bt2.isMessageCallback01Mapped()); Assert.assertEquals( 42+10, id_res[0]); Assert.assertEquals( msgNo2, msg_res[0]); Assert.assertEquals( 10, myUserParam01.i); @@ -149,7 +150,7 @@ public class Test4JavaCallback extends BaseClass { // Just release the callback and mapped myUserParam01 bt2.MessageCallback01(null, myUserParam01); - Assert.assertEquals(false, bt2.isMessageCallback01Mapped(myUserParam01)); + Assert.assertEquals(false, bt2.isMessageCallback01Mapped()); { final String msgNo4 = "My Fourth JavaCallback message"; bt2.InjectMessageCallback01( 21, msgNo4); @@ -160,11 +161,392 @@ public class Test4JavaCallback extends BaseClass { Assert.assertEquals(1+42+10+404+10, myUserParam01.j); } } - private static class MyUserParam { + private static class MyUserParam01 { final long i; long j; - public MyUserParam(final long i) { this.i = i; j=0; } + public MyUserParam01(final long i) { this.i = i; j=0; } + + @Override + public boolean equals(final Object o) { + if( this == o ) { + return true; + } + if( !(o instanceof MyUserParam01) ) { + return false; + } + return false; // we require identity! + } + @Override + public int hashCode() { + return System.identityHashCode(this); // we require identity! + } + } + + /** + * Test Bindingtest2 with ALBUFFERCALLBACKTYPESOFT JavaCallback via alBufferCallback1() + * using the default AlBufferCallback1Key class. + */ + @Test + public void chapter02() throws Exception { + final Bindingtest2 bt2 = new Bindingtest2Impl(); + + final long[] id_res = { -1 }; + final ALBUFFERCALLBACKTYPESOFT myCallback01 = new ALBUFFERCALLBACKTYPESOFT() { + @Override + public void callback(final int buffer, final Object userptr, final int sampledata, final int numbytes) { + final MyUserParam02 myUserParam = (MyUserParam02)userptr; + id_res[0] = sampledata + numbytes + myUserParam.i; + myUserParam.j = id_res[0]; + myUserParam.buffer = buffer; + System.err.println("chapter02.myCallback01: buffer "+buffer+", sampledata "+sampledata+", numbytes "+numbytes); + } + }; + final ALBUFFERCALLBACKTYPESOFT myCallback02 = new ALBUFFERCALLBACKTYPESOFT() { + @Override + public void callback(final int buffer, final Object userptr, final int sampledata, final int numbytes) { + final MyUserParam02 myUserParam = (MyUserParam02)userptr; + id_res[0] = sampledata * numbytes + myUserParam.i; + myUserParam.j = id_res[0]; + myUserParam.buffer = buffer; + System.err.println("chapter02.myCallback02: buffer "+buffer+", sampledata "+sampledata+", numbytes "+numbytes); + } + }; + final int buffer1 = 1; + final int buffer2 = 2; + final int buffer3 = 3; + final MyUserParam02 myUserParam01 = new MyUserParam02( 1); + final MyUserParam02 myUserParam02 = new MyUserParam02( 2); + Assert.assertEquals( 1, myUserParam01.i); + Assert.assertEquals( 0, myUserParam01.j); + Assert.assertEquals( 0, myUserParam01.buffer); + Assert.assertEquals( 2, myUserParam02.i); + Assert.assertEquals( 0, myUserParam02.j); + Assert.assertEquals( 0, myUserParam02.buffer); + + Assert.assertEquals(false, bt2.isAlBufferCallback0Mapped(buffer1)); + Assert.assertEquals(false, bt2.isAlBufferCallback0Mapped(buffer2)); + Assert.assertEquals(false, bt2.isAlBufferCallback0Mapped(buffer3)); + + // 1st mapping: buffer1 -> myCallback01, myUserParam01 + bt2.alBufferCallback0(buffer1, 0, 0, myCallback01, myUserParam01); + Assert.assertEquals(true, bt2.isAlBufferCallback0Mapped(buffer1)); + Assert.assertEquals(false, bt2.isAlBufferCallback0Mapped(buffer2)); + Assert.assertEquals(false, bt2.isAlBufferCallback0Mapped(buffer3)); + Assert.assertEquals(myUserParam01, bt2.getAlBufferCallback0UserParam(buffer1)); + Assert.assertEquals(null, bt2.getAlBufferCallback0UserParam(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback0UserParam(buffer3)); + Assert.assertEquals(myCallback01, bt2.getAlBufferCallback0(buffer1)); + Assert.assertEquals(null, bt2.getAlBufferCallback0(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback0(buffer3)); + + // 2nd mapping: buffer2 -> myCallback02, myUserParam02 + bt2.alBufferCallback0(buffer2, 0, 0, myCallback02, myUserParam02); + Assert.assertEquals(true, bt2.isAlBufferCallback0Mapped(buffer1)); + Assert.assertEquals(true, bt2.isAlBufferCallback0Mapped(buffer2)); + Assert.assertEquals(false, bt2.isAlBufferCallback0Mapped(buffer3)); + Assert.assertEquals(myUserParam01, bt2.getAlBufferCallback0UserParam(buffer1)); + Assert.assertEquals(myUserParam02, bt2.getAlBufferCallback0UserParam(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback0UserParam(buffer3)); + Assert.assertEquals(myCallback01, bt2.getAlBufferCallback0(buffer1)); + Assert.assertEquals(myCallback02, bt2.getAlBufferCallback0(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback0(buffer3)); + + { + bt2.alBufferCallback0Inject(buffer1, 10, 100); // buffer1 -> myCallback01, myUserParam01 + Assert.assertEquals(10+100+1, id_res[0]); + Assert.assertEquals( 1, myUserParam01.i); + Assert.assertEquals(10+100+1, myUserParam01.j); + Assert.assertEquals( 1, myUserParam01.buffer); + Assert.assertEquals( 2, myUserParam02.i); + Assert.assertEquals( 0, myUserParam02.j); + Assert.assertEquals( 0, myUserParam02.buffer); + } + { + bt2.alBufferCallback0Inject(buffer2, 10, 100); // buffer2 -> myCallback02, myUserParam02 + Assert.assertEquals(10*100+2, id_res[0]); + Assert.assertEquals( 1, myUserParam01.i); + Assert.assertEquals(10+100+1, myUserParam01.j); + Assert.assertEquals( 1, myUserParam01.buffer); + Assert.assertEquals( 2, myUserParam02.i); + Assert.assertEquals(10*100+2, myUserParam02.j); + Assert.assertEquals( 2, myUserParam02.buffer); + } + + // Switch the callback function for buffer2 -> myCallback01, myUserParam02 + bt2.alBufferCallback0(buffer2, 0, 0, myCallback01, myUserParam02); + Assert.assertEquals(true, bt2.isAlBufferCallback0Mapped(buffer1)); + Assert.assertEquals(true, bt2.isAlBufferCallback0Mapped(buffer2)); + Assert.assertEquals(false, bt2.isAlBufferCallback0Mapped(buffer3)); + Assert.assertEquals(myUserParam01, bt2.getAlBufferCallback0UserParam(buffer1)); + Assert.assertEquals(myUserParam02, bt2.getAlBufferCallback0UserParam(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback0UserParam(buffer3)); + Assert.assertEquals(myCallback01, bt2.getAlBufferCallback0(buffer1)); + Assert.assertEquals(myCallback01, bt2.getAlBufferCallback0(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback0(buffer3)); + + { + bt2.alBufferCallback0Inject(buffer1, 11, 101); // buffer1 -> myCallback01, myUserParam01 + Assert.assertEquals(11+101+1, id_res[0]); + Assert.assertEquals( 1, myUserParam01.i); + Assert.assertEquals(11+101+1, myUserParam01.j); + Assert.assertEquals( 1, myUserParam01.buffer); + Assert.assertEquals( 2, myUserParam02.i); + Assert.assertEquals(10*100+2, myUserParam02.j); + Assert.assertEquals( 2, myUserParam02.buffer); + } + { + bt2.alBufferCallback0Inject(buffer2, 1, 10); // buffer2 -> myCallback01, myUserParam02 + Assert.assertEquals( 1+ 10+2, id_res[0]); + Assert.assertEquals( 1, myUserParam01.i); + Assert.assertEquals(11+101+1, myUserParam01.j); + Assert.assertEquals( 1, myUserParam01.buffer); + Assert.assertEquals( 2, myUserParam02.i); + Assert.assertEquals( 1+ 10+2, myUserParam02.j); + Assert.assertEquals( 2, myUserParam02.buffer); + } + + // Just release the buffer2 callback and mapped resources + bt2.alBufferCallback0(buffer2, 0, 0, null, myUserParam02); // usrptr is not key, only buffer is key! + Assert.assertEquals(true, bt2.isAlBufferCallback0Mapped(buffer1)); + Assert.assertEquals(false, bt2.isAlBufferCallback0Mapped(buffer2)); + Assert.assertEquals(false, bt2.isAlBufferCallback0Mapped(buffer3)); + Assert.assertEquals(myUserParam01, bt2.getAlBufferCallback0UserParam(buffer1)); + Assert.assertEquals(null, bt2.getAlBufferCallback0UserParam(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback0UserParam(buffer3)); + Assert.assertEquals(myCallback01, bt2.getAlBufferCallback0(buffer1)); + Assert.assertEquals(null, bt2.getAlBufferCallback0(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback0(buffer3)); + + // Just release the buffer1 callback and mapped resources + bt2.alBufferCallback0(buffer1, 0, 0, null, null); // usrptr is not key, only buffer is key! + Assert.assertEquals(false, bt2.isAlBufferCallback0Mapped(buffer1)); + Assert.assertEquals(false, bt2.isAlBufferCallback0Mapped(buffer2)); + Assert.assertEquals(false, bt2.isAlBufferCallback0Mapped(buffer3)); + Assert.assertEquals(null, bt2.getAlBufferCallback0UserParam(buffer1)); + Assert.assertEquals(null, bt2.getAlBufferCallback0UserParam(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback0UserParam(buffer3)); + Assert.assertEquals(null, bt2.getAlBufferCallback0(buffer1)); + Assert.assertEquals(null, bt2.getAlBufferCallback0(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback0(buffer3)); + + { + bt2.alBufferCallback0Inject(buffer2, 1, 10); // unmapped, no change in data + Assert.assertEquals( 1+ 10+2, id_res[0]); + Assert.assertEquals( 1, myUserParam01.i); + Assert.assertEquals(11+101+1, myUserParam01.j); + Assert.assertEquals( 1, myUserParam01.buffer); + Assert.assertEquals( 2, myUserParam02.i); + Assert.assertEquals( 1+ 10+2, myUserParam02.j); + Assert.assertEquals( 2, myUserParam02.buffer); + } + } + + /** + * Test Bindingtest2 with ALBUFFERCALLBACKTYPESOFT JavaCallback via alBufferCallback1() + * using our custom CustomAlBufferCallback1Key class. + */ + @Test + public void chapter03() throws Exception { + final Bindingtest2 bt2 = new Bindingtest2Impl(); + + final long[] id_res = { -1 }; + final ALBUFFERCALLBACKTYPESOFT myCallback01 = new ALBUFFERCALLBACKTYPESOFT() { + @Override + public void callback(final int buffer, final Object userptr, final int sampledata, final int numbytes) { + final MyUserParam02 myUserParam = (MyUserParam02)userptr; + id_res[0] = sampledata + numbytes + myUserParam.i; + myUserParam.j = id_res[0]; + myUserParam.buffer = buffer; + System.err.println("chapter03.myCallback01: buffer "+buffer+", sampledata "+sampledata+", numbytes "+numbytes); + } + }; + final ALBUFFERCALLBACKTYPESOFT myCallback02 = new ALBUFFERCALLBACKTYPESOFT() { + @Override + public void callback(final int buffer, final Object userptr, final int sampledata, final int numbytes) { + final MyUserParam02 myUserParam = (MyUserParam02)userptr; + id_res[0] = sampledata * numbytes + myUserParam.i; + myUserParam.j = id_res[0]; + myUserParam.buffer = buffer; + System.err.println("chapter03.myCallback02: buffer "+buffer+", sampledata "+sampledata+", numbytes "+numbytes); + } + }; + final int buffer1 = 1; + final int buffer2 = 2; + final int buffer3 = 3; + final MyUserParam02 myUserParam01 = new MyUserParam02( 1); + final MyUserParam02 myUserParam02 = new MyUserParam02( 2); + Assert.assertEquals( 1, myUserParam01.i); + Assert.assertEquals( 0, myUserParam01.j); + Assert.assertEquals( 0, myUserParam01.buffer); + Assert.assertEquals( 2, myUserParam02.i); + Assert.assertEquals( 0, myUserParam02.j); + Assert.assertEquals( 0, myUserParam02.buffer); + + Assert.assertEquals(false, bt2.isAlBufferCallback1Mapped(buffer1)); + Assert.assertEquals(false, bt2.isAlBufferCallback1Mapped(buffer2)); + Assert.assertEquals(false, bt2.isAlBufferCallback1Mapped(buffer3)); + + // 1st mapping: buffer1 -> myCallback01, myUserParam01 + bt2.alBufferCallback1(buffer1, 0, 0, myCallback01, myUserParam01); + Assert.assertEquals(true, bt2.isAlBufferCallback1Mapped(buffer1)); + Assert.assertEquals(false, bt2.isAlBufferCallback1Mapped(buffer2)); + Assert.assertEquals(false, bt2.isAlBufferCallback1Mapped(buffer3)); + Assert.assertEquals(myUserParam01, bt2.getAlBufferCallback1UserParam(buffer1)); + Assert.assertEquals(null, bt2.getAlBufferCallback1UserParam(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback1UserParam(buffer3)); + Assert.assertEquals(myCallback01, bt2.getAlBufferCallback1(buffer1)); + Assert.assertEquals(null, bt2.getAlBufferCallback1(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback1(buffer3)); + + // 2nd mapping: buffer2 -> myCallback02, myUserParam02 + bt2.alBufferCallback1(buffer2, 0, 0, myCallback02, myUserParam02); + Assert.assertEquals(true, bt2.isAlBufferCallback1Mapped(buffer1)); + Assert.assertEquals(true, bt2.isAlBufferCallback1Mapped(buffer2)); + Assert.assertEquals(false, bt2.isAlBufferCallback1Mapped(buffer3)); + Assert.assertEquals(myUserParam01, bt2.getAlBufferCallback1UserParam(buffer1)); + Assert.assertEquals(myUserParam02, bt2.getAlBufferCallback1UserParam(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback1UserParam(buffer3)); + Assert.assertEquals(myCallback01, bt2.getAlBufferCallback1(buffer1)); + Assert.assertEquals(myCallback02, bt2.getAlBufferCallback1(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback1(buffer3)); + + { + bt2.alBufferCallback1Inject(buffer1, 10, 100); // buffer1 -> myCallback01, myUserParam01 + Assert.assertEquals(10+100+1, id_res[0]); + Assert.assertEquals( 1, myUserParam01.i); + Assert.assertEquals(10+100+1, myUserParam01.j); + Assert.assertEquals( 1, myUserParam01.buffer); + Assert.assertEquals( 2, myUserParam02.i); + Assert.assertEquals( 0, myUserParam02.j); + Assert.assertEquals( 0, myUserParam02.buffer); + } + { + bt2.alBufferCallback1Inject(buffer2, 10, 100); // buffer2 -> myCallback02, myUserParam02 + Assert.assertEquals(10*100+2, id_res[0]); + Assert.assertEquals( 1, myUserParam01.i); + Assert.assertEquals(10+100+1, myUserParam01.j); + Assert.assertEquals( 1, myUserParam01.buffer); + Assert.assertEquals( 2, myUserParam02.i); + Assert.assertEquals(10*100+2, myUserParam02.j); + Assert.assertEquals( 2, myUserParam02.buffer); + } + + // Switch the callback function for buffer2 -> myCallback01, myUserParam02 + bt2.alBufferCallback1(buffer2, 0, 0, myCallback01, myUserParam02); + Assert.assertEquals(true, bt2.isAlBufferCallback1Mapped(buffer1)); + Assert.assertEquals(true, bt2.isAlBufferCallback1Mapped(buffer2)); + Assert.assertEquals(false, bt2.isAlBufferCallback1Mapped(buffer3)); + Assert.assertEquals(myUserParam01, bt2.getAlBufferCallback1UserParam(buffer1)); + Assert.assertEquals(myUserParam02, bt2.getAlBufferCallback1UserParam(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback1UserParam(buffer3)); + Assert.assertEquals(myCallback01, bt2.getAlBufferCallback1(buffer1)); + Assert.assertEquals(myCallback01, bt2.getAlBufferCallback1(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback1(buffer3)); + + { + bt2.alBufferCallback1Inject(buffer1, 11, 101); // buffer1 -> myCallback01, myUserParam01 + Assert.assertEquals(11+101+1, id_res[0]); + Assert.assertEquals( 1, myUserParam01.i); + Assert.assertEquals(11+101+1, myUserParam01.j); + Assert.assertEquals( 1, myUserParam01.buffer); + Assert.assertEquals( 2, myUserParam02.i); + Assert.assertEquals(10*100+2, myUserParam02.j); + Assert.assertEquals( 2, myUserParam02.buffer); + } + { + bt2.alBufferCallback1Inject(buffer2, 1, 10); // buffer2 -> myCallback01, myUserParam02 + Assert.assertEquals( 1+ 10+2, id_res[0]); + Assert.assertEquals( 1, myUserParam01.i); + Assert.assertEquals(11+101+1, myUserParam01.j); + Assert.assertEquals( 1, myUserParam01.buffer); + Assert.assertEquals( 2, myUserParam02.i); + Assert.assertEquals( 1+ 10+2, myUserParam02.j); + Assert.assertEquals( 2, myUserParam02.buffer); + } + + // Just release the buffer2 callback and mapped resources + bt2.alBufferCallback1(buffer2, 0, 0, null, myUserParam02); // usrptr is not key, only buffer is key! + Assert.assertEquals(true, bt2.isAlBufferCallback1Mapped(buffer1)); + Assert.assertEquals(false, bt2.isAlBufferCallback1Mapped(buffer2)); + Assert.assertEquals(false, bt2.isAlBufferCallback1Mapped(buffer3)); + Assert.assertEquals(myUserParam01, bt2.getAlBufferCallback1UserParam(buffer1)); + Assert.assertEquals(null, bt2.getAlBufferCallback1UserParam(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback1UserParam(buffer3)); + Assert.assertEquals(myCallback01, bt2.getAlBufferCallback1(buffer1)); + Assert.assertEquals(null, bt2.getAlBufferCallback1(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback1(buffer3)); + + // Just release the buffer1 callback and mapped resources + bt2.alBufferCallback1(buffer1, 0, 0, null, null); // usrptr is not key, only buffer is key! + Assert.assertEquals(false, bt2.isAlBufferCallback1Mapped(buffer1)); + Assert.assertEquals(false, bt2.isAlBufferCallback1Mapped(buffer2)); + Assert.assertEquals(false, bt2.isAlBufferCallback1Mapped(buffer3)); + Assert.assertEquals(null, bt2.getAlBufferCallback1UserParam(buffer1)); + Assert.assertEquals(null, bt2.getAlBufferCallback1UserParam(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback1UserParam(buffer3)); + Assert.assertEquals(null, bt2.getAlBufferCallback1(buffer1)); + Assert.assertEquals(null, bt2.getAlBufferCallback1(buffer2)); + Assert.assertEquals(null, bt2.getAlBufferCallback1(buffer3)); + + { + bt2.alBufferCallback1Inject(buffer2, 1, 10); // unmapped, no change in data + Assert.assertEquals( 1+ 10+2, id_res[0]); + Assert.assertEquals( 1, myUserParam01.i); + Assert.assertEquals(11+101+1, myUserParam01.j); + Assert.assertEquals( 1, myUserParam01.buffer); + Assert.assertEquals( 2, myUserParam02.i); + Assert.assertEquals( 1+ 10+2, myUserParam02.j); + Assert.assertEquals( 2, myUserParam02.buffer); + } + } + private static class MyUserParam02 { + final long i; + long j; + int buffer; + public MyUserParam02(final long i) { this.i = i; j=0; buffer=0; } + + @Override + public boolean equals(final Object o) { + if( this == o ) { + return true; + } + if( !(o instanceof MyUserParam02) ) { + return false; + } + return false; // we require identity! + } + @Override + public int hashCode() { + return System.identityHashCode(this); // we require identity! + } + } + + public static class CustomAlBufferCallback1Key { + private final int buffer; + public CustomAlBufferCallback1Key(final int buffer) { + this.buffer = buffer; + } + @Override + public boolean equals(final Object o) { + if( this == o ) { + return true; + } + if( !(o instanceof CustomAlBufferCallback1Key) ) { + return false; + } + final CustomAlBufferCallback1Key o2 = (CustomAlBufferCallback1Key)o; + return buffer == o2.buffer; + } + @Override + public int hashCode() { + return buffer; + } + @Override + public String toString() { + return "CustomALKey[this "+toHexString(System.identityHashCode(this))+", buffer "+buffer+"]"; + } } + static private String toHexString(final int v) { return "0x"+Integer.toHexString(v); } public static void main(final String args[]) throws IOException { final String tstname = Test4JavaCallback.class.getName(); |