fixed formatting 2

define_list_fix
Sebastian Weiß 9 years ago
parent dccec876c5
commit ed68a7b749
  1. 148
      jme3-lwjgl3/src/main/java/com/jme3/opencl/lwjgl/info/CLUtil.java
  2. 1049
      jme3-lwjgl3/src/main/java/com/jme3/opencl/lwjgl/info/Info.java
  3. 361
      jme3-lwjgl3/src/main/java/com/jme3/opencl/lwjgl/info/InfoQuery.java
  4. 379
      jme3-lwjgl3/src/main/java/com/jme3/opencl/lwjgl/info/InfoQueryInt.java
  5. 379
      jme3-lwjgl3/src/main/java/com/jme3/opencl/lwjgl/info/InfoQueryObject.java

@ -25,82 +25,90 @@ import static org.lwjgl.system.APIUtil.*;
public final class CLUtil { public final class CLUtil {
/** Maps OpenCL error token values to their String representations. */ /**
private static final Map<Integer, String> CL_ERROR_TOKENS = apiClassTokens( * Maps OpenCL error token values to their String representations.
new BiPredicate<Field, Integer>() { */
private final List<String> EXCLUDE = Arrays.asList("CL_DEVICE_TYPE_ALL", "CL_BUILD_NONE", "CL_BUILD_ERROR", "CL_BUILD_IN_PROGRESS"); private static final Map<Integer, String> CL_ERROR_TOKENS = apiClassTokens(
new BiPredicate<Field, Integer>() {
private final List<String> EXCLUDE = Arrays.asList("CL_DEVICE_TYPE_ALL", "CL_BUILD_NONE", "CL_BUILD_ERROR", "CL_BUILD_IN_PROGRESS");
@Override @Override
public boolean test(Field field, Integer value) { public boolean test(Field field, Integer value) {
return value < 0 && !EXCLUDE.contains(field.getName()); // OpenCL errors have negative values. return value < 0 && !EXCLUDE.contains(field.getName()); // OpenCL errors have negative values.
} }
}, },
null, null,
CL10.class, CL10.class,
apiOptionalClass("org.lwjgl.opencl.CL10GL"), apiOptionalClass("org.lwjgl.opencl.CL10GL"),
CL11.class, CL11.class,
CL12.class, CL12.class,
CL20.class, CL20.class,
apiOptionalClass("org.lwjgl.opencl.APPLEGLSharing"), apiOptionalClass("org.lwjgl.opencl.APPLEGLSharing"),
INTELAccelerator.class, INTELAccelerator.class,
apiOptionalClass("org.lwjgl.opencl.KHRGLSharing"), apiOptionalClass("org.lwjgl.opencl.KHRGLSharing"),
apiOptionalClass("org.lwjgl.opencl.KHREGLEvent"), apiOptionalClass("org.lwjgl.opencl.KHREGLEvent"),
apiOptionalClass("org.lwjgl.opencl.KHREGLImage"), apiOptionalClass("org.lwjgl.opencl.KHREGLImage"),
KHRICD.class KHRICD.class
/*, EXTDeviceFission.class*/ /*, EXTDeviceFission.class*/
); );
private CLUtil() {} private CLUtil() {
}
/** /**
* Checks the {@code errcode} present in the current position of the specified {@code errcode_ret} buffer and throws an {@link OpenCLException} if it's not * Checks the {@code errcode} present in the current position of the
* equal to {@link CL10#CL_SUCCESS}. * specified {@code errcode_ret} buffer and throws an
* * {@link OpenCLException} if it's not equal to {@link CL10#CL_SUCCESS}.
* @param errcode_ret the {@code errcode} buffer *
* * @param errcode_ret the {@code errcode} buffer
* @throws OpenCLException *
*/ * @throws OpenCLException
public static void checkCLError(ByteBuffer errcode_ret) { */
checkCLError(errcode_ret.getInt(errcode_ret.position())); public static void checkCLError(ByteBuffer errcode_ret) {
} checkCLError(errcode_ret.getInt(errcode_ret.position()));
}
/** /**
* Checks the {@code errcode} present in the current position of the specified {@code errcode_ret} buffer and throws an {@link OpenCLException} if it's not * Checks the {@code errcode} present in the current position of the
* equal to {@link CL10#CL_SUCCESS}. * specified {@code errcode_ret} buffer and throws an
* * {@link OpenCLException} if it's not equal to {@link CL10#CL_SUCCESS}.
* @param errcode_ret the {@code errcode} buffer *
* * @param errcode_ret the {@code errcode} buffer
* @throws OpenCLException *
*/ * @throws OpenCLException
public static void checkCLError(IntBuffer errcode_ret) { */
checkCLError(errcode_ret.get(errcode_ret.position())); public static void checkCLError(IntBuffer errcode_ret) {
} checkCLError(errcode_ret.get(errcode_ret.position()));
}
/** /**
* Checks the specified {@code errcode} and throws an {@link OpenCLException} if it's not equal to {@link CL10#CL_SUCCESS}. * Checks the specified {@code errcode} and throws an
* * {@link OpenCLException} if it's not equal to {@link CL10#CL_SUCCESS}.
* @param errcode the {@code errcode} to check *
* * @param errcode the {@code errcode} to check
* @throws OpenCLException *
*/ * @throws OpenCLException
public static void checkCLError(int errcode) { */
if ( errcode != CL_SUCCESS ) public static void checkCLError(int errcode) {
throw new OpenCLException(getErrcodeName(errcode)); if (errcode != CL_SUCCESS) {
} throw new OpenCLException(getErrcodeName(errcode));
}
}
/** /**
* Returns the token name of the specified {@code errcode}. * Returns the token name of the specified {@code errcode}.
* *
* @param errcode the {@code errcode} * @param errcode the {@code errcode}
* *
* @return the {@code errcode} token name * @return the {@code errcode} token name
*/ */
public static String getErrcodeName(int errcode) { public static String getErrcodeName(int errcode) {
String errname = CL_ERROR_TOKENS.get(errcode); String errname = CL_ERROR_TOKENS.get(errcode);
if ( errname == null ) if (errname == null) {
errname = apiUnknownToken(errcode); errname = apiUnknownToken(errcode);
}
return errname; return errname;
} }
} }

