From 86c868fcb78b53f02ad2bae1770e4db61b892678 Mon Sep 17 00:00:00 2001 From: Wade Walker <wwalker3@austin.rr.com> Date: Tue, 4 Mar 2014 15:21:35 -0600 Subject: Remove warnings in emitted C code. Fix 1: Only emit "int * _offsetHandle = NULL" if it will be used, to avoid unused variable warning. Fix 2: Add "unsigned" to typecasts in C function calls when needed to avoid implicit typecast warning. This commit also adds a unit test for a method that uses an "unsigned char **" parameter, to mimic the JOCL clCreateProgramWithBinary() function that caused the typecast warnings. --- src/java/com/jogamp/gluegen/CMethodBindingEmitter.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/java/com/jogamp/gluegen/CMethodBindingEmitter.java') diff --git a/src/java/com/jogamp/gluegen/CMethodBindingEmitter.java b/src/java/com/jogamp/gluegen/CMethodBindingEmitter.java index d856767..39141f2 100644 --- a/src/java/com/jogamp/gluegen/CMethodBindingEmitter.java +++ b/src/java/com/jogamp/gluegen/CMethodBindingEmitter.java @@ -427,7 +427,8 @@ public class CMethodBindingEmitter extends FunctionEmitter { writer.println(" jsize _tmpArrayLen;"); // Pointer to the data in the Buffer, taking the offset into account - writer.println(" int * _offsetHandle = NULL;"); + if(type.isNIOBufferArray()) + writer.println(" int * _offsetHandle = NULL;"); emittedDataCopyTemps = true; } @@ -925,6 +926,15 @@ public class CMethodBindingEmitter extends FunctionEmitter { if (isConstPtrPtr(cArgType)) { writer.print("const "); } + + // if this is a pointer to an unsigned type, add unsigned to the name to avoid compiler warnings + if(cArgType.isPointer()) { + Type typeLast = ((PointerType)cArgType).getLastTargetType(); + if(typeLast.isInt() && (((IntType)typeLast).isPrimitiveUnsigned())) { + writer.print("unsigned "); + } + } + writer.print(cArgType.getName()); writer.print(") "); if (binding.getCArgumentType(i).isPointer() && javaArgType.isPrimitive()) { -- cgit v1.2.3 From 0b2b05c25b5072ccbce0f92e66f29b45bde762cd Mon Sep 17 00:00:00 2001 From: Wade Walker <wwalker3@austin.rr.com> Date: Tue, 4 Mar 2014 15:37:38 -0600 Subject: Fix accidental tabs. --- src/java/com/jogamp/gluegen/CMethodBindingEmitter.java | 14 +++++++------- .../com/jogamp/gluegen/cgram/types/PointerType.java | 8 ++++---- .../gluegen/test/junit/generation/BaseClass.java | 10 +++++----- .../com/jogamp/gluegen/test/junit/generation/test1.c | 18 +++++++++--------- 4 files changed, 25 insertions(+), 25 deletions(-) (limited to 'src/java/com/jogamp/gluegen/CMethodBindingEmitter.java') diff --git a/src/java/com/jogamp/gluegen/CMethodBindingEmitter.java b/src/java/com/jogamp/gluegen/CMethodBindingEmitter.java index 39141f2..d18ea3d 100644 --- a/src/java/com/jogamp/gluegen/CMethodBindingEmitter.java +++ b/src/java/com/jogamp/gluegen/CMethodBindingEmitter.java @@ -929,10 +929,10 @@ public class CMethodBindingEmitter extends FunctionEmitter { // if this is a pointer to an unsigned type, add unsigned to the name to avoid compiler warnings if(cArgType.isPointer()) { - Type typeLast = ((PointerType)cArgType).getLastTargetType(); - if(typeLast.isInt() && (((IntType)typeLast).isPrimitiveUnsigned())) { - writer.print("unsigned "); - } + Type typeLast = ((PointerType)cArgType).getLastTargetType(); + if(typeLast.isInt() && (((IntType)typeLast).isPrimitiveUnsigned())) { + writer.print("unsigned "); + } } writer.print(cArgType.getName()); @@ -1058,11 +1058,11 @@ public class CMethodBindingEmitter extends FunctionEmitter { writer.println(" " + arrayRes + " = (*env)->NewObjectArray(env, " + arrayResLength + ", (*env)->FindClass(env, \"java/nio/ByteBuffer\"), NULL);"); writer.println(" for (" + arrayIdx + " = 0; " + arrayIdx + " < " + arrayResLength + "; " + arrayIdx + "++) {"); Type retType = binding.getCSymbol().getReturnType(); - Type pointerType; + Type pointerType; if (retType.isPointer()) { - pointerType = retType.asPointer().getTargetType(); + pointerType = retType.asPointer().getTargetType(); } else { - pointerType = retType.asArray().getElementType(); + pointerType = retType.asArray().getElementType(); } writer.println(" (*env)->SetObjectArrayElement(env, " + arrayRes + ", " + arrayIdx + ", (*env)->NewDirectByteBuffer(env, _res[" + arrayIdx + "], sizeof(" + pointerType.getName() + ")));"); diff --git a/src/java/com/jogamp/gluegen/cgram/types/PointerType.java b/src/java/com/jogamp/gluegen/cgram/types/PointerType.java index f4811c7..af33f41 100644 --- a/src/java/com/jogamp/gluegen/cgram/types/PointerType.java +++ b/src/java/com/jogamp/gluegen/cgram/types/PointerType.java @@ -121,10 +121,10 @@ public class PointerType extends Type implements Cloneable { } public Type getLastTargetType() { - if(targetType.isPointer()) - return ((PointerType)targetType).getLastTargetType(); - else - return targetType; + if(targetType.isPointer()) + return ((PointerType)targetType).getLastTargetType(); + else + return targetType; } @Override 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 f0db24b..a97430a 100644 --- a/src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java +++ b/src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java @@ -560,10 +560,10 @@ public class BaseClass extends JunitTracer { Assert.assertTrue("Wrong result: "+i, 0==i); { - // one 0xff in each byte array + // one 0xff in each byte array // the referenced buffer must be direct, non direct is not supported - ByteBuffer bbB = Buffers.newDirectByteBuffer(new byte [] {(byte)0xaa, (byte)0xff, (byte)0xba, (byte)0xbe}); - bbB.rewind(); + ByteBuffer bbB = Buffers.newDirectByteBuffer(new byte [] {(byte)0xaa, (byte)0xff, (byte)0xba, (byte)0xbe}); + bbB.rewind(); PointerBuffer pbB = newPointerBuffer(Bindingtest1.ARRAY_SIZE, direct); PointerBuffer pbL = newPointerBuffer(Bindingtest1.ARRAY_SIZE, direct); for(int j=0; j<Bindingtest1.ARRAY_SIZE; j++) { @@ -579,8 +579,8 @@ public class BaseClass extends JunitTracer { long temp = pbL.get(); Assert.assertTrue("Wrong result: "+temp, temp==bbB.capacity()); pbL.rewind(); - i = binding.binaryArrayRead(pbL, pbB, Bindingtest1.ARRAY_SIZE); - Assert.assertTrue("Wrong result: "+i, Bindingtest1.ARRAY_SIZE==i); + i = binding.binaryArrayRead(pbL, pbB, Bindingtest1.ARRAY_SIZE); + Assert.assertTrue("Wrong result: "+i, Bindingtest1.ARRAY_SIZE==i); } IntBuffer ib = newIntBuffer(3, direct); diff --git a/src/junit/com/jogamp/gluegen/test/junit/generation/test1.c b/src/junit/com/jogamp/gluegen/test/junit/generation/test1.c index c1fe41e..fda37f7 100644 --- a/src/junit/com/jogamp/gluegen/test/junit/generation/test1.c +++ b/src/junit/com/jogamp/gluegen/test/junit/generation/test1.c @@ -237,15 +237,15 @@ MYAPI int MYAPIENTRY stringArrayRead(const char * * strings, int num) { } MYAPI int MYAPIENTRY binaryArrayRead(const size_t * lengths, const unsigned char * * binaries, int num) { - int i, j, n=0; - for(i=0; i<num; i++) { - for(j=0; j<lengths[i]; j++) { - if(0xff==binaries[i][j]) { - ++n; - } - } - } - return n; + int i, j, n=0; + for(i=0; i<num; i++) { + for(j=0; j<lengths[i]; j++) { + if(0xff==binaries[i][j]) { + ++n; + } + } + } + return n; } MYAPI int MYAPIENTRY intArrayRead(const int * ints, int num) { -- cgit v1.2.3