add some missing parameter validation in GLES java bindings
- added support for comments in checks.spec
- added most missing checks
- added and commented with // special-cased functions
- added and commented with # functions that are still missing validation checks
- moved glGet* to a special case and updated all the "pnames" from the khronos spec
- changed ifcheck to default to 1 value. this allows us to simplify the checks.spec file
and handle unknown pnames automatically (they'll be validated against 1 value, if
it happens to need more, the call will go through but the validation will not
happen).
- refactored the cpp headers in to a common header + GLES version specific
header
Bug: 7402895
Change-Id: Ib5c68ca0ca416407b4cfa36e3a21901b2d6263ab
diff --git a/opengl/tools/glgen/src/JniCodeEmitter.java b/opengl/tools/glgen/src/JniCodeEmitter.java
index 774f40c..01c5c48 100644
--- a/opengl/tools/glgen/src/JniCodeEmitter.java
+++ b/opengl/tools/glgen/src/JniCodeEmitter.java
@@ -197,30 +197,30 @@
void printIfcheckPostamble(PrintStream out, boolean isBuffer, boolean emitExceptionCheck,
String iii) {
- printIfcheckPostamble(out, isBuffer, emitExceptionCheck,
- "offset", "_remaining", iii);
- }
+ printIfcheckPostamble(out, isBuffer, emitExceptionCheck,
+ "offset", "_remaining", iii);
+ }
void printIfcheckPostamble(PrintStream out, boolean isBuffer, boolean emitExceptionCheck,
String offset, String remaining, String iii) {
- out.println(iii + " default:");
- out.println(iii + " _needed = 0;");
- out.println(iii + " break;");
- out.println(iii + "}");
+ out.println(iii + " default:");
+ out.println(iii + " _needed = 1;");
+ out.println(iii + " break;");
+ out.println(iii + "}");
- out.println(iii + "if (" + remaining + " < _needed) {");
- out.println(iii + indent + "_exception = 1;");
- out.println(iii + indent +
- "_exceptionType = \"java/lang/IllegalArgumentException\";");
- out.println(iii + indent +
- "_exceptionMessage = \"" +
- (isBuffer ? "remaining()" : "length - " + offset) +
- " < needed\";");
- out.println(iii + indent + "goto exit;");
- out.println(iii + "}");
+ out.println(iii + "if (" + remaining + " < _needed) {");
+ out.println(iii + indent + "_exception = 1;");
+ out.println(iii + indent +
+ "_exceptionType = \"java/lang/IllegalArgumentException\";");
+ out.println(iii + indent +
+ "_exceptionMessage = \"" +
+ (isBuffer ? "remaining()" : "length - " + offset) +
+ " < needed\";");
+ out.println(iii + indent + "goto exit;");
+ out.println(iii + "}");
- needsExit = true;
- }
+ needsExit = true;
+ }
boolean isNullAllowed(CFunc cfunc) {
String[] checks = mChecker.getChecks(cfunc.getName());
@@ -932,8 +932,8 @@
// Emit an _exeption variable if there will be error checks
if (emitExceptionCheck) {
out.println(indent + "jint _exception = 0;");
- out.println(indent + "const char * _exceptionType;");
- out.println(indent + "const char * _exceptionMessage;");
+ out.println(indent + "const char * _exceptionType = NULL;");
+ out.println(indent + "const char * _exceptionMessage = NULL;");
}
// Emit a single _array or multiple _XXXArray variables