From 1610dbb4e4d1a1ecf31eb837a47e0f5be04afdac Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Wed, 20 Mar 2013 02:15:53 +0100 Subject: Fix intptr_t*, uintptr_t*, ptrdiff_t* and size_t* mapping, map them to PointerBuffer, since referenced memory-size is arch dependent Added extensive PointerBuffer unit tests w/ new mapping in generated test class. --- .../gluegen/test/junit/generation/BaseClass.java | 188 ++++++++++++++++++--- .../gluegen/test/junit/generation/test1-common.cfg | 7 + .../jogamp/gluegen/test/junit/generation/test1.c | 58 +++++++ .../jogamp/gluegen/test/junit/generation/test1.h | 27 +++ 4 files changed, 257 insertions(+), 23 deletions(-) (limited to 'src/junit/com/jogamp/gluegen/test') diff --git a/src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java b/src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java index 8dff4be..1ce97b5 100644 --- a/src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java +++ b/src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java @@ -77,9 +77,7 @@ public class BaseClass extends JunitTracer { public void chapter__TestCoverageSignature(Bindingtest1 binding) throws Exception { int i; long context = 0; - ByteBuffer bb=null; LongBuffer lb=null; - PointerBuffer pb=null; IntBuffer ib=null; long[] larray = null; int larray_offset = 0; @@ -90,6 +88,38 @@ public class BaseClass extends JunitTracer { long result = 0; long l = result; + { + ByteBuffer bb = binding.createAPtrBlob(); + PointerBuffer pb = safeByteBuffer2PointerBuffer(bb, 1); + long bb2A = binding.getAPtrAddress(bb); + bb2A = bb2A - 0; // avoid warning + + binding.arrayTestAVoidPtrTypeDim1Mutable(pb); + pb = PointerBuffer.wrap( binding.arrayTestAVoidPtrTypeDim1Immutable(pb) ); + pb = PointerBuffer.wrap( binding.arrayTestAVoidPtrTypeDim0(pb.getBuffer()) ); + binding.releaseAPtrBlob( binding.getAPtrMemory( pb.get(0) ) ); + + binding.arrayTestAIntPtrTypeDim1Mutable(pb); + result = binding.arrayTestAIntPtrTypeDim1Immutable(pb); + result = binding.arrayTestAIntPtrTypeDim0(pb.get(0)); + binding.releaseAPtrBlob( binding.getAPtrMemory( pb.get(0) ) ); + + binding.arrayTestAPtr1TypeDim1Mutable(pb); + pb = PointerBuffer.wrap( binding.arrayTestAPtr1TypeDim1Immutable(pb) ); + pb = PointerBuffer.wrap( binding.arrayTestAPtr1TypeDim0(pb.getBuffer()) ); + binding.releaseAPtrBlob( binding.getAPtrMemory( pb.get(0) ) ); + + binding.arrayTestAPtr2TypeDim1Mutable(pb); + result = binding.arrayTestAPtr2TypeDim1Immutable(pb); + result = binding.arrayTestAPtr2TypeDim0(pb.get(0)); + binding.releaseAPtrBlob( binding.getAPtrMemory( pb.get(0) ) ); + + binding.releaseAPtrBlob(bb); + } + + ByteBuffer bb=null; + PointerBuffer pb=null; + result = binding.arrayTestInt32(context, ib); result = binding.arrayTestInt32(context, iarray, iarray_offset); @@ -199,6 +229,31 @@ public class BaseClass extends JunitTracer { } } + long cleanAddress(long a) { + if (Platform.is32Bit()) { + return a & 0x00000000FFFFFFFFL; + } else { + return a; + } + } + + PointerBuffer validatePointerBuffer(PointerBuffer pb, int elements) { + Assert.assertNotNull(pb); + Assert.assertEquals("PointerBuffer capacity not "+elements, elements, pb.capacity()); + Assert.assertEquals("PointerBuffer remaining not "+elements, elements, pb.remaining()); + System.err.println("Testing accessing PointerBuffer values [0.."+(elements-1)+"]"); + for(int i=0; i