@ -16,181 +16,200 @@ import static org.lwjgl.system.Pointer.*;
/** /**
* Base class for OpenCL object information queries. * Base class for OpenCL object information queries.
* <p/> * <p/>
* All methods require the object being queried (a pointer value) and the integer parameter name. * All methods require the object being queried (a pointer value) and the
* integer parameter name.
* *
* @see Info * @see Info
*/ */
abstract class InfoQuery { abstract class InfoQuery {
protected abstract int get(long pointer, int param_name, long param_value_size, long param_value, long param_value_size_ret); protected abstract int get(long pointer, int param_name, long param_value_size, long param_value, long param_value_size_ret);
InfoQuery() { InfoQuery() {
} }
/** /**
* Returns the integer value for the specified {@code param_name}, converted to a boolean. * Returns the integer value for the specified {@code param_name}, converted
* * to a boolean.
* @param object the object to query *
* @param param_name the parameter to query * @param object the object to query
* * @param param_name the parameter to query
* @return the parameter's boolean value *
*/ * @return the parameter's boolean value
boolean getBoolean(long object, int param_name) { */
return getInt(object, param_name) != 0; boolean getBoolean(long object, int param_name) {
} return getInt(object, param_name) != 0;
}
/**
* Returns the integer value for the specified {@code param_name}. /**
* <p/> * Returns the integer value for the specified {@code param_name}.
* For integer parameters that may be 32 or 64 bits (e.g. {@code size_t}), {@link #getPointer} should be used instead. * <p/>
* * For integer parameters that may be 32 or 64 bits (e.g. {@code size_t}),
* @param object the object to query * {@link #getPointer} should be used instead.
* @param param_name the parameter to query *
* * @param object the object to query
* @return the parameter's int value * @param param_name the parameter to query
*/ *
int getInt(long object, int param_name) { * @return the parameter's int value
APIBuffer __buffer = apiBuffer(); */
int errcode = get(object, param_name, 4L, __buffer.address(), NULL); int getInt(long object, int param_name) {
if ( DEBUG ) APIBuffer __buffer = apiBuffer();
checkCLError(errcode); int errcode = get(object, param_name, 4L, __buffer.address(), NULL);
return __buffer.intValue(0); if (DEBUG) {
} checkCLError(errcode);
}
/** return __buffer.intValue(0);
* Returns the long value for the specified {@code param_name}. }
* <p/>
* For integer parameters that may be 32 or 64 bits (e.g. {@code size_t}), {@link #getPointer} should be used instead. /**
* * Returns the long value for the specified {@code param_name}.
* @param object the object to query * <p/>
* @param param_name the parameter to query * For integer parameters that may be 32 or 64 bits (e.g. {@code size_t}),
* * {@link #getPointer} should be used instead.
* @return the parameter's long value *
*/ * @param object the object to query
long getLong(long object, int param_name) { * @param param_name the parameter to query
APIBuffer __buffer = apiBuffer(); *
int errcode = get(object, param_name, 8L, __buffer.address(), NULL); * @return the parameter's long value
if ( DEBUG ) */
checkCLError(errcode); long getLong(long object, int param_name) {
return __buffer.longValue(0); APIBuffer __buffer = apiBuffer();
} int errcode = get(object, param_name, 8L, __buffer.address(), NULL);
if (DEBUG) {
/** checkCLError(errcode);
* Returns the pointer value for the specified {@code param_name}. }
* <p/> return __buffer.longValue(0);
* This method should also be used for integer parameters that may be 32 or 64 bits (e.g. {@code size_t}). }
*
* @param object the object to query /**
* @param param_name the parameter to query * Returns the pointer value for the specified {@code param_name}.
* * <p/>
* @return the parameter's pointer value * This method should also be used for integer parameters that may be 32 or
*/ * 64 bits (e.g. {@code size_t}).
long getPointer(long object, int param_name) { *
APIBuffer __buffer = apiBuffer(); * @param object the object to query
int errcode = get(object, param_name, POINTER_SIZE, __buffer.address(), NULL); * @param param_name the parameter to query
if ( DEBUG ) *
checkCLError(errcode); * @return the parameter's pointer value
return __buffer.pointerValue(0); */
} long getPointer(long object, int param_name) {
APIBuffer __buffer = apiBuffer();
/** int errcode = get(object, param_name, POINTER_SIZE, __buffer.address(), NULL);
* Writes the pointer list for the specified {@code param_name} into {@code target}. if (DEBUG) {
* <p/> checkCLError(errcode);
* This method should also be used for integer parameters that may be 32 or 64 bits (e.g. {@code size_t}). }
* return __buffer.pointerValue(0);
* @param object the object to query }
* @param param_name the parameter to query
* @param target the buffer in which to put the returned pointer list /**
* * Writes the pointer list for the specified {@code param_name} into
* @return how many pointers were actually returned * {@code target}.
*/ * <p/>
int getPointers(long object, int param_name, PointerBuffer target) { * This method should also be used for integer parameters that may be 32 or
APIBuffer __buffer = apiBuffer(); * 64 bits (e.g. {@code size_t}).
int errcode = get(object, param_name, target.remaining() * POINTER_SIZE, memAddress(target), __buffer.address()); *
if ( DEBUG ) * @param object the object to query
checkCLError(errcode); * @param param_name the parameter to query
return (int)(__buffer.pointerValue(0) >> POINTER_SHIFT); * @param target the buffer in which to put the returned pointer list
} *
* @return how many pointers were actually returned
/** */
* Returns the string value for the specified {@code param_name}. The raw bytes returned are assumed to be ASCII encoded. int getPointers(long object, int param_name, PointerBuffer target) {
* APIBuffer __buffer = apiBuffer();
* @param object the object to query int errcode = get(object, param_name, target.remaining() * POINTER_SIZE, memAddress(target), __buffer.address());
* @param param_name the parameter to query if (DEBUG) {
* checkCLError(errcode);
* @return the parameter's string value }
*/ return (int) (__buffer.pointerValue(0) >> POINTER_SHIFT);
String getStringASCII(long object, int param_name) { }
APIBuffer __buffer = apiBuffer();
int bytes = getString(object, param_name, __buffer); /**
return __buffer.stringValueASCII(0, bytes); * Returns the string value for the specified {@code param_name}. The raw
} * bytes returned are assumed to be ASCII encoded.
*
/** * @param object the object to query
* Returns the string value for the specified {@code param_name}. The raw bytes returned are assumed to be ASCII encoded and have length equal to {@code * @param param_name the parameter to query
* param_value_size}. *
* * @return the parameter's string value
* @param object the object to query */
* @param param_name the parameter to query String getStringASCII(long object, int param_name) {
* @param param_value_size the explicit string length APIBuffer __buffer = apiBuffer();
* int bytes = getString(object, param_name, __buffer);
* @return the parameter's string value return __buffer.stringValueASCII(0, bytes);
*/ }
String getStringASCII(long object, int param_name, int param_value_size) {
APIBuffer __buffer = apiBuffer(); /**
int errcode = get(object, param_name, param_value_size, __buffer.address(), NULL); * Returns the string value for the specified {@code param_name}. The raw
if ( DEBUG ) * bytes returned are assumed to be ASCII encoded and have length equal to {@code
checkCLError(errcode); * param_value_size}.
return __buffer.stringValueASCII(0, param_value_size); *
} * @param object the object to query
* @param param_name the parameter to query
/** * @param param_value_size the explicit string length
* Returns the string value for the specified {@code param_name}. The raw bytes returned are assumed to be UTF-8 encoded. *
* * @return the parameter's string value
* @param object the object to query */
* @param param_name the parameter to query String getStringASCII(long object, int param_name, int param_value_size) {
* APIBuffer __buffer = apiBuffer();
* @return the parameter's string value int errcode = get(object, param_name, param_value_size, __buffer.address(), NULL);
*/ if (DEBUG) {
String getStringUTF8(long object, int param_name) { checkCLError(errcode);
APIBuffer __buffer = apiBuffer(); }
int bytes = getString(object, param_name, __buffer); return __buffer.stringValueASCII(0, param_value_size);
return __buffer.stringValueUTF8(0, bytes); }
}
/**
/** * Returns the string value for the specified {@code param_name}. The raw
* Returns the string value for the specified {@code param_name}. The raw bytes returned are assumed to be UTF-8 encoded and have length equal to {@code * bytes returned are assumed to be UTF-8 encoded.
* param_value_size}. *
* * @param object the object to query
* @param object the object to query * @param param_name the parameter to query
* @param param_name the parameter to query *
* @param param_value_size the explicit string length * @return the parameter's string value
* */
* @return the parameter's string value String getStringUTF8(long object, int param_name) {
*/ APIBuffer __buffer = apiBuffer();
String getStringUTF8(long object, int param_name, int param_value_size) { int bytes = getString(object, param_name, __buffer);
APIBuffer __buffer = apiBuffer(); return __buffer.stringValueUTF8(0, bytes);
int errcode = get(object, param_name, param_value_size, __buffer.address(), NULL); }
if ( DEBUG )
checkCLError(errcode); /**
return __buffer.stringValueUTF8(0, param_value_size); * Returns the string value for the specified {@code param_name}. The raw
} * bytes returned are assumed to be UTF-8 encoded and have length equal to {@code
* param_value_size}.
private int getString(long object, int param_name, APIBuffer __buffer) { *
// Get string length * @param object the object to query
int errcode = get(object, param_name, 0, NULL, __buffer.address()); * @param param_name the parameter to query
if ( DEBUG ) * @param param_value_size the explicit string length
checkCLError(errcode); *
* @return the parameter's string value
int bytes = (int)__buffer.pointerValue(0); */
__buffer.bufferParam(bytes); String getStringUTF8(long object, int param_name, int param_value_size) {
APIBuffer __buffer = apiBuffer();
// Get string int errcode = get(object, param_name, param_value_size, __buffer.address(), NULL);
errcode = get(object, param_name, bytes, __buffer.address(), NULL); if (DEBUG) {
if ( DEBUG ) checkCLError(errcode);
checkCLError(errcode); }
return __buffer.stringValueUTF8(0, param_value_size);
return bytes - 1; // all OpenCL char[] parameters are null-terminated }
}
private int getString(long object, int param_name, APIBuffer __buffer) {
// Get string length
int errcode = get(object, param_name, 0, NULL, __buffer.address());
if (DEBUG) {
checkCLError(errcode);
}
int bytes = (int) __buffer.pointerValue(0);
__buffer.bufferParam(bytes);
// Get string
errcode = get(object, param_name, bytes, __buffer.address(), NULL);
if (DEBUG) {
checkCLError(errcode);
}
return bytes - 1; // all OpenCL char[] parameters are null-terminated
}
} }

@ -16,190 +16,209 @@ import static org.lwjgl.system.Pointer.*;
/** /**
* Base class for OpenCL object information queries. * Base class for OpenCL object information queries.
* <p/> * <p/>
* All methods require the object being queried (a pointer value), a second integer argument and the integer parameter name. * All methods require the object being queried (a pointer value), a second
* integer argument and the integer parameter name.
* *
* @see Info * @see Info
*/ */
abstract class InfoQueryInt { abstract class InfoQueryInt {
protected abstract int get(long pointer, int arg, int param_name, long param_value_size, long param_value, long param_value_size_ret); protected abstract int get(long pointer, int arg, int param_name, long param_value_size, long param_value, long param_value_size_ret);
InfoQueryInt() { InfoQueryInt() {
} }
/** /**
* Returns the integer value for the specified {@code param_name}, converted to a boolean. * Returns the integer value for the specified {@code param_name}, converted
* * to a boolean.
* @param object the object to query *
* @param arg an integer argument * @param object the object to query
* @param param_name the parameter to query * @param arg an integer argument
* * @param param_name the parameter to query
* @return the parameter's boolean value *
*/ * @return the parameter's boolean value
boolean getBoolean(long object, int arg, int param_name) { */
return getInt(object, arg, param_name) != 0; boolean getBoolean(long object, int arg, int param_name) {
} return getInt(object, arg, param_name) != 0;
}
/**
* Returns the integer value for the specified {@code param_name}. /**
* <p/> * Returns the integer value for the specified {@code param_name}.
* For integer parameters that may be 32 or 64 bits (e.g. {@code size_t}), {@link #getPointer} should be used instead. * <p/>
* * For integer parameters that may be 32 or 64 bits (e.g. {@code size_t}),
* @param object the object to query * {@link #getPointer} should be used instead.
* @param arg an integer argument *
* @param param_name the parameter to query * @param object the object to query
* * @param arg an integer argument
* @return the parameter's int value * @param param_name the parameter to query
*/ *
int getInt(long object, int arg, int param_name) { * @return the parameter's int value
APIBuffer __buffer = apiBuffer(); */
int errcode = get(object, arg, param_name, 4L, __buffer.address(), NULL); int getInt(long object, int arg, int param_name) {
if ( DEBUG ) APIBuffer __buffer = apiBuffer();
checkCLError(errcode); int errcode = get(object, arg, param_name, 4L, __buffer.address(), NULL);
return __buffer.intValue(0); if (DEBUG) {
} checkCLError(errcode);
}
/** return __buffer.intValue(0);
* Returns the long value for the specified {@code param_name}. }
* <p/>
* For integer parameters that may be 32 or 64 bits (e.g. {@code size_t}), {@link #getPointer} should be used instead. /**
* * Returns the long value for the specified {@code param_name}.
* @param object the object to query * <p/>
* @param arg an integer argument * For integer parameters that may be 32 or 64 bits (e.g. {@code size_t}),
* @param param_name the parameter to query * {@link #getPointer} should be used instead.
* *
* @return the parameter's long value * @param object the object to query
*/ * @param arg an integer argument
long getLong(long object, int arg, int param_name) { * @param param_name the parameter to query
APIBuffer __buffer = apiBuffer(); *
int errcode = get(object, arg, param_name, 8L, __buffer.address(), NULL); * @return the parameter's long value
if ( DEBUG ) */
checkCLError(errcode); long getLong(long object, int arg, int param_name) {
return __buffer.longValue(0); APIBuffer __buffer = apiBuffer();
} int errcode = get(object, arg, param_name, 8L, __buffer.address(), NULL);
if (DEBUG) {
/** checkCLError(errcode);
* Returns the pointer value for the specified {@code param_name}. }
* <p/> return __buffer.longValue(0);
* This method should also be used for integer parameters that may be 32 or 64 bits (e.g. {@code size_t}). }
*
* @param object the object to query /**
* @param arg an integer argument * Returns the pointer value for the specified {@code param_name}.
* @param param_name the parameter to query * <p/>
* * This method should also be used for integer parameters that may be 32 or
* @return the parameter's pointer value * 64 bits (e.g. {@code size_t}).
*/ *
long getPointer(long object, int arg, int param_name) { * @param object the object to query
APIBuffer __buffer = apiBuffer(); * @param arg an integer argument
int errcode = get(object, arg, param_name, POINTER_SIZE, __buffer.address(), NULL); * @param param_name the parameter to query
if ( DEBUG ) *
checkCLError(errcode); * @return the parameter's pointer value
return __buffer.pointerValue(0); */
} long getPointer(long object, int arg, int param_name) {
APIBuffer __buffer = apiBuffer();
/** int errcode = get(object, arg, param_name, POINTER_SIZE, __buffer.address(), NULL);
* Writes the pointer list for the specified {@code param_name} into {@code target}. if (DEBUG) {
* <p/> checkCLError(errcode);
* This method should also be used for integer parameters that may be 32 or 64 bits (e.g. {@code size_t}). }
* return __buffer.pointerValue(0);
* @param object the object to query }
* @param arg an integer argument
* @param param_name the parameter to query /**
* @param target the buffer in which to put the returned pointer list * Writes the pointer list for the specified {@code param_name} into
* * {@code target}.
* @return how many pointers were actually returned * <p/>
*/ * This method should also be used for integer parameters that may be 32 or
int getPointers(long object, int arg, int param_name, PointerBuffer target) { * 64 bits (e.g. {@code size_t}).
APIBuffer __buffer = apiBuffer(); *
int errcode = get(object, arg, param_name, target.remaining() * POINTER_SIZE, memAddress(target), __buffer.address()); * @param object the object to query
if ( DEBUG ) * @param arg an integer argument
checkCLError(errcode); * @param param_name the parameter to query
return (int)(__buffer.pointerValue(0) >> POINTER_SHIFT); * @param target the buffer in which to put the returned pointer list
} *
* @return how many pointers were actually returned
/** */
* Returns the string value for the specified {@code param_name}. The raw bytes returned are assumed to be ASCII encoded. int getPointers(long object, int arg, int param_name, PointerBuffer target) {
* APIBuffer __buffer = apiBuffer();
* @param object the object to query int errcode = get(object, arg, param_name, target.remaining() * POINTER_SIZE, memAddress(target), __buffer.address());
* @param arg an integer argument if (DEBUG) {
* @param param_name the parameter to query checkCLError(errcode);
* }
* @return the parameter's string value return (int) (__buffer.pointerValue(0) >> POINTER_SHIFT);
*/ }
String getStringASCII(long object, int arg, int param_name) {
APIBuffer __buffer = apiBuffer(); /**
int bytes = getString(object, arg, param_name, __buffer); * Returns the string value for the specified {@code param_name}. The raw
return __buffer.stringValueASCII(0, bytes); * bytes returned are assumed to be ASCII encoded.
} *
* @param object the object to query
/** * @param arg an integer argument
* Returns the string value for the specified {@code param_name}. The raw bytes returned are assumed to be ASCII encoded and have length equal to {@code * @param param_name the parameter to query
* param_value_size}. *
* * @return the parameter's string value
* @param object the object to query */
* @param arg an integer argument String getStringASCII(long object, int arg, int param_name) {
* @param param_name the parameter to query APIBuffer __buffer = apiBuffer();
* @param param_value_size the explicit string length int bytes = getString(object, arg, param_name, __buffer);
* return __buffer.stringValueASCII(0, bytes);
* @return the parameter's string value }
*/
String getStringASCII(long object, int arg, int param_name, int param_value_size) { /**
APIBuffer __buffer = apiBuffer(); * Returns the string value for the specified {@code param_name}. The raw
int errcode = get(object, arg, param_name, param_value_size, __buffer.address(), NULL); * bytes returned are assumed to be ASCII encoded and have length equal to {@code
if ( DEBUG ) * param_value_size}.
checkCLError(errcode); *
return __buffer.stringValueASCII(0, param_value_size); * @param object the object to query
} * @param arg an integer argument
* @param param_name the parameter to query
/** * @param param_value_size the explicit string length
* Returns the string value for the specified {@code param_name}. The raw bytes returned are assumed to be UTF-8 encoded. *
* * @return the parameter's string value
* @param object the object to query */
* @param arg an integer argument String getStringASCII(long object, int arg, int param_name, int param_value_size) {
* @param param_name the parameter to query APIBuffer __buffer = apiBuffer();
* int errcode = get(object, arg, param_name, param_value_size, __buffer.address(), NULL);
* @return the parameter's string value if (DEBUG) {
*/ checkCLError(errcode);
String getStringUTF8(long object, int arg, int param_name) { }
APIBuffer __buffer = apiBuffer(); return __buffer.stringValueASCII(0, param_value_size);
int bytes = getString(object, arg, param_name, __buffer); }
return __buffer.stringValueUTF8(0, bytes);
} /**
* Returns the string value for the specified {@code param_name}. The raw
/** * bytes returned are assumed to be UTF-8 encoded.
* Returns the string value for the specified {@code param_name}. The raw bytes returned are assumed to be UTF-8 encoded and have length equal to {@code *
* param_value_size}. * @param object the object to query
* * @param arg an integer argument
* @param object the object to query * @param param_name the parameter to query
* @param arg an integer argument *
* @param param_name the parameter to query * @return the parameter's string value
* @param param_value_size the explicit string length */
* String getStringUTF8(long object, int arg, int param_name) {
* @return the parameter's string value APIBuffer __buffer = apiBuffer();
*/ int bytes = getString(object, arg, param_name, __buffer);
String getStringUTF8(long object, int arg, int param_name, int param_value_size) { return __buffer.stringValueUTF8(0, bytes);
APIBuffer __buffer = apiBuffer(); }
int errcode = get(object, arg, param_name, param_value_size, __buffer.address(), NULL);
if ( DEBUG ) /**
checkCLError(errcode); * Returns the string value for the specified {@code param_name}. The raw
return __buffer.stringValueUTF8(0, param_value_size); * bytes returned are assumed to be UTF-8 encoded and have length equal to {@code
} * param_value_size}.
*
private int getString(long object, int arg, int param_name, APIBuffer __buffer) { * @param object the object to query
// Get string length * @param arg an integer argument
int errcode = get(object, arg, param_name, 0, NULL, __buffer.address()); * @param param_name the parameter to query
if ( DEBUG ) * @param param_value_size the explicit string length
checkCLError(errcode); *
* @return the parameter's string value
int bytes = (int)__buffer.pointerValue(0); */
__buffer.bufferParam(bytes + POINTER_SIZE); String getStringUTF8(long object, int arg, int param_name, int param_value_size) {
APIBuffer __buffer = apiBuffer();
// Get string int errcode = get(object, arg, param_name, param_value_size, __buffer.address(), NULL);
errcode = get(object, arg, param_name, bytes, __buffer.address(), NULL); if (DEBUG) {
if ( DEBUG ) checkCLError(errcode);
checkCLError(errcode); }
return __buffer.stringValueUTF8(0, param_value_size);
return bytes - 1; // all OpenCL char[] parameters are null-terminated }
}
private int getString(long object, int arg, int param_name, APIBuffer __buffer) {
// Get string length
int errcode = get(object, arg, param_name, 0, NULL, __buffer.address());
if (DEBUG) {
checkCLError(errcode);
}
int bytes = (int) __buffer.pointerValue(0);
__buffer.bufferParam(bytes + POINTER_SIZE);
// Get string
errcode = get(object, arg, param_name, bytes, __buffer.address(), NULL);
if (DEBUG) {
checkCLError(errcode);
}
return bytes - 1; // all OpenCL char[] parameters are null-terminated
}
} }

@ -16,190 +16,209 @@ import static org.lwjgl.system.Pointer.*;
/** /**
* Base class for OpenCL object information queries. * Base class for OpenCL object information queries.
* <p/> * <p/>
* All methods require the object being queried (a pointer value), a second object argument (another pointer value) and the integer parameter name. * All methods require the object being queried (a pointer value), a second
* object argument (another pointer value) and the integer parameter name.
* *
* @see org.lwjgl.opencl.Info * @see org.lwjgl.opencl.Info
*/ */
abstract class InfoQueryObject { abstract class InfoQueryObject {
protected abstract int get(long pointer, long arg, int param_name, long param_value_size, long param_value, long param_value_size_ret); protected abstract int get(long pointer, long arg, int param_name, long param_value_size, long param_value, long param_value_size_ret);
InfoQueryObject() { InfoQueryObject() {
} }
/** /**
* Returns the integer value for the specified {@code param_name}, converted to a boolean. * Returns the integer value for the specified {@code param_name}, converted
* * to a boolean.
* @param object the object to query *
* @param arg an object argument * @param object the object to query
* @param param_name the parameter to query * @param arg an object argument
* * @param param_name the parameter to query
* @return the parameter's boolean value *
*/ * @return the parameter's boolean value
boolean getBoolean(long object, long arg, int param_name) { */
return getInt(object, arg, param_name) != 0; boolean getBoolean(long object, long arg, int param_name) {
} return getInt(object, arg, param_name) != 0;
}
/**
* Returns the integer value for the specified {@code param_name}. /**
* <p/> * Returns the integer value for the specified {@code param_name}.
* For integer parameters that may be 32 or 64 bits (e.g. {@code size_t}), {@link #getPointer} should be used instead. * <p/>
* * For integer parameters that may be 32 or 64 bits (e.g. {@code size_t}),
* @param object the object to query * {@link #getPointer} should be used instead.
* @param arg an object argument *
* @param param_name the parameter to query * @param object the object to query
* * @param arg an object argument
* @return the parameter's int value * @param param_name the parameter to query
*/ *
int getInt(long object, long arg, int param_name) { * @return the parameter's int value
APIBuffer __buffer = apiBuffer(); */
int errcode = get(object, arg, param_name, 4L, __buffer.address(), NULL); int getInt(long object, long arg, int param_name) {
if ( DEBUG ) APIBuffer __buffer = apiBuffer();
checkCLError(errcode); int errcode = get(object, arg, param_name, 4L, __buffer.address(), NULL);
return __buffer.intValue(0); if (DEBUG) {
} checkCLError(errcode);
}
/** return __buffer.intValue(0);
* Returns the long value for the specified {@code param_name}. }
* <p/>
* For integer parameters that may be 32 or 64 bits (e.g. {@code size_t}), {@link #getPointer} should be used instead. /**
* * Returns the long value for the specified {@code param_name}.
* @param object the object to query * <p/>
* @param arg an object argument * For integer parameters that may be 32 or 64 bits (e.g. {@code size_t}),
* @param param_name the parameter to query * {@link #getPointer} should be used instead.
* *
* @return the parameter's long value * @param object the object to query
*/ * @param arg an object argument
long getLong(long object, long arg, int param_name) { * @param param_name the parameter to query
APIBuffer __buffer = apiBuffer(); *
int errcode = get(object, arg, param_name, 8L, __buffer.address(), NULL); * @return the parameter's long value
if ( DEBUG ) */
checkCLError(errcode); long getLong(long object, long arg, int param_name) {
return __buffer.longValue(0); APIBuffer __buffer = apiBuffer();
} int errcode = get(object, arg, param_name, 8L, __buffer.address(), NULL);
if (DEBUG) {
/** checkCLError(errcode);
* Returns the pointer value for the specified {@code param_name}. }
* <p/> return __buffer.longValue(0);
* This method should also be used for integer parameters that may be 32 or 64 bits (e.g. {@code size_t}). }
*
* @param object the object to query /**
* @param arg an object argument * Returns the pointer value for the specified {@code param_name}.
* @param param_name the parameter to query * <p/>
* * This method should also be used for integer parameters that may be 32 or
* @return the parameter's pointer value * 64 bits (e.g. {@code size_t}).
*/ *
long getPointer(long object, long arg, int param_name) { * @param object the object to query
APIBuffer __buffer = apiBuffer(); * @param arg an object argument
int errcode = get(object, arg, param_name, POINTER_SIZE, __buffer.address(), NULL); * @param param_name the parameter to query
if ( DEBUG ) *
checkCLError(errcode); * @return the parameter's pointer value
return __buffer.pointerValue(0); */
} long getPointer(long object, long arg, int param_name) {
APIBuffer __buffer = apiBuffer();
/** int errcode = get(object, arg, param_name, POINTER_SIZE, __buffer.address(), NULL);
* Writes the pointer list for the specified {@code param_name} into {@code target}. if (DEBUG) {
* <p/> checkCLError(errcode);
* This method should also be used for integer parameters that may be 32 or 64 bits (e.g. {@code size_t}). }
* return __buffer.pointerValue(0);
* @param object the object to query }
* @param arg an object argument
* @param param_name the parameter to query /**
* @param target the buffer in which to put the returned pointer list * Writes the pointer list for the specified {@code param_name} into
* * {@code target}.
* @return how many pointers were actually returned * <p/>
*/ * This method should also be used for integer parameters that may be 32 or
int getPointers(long object, long arg, int param_name, PointerBuffer target) { * 64 bits (e.g. {@code size_t}).
APIBuffer __buffer = apiBuffer(); *
int errcode = get(object, arg, param_name, target.remaining() * POINTER_SIZE, memAddress(target), __buffer.address()); * @param object the object to query
if ( DEBUG ) * @param arg an object argument
checkCLError(errcode); * @param param_name the parameter to query
return (int)(__buffer.pointerValue(0) >> POINTER_SHIFT); * @param target the buffer in which to put the returned pointer list
} *
* @return how many pointers were actually returned
/** */
* Returns the string value for the specified {@code param_name}. The raw bytes returned are assumed to be ASCII encoded. int getPointers(long object, long arg, int param_name, PointerBuffer target) {
* APIBuffer __buffer = apiBuffer();
* @param object the object to query int errcode = get(object, arg, param_name, target.remaining() * POINTER_SIZE, memAddress(target), __buffer.address());
* @param arg an object argument if (DEBUG) {
* @param param_name the parameter to query checkCLError(errcode);
* }
* @return the parameter's string value return (int) (__buffer.pointerValue(0) >> POINTER_SHIFT);
*/ }
String getStringASCII(long object, long arg, int param_name) {
APIBuffer __buffer = apiBuffer(); /**
int bytes = getString(object, arg, param_name, __buffer); * Returns the string value for the specified {@code param_name}. The raw
return __buffer.stringValueASCII(0, bytes); * bytes returned are assumed to be ASCII encoded.
} *
* @param object the object to query
/** * @param arg an object argument
* Returns the string value for the specified {@code param_name}. The raw bytes returned are assumed to be ASCII encoded and have length equal to {@code * @param param_name the parameter to query
* param_value_size}. *
* * @return the parameter's string value
* @param object the object to query */
* @param arg an object argument String getStringASCII(long object, long arg, int param_name) {
* @param param_name the parameter to query APIBuffer __buffer = apiBuffer();
* @param param_value_size the explicit string length int bytes = getString(object, arg, param_name, __buffer);
* return __buffer.stringValueASCII(0, bytes);
* @return the parameter's string value }
*/
String getStringASCII(long object, long arg, int param_name, int param_value_size) { /**
APIBuffer __buffer = apiBuffer(); * Returns the string value for the specified {@code param_name}. The raw
int errcode = get(object, arg, param_name, param_value_size, __buffer.address(), NULL); * bytes returned are assumed to be ASCII encoded and have length equal to {@code
if ( DEBUG ) * param_value_size}.
checkCLError(errcode); *
return __buffer.stringValueASCII(0, param_value_size); * @param object the object to query
} * @param arg an object argument
* @param param_name the parameter to query
/** * @param param_value_size the explicit string length
* Returns the string value for the specified {@code param_name}. The raw bytes returned are assumed to be UTF-8 encoded. *
* * @return the parameter's string value
* @param object the object to query */
* @param arg an object argument String getStringASCII(long object, long arg, int param_name, int param_value_size) {
* @param param_name the parameter to query APIBuffer __buffer = apiBuffer();
* int errcode = get(object, arg, param_name, param_value_size, __buffer.address(), NULL);
* @return the parameter's string value if (DEBUG) {
*/ checkCLError(errcode);
String getStringUTF8(long object, long arg, int param_name) { }
APIBuffer __buffer = apiBuffer(); return __buffer.stringValueASCII(0, param_value_size);
int bytes = getString(object, arg, param_name, __buffer); }
return __buffer.stringValueUTF8(0, bytes);
} /**
* Returns the string value for the specified {@code param_name}. The raw
/** * bytes returned are assumed to be UTF-8 encoded.
* Returns the string value for the specified {@code param_name}. The raw bytes returned are assumed to be UTF-8 encoded and have length equal to {@code *
* param_value_size}. * @param object the object to query
* * @param arg an object argument
* @param object the object to query * @param param_name the parameter to query
* @param arg an object argument *
* @param param_name the parameter to query * @return the parameter's string value
* @param param_value_size the explicit string length */
* String getStringUTF8(long object, long arg, int param_name) {
* @return the parameter's string value APIBuffer __buffer = apiBuffer();
*/ int bytes = getString(object, arg, param_name, __buffer);
String getStringUTF8(long object, long arg, int param_name, int param_value_size) { return __buffer.stringValueUTF8(0, bytes);
APIBuffer __buffer = apiBuffer(); }
int errcode = get(object, arg, param_name, param_value_size, __buffer.address(), NULL);
if ( DEBUG ) /**
checkCLError(errcode); * Returns the string value for the specified {@code param_name}. The raw
return __buffer.stringValueUTF8(0, param_value_size); * bytes returned are assumed to be UTF-8 encoded and have length equal to {@code
} * param_value_size}.
*
private int getString(long object, long arg, int param_name, APIBuffer __buffer) { * @param object the object to query
// Get string length * @param arg an object argument
int errcode = get(object, arg, param_name, 0, NULL, __buffer.address()); * @param param_name the parameter to query
if ( DEBUG ) * @param param_value_size the explicit string length
checkCLError(errcode); *
* @return the parameter's string value
int bytes = (int)__buffer.pointerValue(0); */
__buffer.bufferParam(bytes + POINTER_SIZE); String getStringUTF8(long object, long arg, int param_name, int param_value_size) {
APIBuffer __buffer = apiBuffer();
// Get string int errcode = get(object, arg, param_name, param_value_size, __buffer.address(), NULL);
errcode = get(object, arg, param_name, bytes, __buffer.address(), NULL); if (DEBUG) {
if ( DEBUG ) checkCLError(errcode);
checkCLError(errcode); }
return __buffer.stringValueUTF8(0, param_value_size);
return bytes - 1; // all OpenCL char[] parameters are null-terminated }
}
private int getString(long object, long arg, int param_name, APIBuffer __buffer) {
// Get string length
int errcode = get(object, arg, param_name, 0, NULL, __buffer.address());
if (DEBUG) {
checkCLError(errcode);
}
int bytes = (int) __buffer.pointerValue(0);
__buffer.bufferParam(bytes + POINTER_SIZE);
// Get string
errcode = get(object, arg, param_name, bytes, __buffer.address(), NULL);
if (DEBUG) {
checkCLError(errcode);
}
return bytes - 1; // all OpenCL char[] parameters are null-terminated
}
} }
Loading…
Cancel
Save