@Test public void testPassFloats() { Pointer<Byte> out = allocateBytes(8); for (int value : intValues) { passVarArgs(out, false, (float) value); assertEquals(value, out.getDouble(), 0); } }
@Test public void testPassBytes() { Pointer<Byte> out = allocateBytes(8); for (int value : intValues) { passVarArgs(out, true, (byte) value); assertEquals(value, out.getSizeT()); } }
@Test public void testPassBools() { Pointer<Byte> out = allocateBytes(8); for (boolean value : new boolean[] {true, false}) { passVarArgs(out, true, value); assertEquals(value, out.getSizeT() != 0); } }
@Test public void testSPrintf() { Pointer<Byte> dest = allocateBytes(100); String fmtString = "Hello %d !"; int value = 10; sprintf(dest, pointerToCString(fmtString), value); assertEquals(String.format(fmtString, value), dest.getCString()); }
public boolean isValid() { Pointer<Integer> pCount = allocateInt(); int err; try { err = clIcdGetPlatformIDsKHR(0, null, pCount); } catch (Throwable th) { try { err = clGetPlatformIDs(0, null, pCount); } catch (Throwable th2) { return false; } } return err == OpenCLLibrary.CL_SUCCESS && pCount.get() > 0; }
/** Lists all available OpenCL implementations. */ public static CLPlatform[] listPlatforms() { Pointer<Integer> pCount = allocateInt(); error(getPlatformIDs(0, null, pCount)); int nPlats = pCount.get(); if (nPlats == 0) return new CLPlatform[0]; Pointer<cl_platform_id> ids = allocateTypedPointers(cl_platform_id.class, nPlats); error(getPlatformIDs(nPlats, ids, null)); CLPlatform[] platforms = new CLPlatform[nPlats]; for (int i = 0; i < nPlats; i++) { platforms[i] = new CLPlatform(ids.get(i)); } return platforms; }
/** * Issue 37 : BridJ: org.bridj.Pointer#iterator for native-allocated pointers is empty * http://code.google.com/p/nativelibs4java/issues/detail?id=37 */ @Test public void emptyIteratorFromUnmanagedPointer() { Pointer<Byte> ptr = allocateBytes(10); assertTrue(!ptr.asList().isEmpty()); assertTrue(ptr.iterator().next() != null); Pointer<Byte> unmanaged = pointerToAddress(ptr.getPeer()).as(Byte.class); assertTrue(!unmanaged.asList().isEmpty()); assertTrue(unmanaged.iterator().next() != null); }
/** * Issue 47: Pointer#pointerToAddress(long, Class, Releaser) does not use releaser argument * http://code.google.com/p/nativelibs4java/issues/detail?id=37 */ @Test public void usePointerReleaser() { final boolean[] released = new boolean[1]; Pointer<Integer> p = allocateInt(); long address = p.getPeer(); { Pointer pp = pointerToAddress(address); assertEquals(address, pp.getPeer()); } { Pointer pp = pointerToAddress(address, 123); assertEquals(address, pp.getPeer()); assertEquals(123, pp.getValidBytes()); } Releaser releaser = new Releaser() { // @Override public void release(Pointer<?> p) { released[0] = true; } }; { released[0] = false; Pointer pp = pointerToAddress(address, Integer.class, releaser); assertEquals(address, pp.getPeer()); assertEquals(Integer.class, pp.getTargetType()); pp.release(); assertEquals(true, released[0]); } { Pointer pp = pointerToAddress(address, PointerIO.getIntInstance()); assertEquals(address, pp.getPeer()); assertEquals(Integer.class, pp.getTargetType()); } { released[0] = false; Pointer pp = pointerToAddress(address, PointerIO.getIntInstance(), releaser); assertEquals(address, pp.getPeer()); assertEquals(Integer.class, pp.getTargetType()); pp.release(); assertEquals(true, released[0]); } { released[0] = false; Pointer pp = pointerToAddress(address, releaser); assertEquals(address, pp.getPeer()); pp.release(); assertEquals(true, released[0]); } { released[0] = false; Pointer pp = pointerToAddress(address, 123, releaser); assertEquals(address, pp.getPeer()); assertEquals(123, pp.getValidBytes()); pp.release(); assertEquals(true, released[0]); } { Pointer pp = pointerToAddress(address, Integer.class); assertEquals(address, pp.getPeer()); assertEquals(Integer.class, pp.getTargetType()); } { Pointer pp = pointerToAddress(address, 123, PointerIO.getIntInstance()); assertEquals(address, pp.getPeer()); assertEquals(123, pp.getValidBytes()); assertEquals(Integer.class, pp.getTargetType()); } }