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: Ie8fcc713188dd4819dfa55e5398e6b53ae9a14af
diff --git a/opengl/tools/glgen/src/GenerateGLES.java b/opengl/tools/glgen/src/GenerateGLES.java
index 6468957..6f9da5d 100644
--- a/opengl/tools/glgen/src/GenerateGLES.java
+++ b/opengl/tools/glgen/src/GenerateGLES.java
@@ -42,7 +42,6 @@
             }
 
             CFunc cfunc = CFunc.parseCFunc(s);
-
             String fname = cfunc.getName();
             String stubRoot = "stubs/gles11/" + fname;
             String javaPath = stubRoot + ".java";
@@ -96,10 +95,9 @@
                 new PrintStream(new FileOutputStream("out/" + gl11Filename));
             PrintStream gl11cStream =
                 new PrintStream(new FileOutputStream("out/" + gl11cFilename));
-            gl11Stream.println("/*");
-            gl11cStream.println("/*");
             copy("stubs/gles11/" + suffix + "Header.java-if", gl11Stream);
             copy("stubs/gles11/" + suffix + "cHeader.cpp", gl11cStream);
+            copy("stubs/gles11/common.cpp", gl11cStream);
             GLESCodeEmitter emitter = new GLESCodeEmitter(
                     "android/opengl/" + suffix,
                     checker, gl11Stream, gl11cStream);
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
diff --git a/opengl/tools/glgen/src/ParameterChecker.java b/opengl/tools/glgen/src/ParameterChecker.java
index bff6d86..fbc47fb 100644
--- a/opengl/tools/glgen/src/ParameterChecker.java
+++ b/opengl/tools/glgen/src/ParameterChecker.java
@@ -22,8 +22,21 @@
     HashMap<String,String[]> map = new HashMap<String,String[]>();
 
     public ParameterChecker(BufferedReader reader) throws Exception {
-        String s;
-        while ((s = reader.readLine()) != null) {
+        String line;
+        while ((line = reader.readLine()) != null) {
+            String s = line.trim();
+
+            // skip empty lines
+            if (s.isEmpty()) {
+                continue;
+            }
+
+            // skip single-line comments
+            if (s.startsWith("//") ||
+                s.startsWith("#")) {
+                continue;
+            }
+
             String[] tokens = s.split("\\s");
             map.put(tokens[0], tokens);
         }