Home | History | Annotate | Download | only in jni
      1 /* //device/libs/android_runtime/com_google_android_gles_jni_GLImpl.cpp
      2 **
      3 ** Copyright 2006, The Android Open Source Project
      4 **
      5 ** Licensed under the Apache License, Version 2.0 (the "License");
      6 ** you may not use this file except in compliance with the License.
      7 ** You may obtain a copy of the License at
      8 **
      9 **     http://www.apache.org/licenses/LICENSE-2.0
     10 **
     11 ** Unless required by applicable law or agreed to in writing, software
     12 ** distributed under the License is distributed on an "AS IS" BASIS,
     13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 ** See the License for the specific language governing permissions and
     15 ** limitations under the License.
     16 */
     17 
     18 // This source file is automatically generated
     19 
     20 #pragma GCC diagnostic ignored "-Wunused-variable"
     21 #pragma GCC diagnostic ignored "-Wunused-function"
     22 
     23 #include "jni.h"
     24 #include <nativehelper/JNIHelp.h>
     25 #include <android_runtime/AndroidRuntime.h>
     26 #include <utils/misc.h>
     27 
     28 #include <assert.h>
     29 #include <GLES/gl.h>
     30 #include <GLES/glext.h>
     31 
     32 // Work around differences between the generated name and the actual name.
     33 
     34 #define glBlendEquation glBlendEquationOES
     35 #define glBlendEquationSeparate glBlendEquationSeparateOES
     36 #define glBlendFuncSeparate glBlendFuncSeparateOES
     37 #define glGetTexGenfv glGetTexGenfvOES
     38 #define glGetTexGeniv glGetTexGenivOES
     39 #define glGetTexGenxv glGetTexGenxvOES
     40 #define glTexGenf glTexGenfOES
     41 #define glTexGenfv glTexGenfvOES
     42 #define glTexGeni glTexGeniOES
     43 #define glTexGeniv glTexGenivOES
     44 #define glTexGenx glTexGenxOES
     45 #define glTexGenxv glTexGenxvOES
     46 
     47 
     48 
     49 /* special calls implemented in Android's GLES wrapper used to more
     50  * efficiently bound-check passed arrays */
     51 extern "C" {
     52 GL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride,
     53         const GLvoid *ptr, GLsizei count);
     54 GL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride,
     55         const GLvoid *pointer, GLsizei count);
     56 GL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type,
     57         GLsizei stride, const GLvoid *pointer, GLsizei count);
     58 GL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
     59         GLsizei stride, const GLvoid *pointer, GLsizei count);
     60 GL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type,
     61         GLsizei stride, const GLvoid *pointer, GLsizei count);
     62 GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type,
     63         GLsizei stride, const GLvoid *pointer, GLsizei count);
     64 GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
     65         GLsizei stride, const GLvoid *pointer, GLsizei count);
     66 }
     67 
     68 static int initialized = 0;
     69 
     70 static jclass nioAccessClass;
     71 static jclass bufferClass;
     72 static jclass G11ImplClass;
     73 static jmethodID getBasePointerID;
     74 static jmethodID getBaseArrayID;
     75 static jmethodID getBaseArrayOffsetID;
     76 static jmethodID allowIndirectBuffersID;
     77 static jfieldID positionID;
     78 static jfieldID limitID;
     79 static jfieldID elementSizeShiftID;
     80 static jfieldID haveCheckedExtensionsID;
     81 static jfieldID have_OES_blend_equation_separateID;
     82 static jfieldID have_OES_blend_subtractID;
     83 static jfieldID have_OES_framebuffer_objectID;
     84 static jfieldID have_OES_texture_cube_mapID;
     85 
     86 /* Cache method IDs each time the class is loaded. */
     87 
     88 static void
     89 nativeClassInit(JNIEnv *_env, jclass glImplClass)
     90 {
     91     jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
     92     nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
     93 
     94     jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
     95     bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
     96 
     97     jclass g11impClassLocal = _env->FindClass("com/google/android/gles_jni/GLImpl");
     98     G11ImplClass = (jclass) _env->NewGlobalRef(g11impClassLocal);
     99     haveCheckedExtensionsID =  _env->GetFieldID(G11ImplClass, "haveCheckedExtensions", "Z");
    100     have_OES_blend_equation_separateID =  _env->GetFieldID(G11ImplClass, "have_OES_blend_equation_separate", "Z");
    101     have_OES_blend_subtractID =  _env->GetFieldID(G11ImplClass, "have_OES_blend_subtract", "Z");
    102     have_OES_framebuffer_objectID =  _env->GetFieldID(G11ImplClass, "have_OES_framebuffer_object", "Z");
    103     have_OES_texture_cube_mapID =  _env->GetFieldID(G11ImplClass, "have_OES_texture_cube_map", "Z");
    104 
    105     getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
    106             "getBasePointer", "(Ljava/nio/Buffer;)J");
    107     getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
    108             "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
    109     getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
    110             "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
    111     allowIndirectBuffersID = _env->GetStaticMethodID(g11impClassLocal,
    112             "allowIndirectBuffers", "(Ljava/lang/String;)Z");
    113     positionID = _env->GetFieldID(bufferClass, "position", "I");
    114     limitID = _env->GetFieldID(bufferClass, "limit", "I");
    115     elementSizeShiftID =
    116         _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
    117 }
    118 
    119 static void *
    120 getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset)
    121 {
    122     jint position;
    123     jint limit;
    124     jint elementSizeShift;
    125     jlong pointer;
    126 
    127     position = _env->GetIntField(buffer, positionID);
    128     limit = _env->GetIntField(buffer, limitID);
    129     elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
    130     *remaining = (limit - position) << elementSizeShift;
    131     pointer = _env->CallStaticLongMethod(nioAccessClass,
    132             getBasePointerID, buffer);
    133     if (pointer != 0L) {
    134         *offset = 0;
    135         *array = NULL;
    136         return reinterpret_cast<void *>(pointer);
    137     }
    138 
    139     *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
    140             getBaseArrayID, buffer);
    141     if (*array == NULL) {
    142         *offset = 0;
    143         return (void*) NULL;
    144     }
    145     *offset = _env->CallStaticIntMethod(nioAccessClass,
    146             getBaseArrayOffsetID, buffer);
    147 
    148     return NULL;
    149 }
    150 
    151 static void
    152 releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
    153 {
    154     _env->ReleasePrimitiveArrayCritical(array, data,
    155 					   commit ? 0 : JNI_ABORT);
    156 }
    157 
    158 extern "C" {
    159 extern char*  __progname;
    160 }
    161 
    162 static bool
    163 allowIndirectBuffers(JNIEnv *_env) {
    164     static jint sIndirectBufferCompatability;
    165     if (sIndirectBufferCompatability == 0) {
    166         jobject appName = _env->NewStringUTF(::__progname);
    167         sIndirectBufferCompatability = _env->CallStaticBooleanMethod(G11ImplClass, allowIndirectBuffersID, appName) ? 2 : 1;
    168     }
    169     return sIndirectBufferCompatability == 2;
    170 }
    171 
    172 static void *
    173 getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
    174     if (!buffer) {
    175         return NULL;
    176     }
    177     void* buf = _env->GetDirectBufferAddress(buffer);
    178     if (buf) {
    179         jint position = _env->GetIntField(buffer, positionID);
    180         jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
    181         buf = ((char*) buf) + (position << elementSizeShift);
    182     } else {
    183         if (allowIndirectBuffers(_env)) {
    184             jarray array = 0;
    185             jint remaining;
    186             jint offset;
    187             buf = getPointer(_env, buffer, &array, &remaining, &offset);
    188             if (array) {
    189                 releasePointer(_env, array, buf, 0);
    190             }
    191             buf = (char*)buf + offset;
    192         } else {
    193             jniThrowException(_env, "java/lang/IllegalArgumentException",
    194                               "Must use a native order direct Buffer");
    195         }
    196     }
    197     return buf;
    198 }
    199 
    200 static int
    201 getNumCompressedTextureFormats() {
    202     int numCompressedTextureFormats = 0;
    203     glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &numCompressedTextureFormats);
    204     return numCompressedTextureFormats;
    205 }
    206 
    207 // Check if the extension at the head of pExtensions is pExtension. Note that pExtensions is
    208 // terminated by either 0 or space, while pExtension is terminated by 0.
    209 
    210 static bool
    211 extensionEqual(const GLubyte* pExtensions, const GLubyte* pExtension) {
    212     while (true) {
    213         char a = *pExtensions++;
    214         char b = *pExtension++;
    215         bool aEnd = a == '\0' || a == ' ';
    216         bool bEnd = b == '\0';
    217         if ( aEnd || bEnd) {
    218             return aEnd == bEnd;
    219         }
    220         if ( a != b ) {
    221             return false;
    222         }
    223     }
    224 }
    225 
    226 static const GLubyte*
    227 nextExtension(const GLubyte* pExtensions) {
    228     while (true) {
    229         char a = *pExtensions++;
    230         if ( a == '\0') {
    231             return pExtensions-1;
    232         } else if ( a == ' ') {
    233             return pExtensions;
    234         }
    235     }
    236 }
    237 
    238 static bool
    239 checkForExtension(const GLubyte* pExtensions, const GLubyte* pExtension) {
    240     for (;*pExtensions != '\0'; pExtensions = nextExtension(pExtensions)) {
    241         if (extensionEqual(pExtensions, pExtension)) {
    242             return true;
    243         }
    244     }
    245     return false;
    246 }
    247 
    248 static bool
    249 supportsExtension(JNIEnv *_env, jobject impl, jfieldID fieldId) {
    250     if (!_env->GetBooleanField(impl, haveCheckedExtensionsID)) {
    251         _env->SetBooleanField(impl, haveCheckedExtensionsID, true);
    252         const GLubyte* sExtensions = glGetString(GL_EXTENSIONS);
    253         _env->SetBooleanField(impl, have_OES_blend_equation_separateID,
    254             checkForExtension(sExtensions, (const GLubyte*) "GL_OES_blend_equation_separate"));
    255         _env->SetBooleanField(impl, have_OES_blend_subtractID,
    256             checkForExtension(sExtensions, (const GLubyte*) "GL_OES_blend_subtract"));
    257         _env->SetBooleanField(impl, have_OES_framebuffer_objectID,
    258             checkForExtension(sExtensions, (const GLubyte*) "GL_OES_framebuffer_object"));
    259         _env->SetBooleanField(impl, have_OES_texture_cube_mapID,
    260             checkForExtension(sExtensions, (const GLubyte*) "GL_OES_texture_cube_map"));
    261     }
    262     return _env->GetBooleanField(impl, fieldId);
    263 }
    264 
    265 // --------------------------------------------------------------------------
    266 /* void glActiveTexture ( GLenum texture ) */
    267 static void
    268 android_glActiveTexture__I
    269   (JNIEnv *_env, jobject _this, jint texture) {
    270     glActiveTexture(
    271         (GLenum)texture
    272     );
    273 }
    274 
    275 /* void glAlphaFunc ( GLenum func, GLclampf ref ) */
    276 static void
    277 android_glAlphaFunc__IF
    278   (JNIEnv *_env, jobject _this, jint func, jfloat ref) {
    279     glAlphaFunc(
    280         (GLenum)func,
    281         (GLclampf)ref
    282     );
    283 }
    284 
    285 /* void glAlphaFuncx ( GLenum func, GLclampx ref ) */
    286 static void
    287 android_glAlphaFuncx__II
    288   (JNIEnv *_env, jobject _this, jint func, jint ref) {
    289     glAlphaFuncx(
    290         (GLenum)func,
    291         (GLclampx)ref
    292     );
    293 }
    294 
    295 /* void glBindTexture ( GLenum target, GLuint texture ) */
    296 static void
    297 android_glBindTexture__II
    298   (JNIEnv *_env, jobject _this, jint target, jint texture) {
    299     glBindTexture(
    300         (GLenum)target,
    301         (GLuint)texture
    302     );
    303 }
    304 
    305 /* void glBlendFunc ( GLenum sfactor, GLenum dfactor ) */
    306 static void
    307 android_glBlendFunc__II
    308   (JNIEnv *_env, jobject _this, jint sfactor, jint dfactor) {
    309     glBlendFunc(
    310         (GLenum)sfactor,
    311         (GLenum)dfactor
    312     );
    313 }
    314 
    315 /* void glClear ( GLbitfield mask ) */
    316 static void
    317 android_glClear__I
    318   (JNIEnv *_env, jobject _this, jint mask) {
    319     glClear(
    320         (GLbitfield)mask
    321     );
    322 }
    323 
    324 /* void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */
    325 static void
    326 android_glClearColor__FFFF
    327   (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
    328     glClearColor(
    329         (GLclampf)red,
    330         (GLclampf)green,
    331         (GLclampf)blue,
    332         (GLclampf)alpha
    333     );
    334 }
    335 
    336 /* void glClearColorx ( GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha ) */
    337 static void
    338 android_glClearColorx__IIII
    339   (JNIEnv *_env, jobject _this, jint red, jint green, jint blue, jint alpha) {
    340     glClearColorx(
    341         (GLclampx)red,
    342         (GLclampx)green,
    343         (GLclampx)blue,
    344         (GLclampx)alpha
    345     );
    346 }
    347 
    348 /* void glClearDepthf ( GLclampf depth ) */
    349 static void
    350 android_glClearDepthf__F
    351   (JNIEnv *_env, jobject _this, jfloat depth) {
    352     glClearDepthf(
    353         (GLclampf)depth
    354     );
    355 }
    356 
    357 /* void glClearDepthx ( GLclampx depth ) */
    358 static void
    359 android_glClearDepthx__I
    360   (JNIEnv *_env, jobject _this, jint depth) {
    361     glClearDepthx(
    362         (GLclampx)depth
    363     );
    364 }
    365 
    366 /* void glClearStencil ( GLint s ) */
    367 static void
    368 android_glClearStencil__I
    369   (JNIEnv *_env, jobject _this, jint s) {
    370     glClearStencil(
    371         (GLint)s
    372     );
    373 }
    374 
    375 /* void glClientActiveTexture ( GLenum texture ) */
    376 static void
    377 android_glClientActiveTexture__I
    378   (JNIEnv *_env, jobject _this, jint texture) {
    379     glClientActiveTexture(
    380         (GLenum)texture
    381     );
    382 }
    383 
    384 /* void glColor4f ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) */
    385 static void
    386 android_glColor4f__FFFF
    387   (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
    388     glColor4f(
    389         (GLfloat)red,
    390         (GLfloat)green,
    391         (GLfloat)blue,
    392         (GLfloat)alpha
    393     );
    394 }
    395 
    396 /* void glColor4x ( GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha ) */
    397 static void
    398 android_glColor4x__IIII
    399   (JNIEnv *_env, jobject _this, jint red, jint green, jint blue, jint alpha) {
    400     glColor4x(
    401         (GLfixed)red,
    402         (GLfixed)green,
    403         (GLfixed)blue,
    404         (GLfixed)alpha
    405     );
    406 }
    407 
    408 /* void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) */
    409 static void
    410 android_glColorMask__ZZZZ
    411   (JNIEnv *_env, jobject _this, jboolean red, jboolean green, jboolean blue, jboolean alpha) {
    412     glColorMask(
    413         (GLboolean)red,
    414         (GLboolean)green,
    415         (GLboolean)blue,
    416         (GLboolean)alpha
    417     );
    418 }
    419 
    420 /* void glColorPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
    421 static void
    422 android_glColorPointerBounds__IIILjava_nio_Buffer_2I
    423   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
    424     jint _exception = 0;
    425     const char * _exceptionType = NULL;
    426     const char * _exceptionMessage = NULL;
    427     jarray _array = (jarray) 0;
    428     jint _bufferOffset = (jint) 0;
    429     jint _remaining;
    430     GLvoid *pointer = (GLvoid *) 0;
    431 
    432     if (pointer_buf) {
    433         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
    434         if ( ! pointer ) {
    435             return;
    436         }
    437     }
    438     glColorPointerBounds(
    439         (GLint)size,
    440         (GLenum)type,
    441         (GLsizei)stride,
    442         (GLvoid *)pointer,
    443         (GLsizei)remaining
    444     );
    445     if (_exception) {
    446         jniThrowException(_env, _exceptionType, _exceptionMessage);
    447     }
    448 }
    449 
    450 /* void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) */
    451 static void
    452 android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2
    453   (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint imageSize, jobject data_buf) {
    454     jint _exception = 0;
    455     const char * _exceptionType = NULL;
    456     const char * _exceptionMessage = NULL;
    457     jarray _array = (jarray) 0;
    458     jint _bufferOffset = (jint) 0;
    459     jint _remaining;
    460     GLvoid *data = (GLvoid *) 0;
    461 
    462     if (!data_buf) {
    463         _exception = 1;
    464         _exceptionType = "java/lang/IllegalArgumentException";
    465         _exceptionMessage = "data == null";
    466         goto exit;
    467     }
    468     data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
    469     if (data == NULL) {
    470         char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
    471         data = (GLvoid *) (_dataBase + _bufferOffset);
    472     }
    473     glCompressedTexImage2D(
    474         (GLenum)target,
    475         (GLint)level,
    476         (GLenum)internalformat,
    477         (GLsizei)width,
    478         (GLsizei)height,
    479         (GLint)border,
    480         (GLsizei)imageSize,
    481         (GLvoid *)data
    482     );
    483 
    484 exit:
    485     if (_array) {
    486         releasePointer(_env, _array, data, JNI_FALSE);
    487     }
    488     if (_exception) {
    489         jniThrowException(_env, _exceptionType, _exceptionMessage);
    490     }
    491 }
    492 
    493 /* void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ) */
    494 static void
    495 android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
    496   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint imageSize, jobject data_buf) {
    497     jint _exception = 0;
    498     const char * _exceptionType = NULL;
    499     const char * _exceptionMessage = NULL;
    500     jarray _array = (jarray) 0;
    501     jint _bufferOffset = (jint) 0;
    502     jint _remaining;
    503     GLvoid *data = (GLvoid *) 0;
    504 
    505     if (!data_buf) {
    506         _exception = 1;
    507         _exceptionType = "java/lang/IllegalArgumentException";
    508         _exceptionMessage = "data == null";
    509         goto exit;
    510     }
    511     data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
    512     if (data == NULL) {
    513         char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
    514         data = (GLvoid *) (_dataBase + _bufferOffset);
    515     }
    516     glCompressedTexSubImage2D(
    517         (GLenum)target,
    518         (GLint)level,
    519         (GLint)xoffset,
    520         (GLint)yoffset,
    521         (GLsizei)width,
    522         (GLsizei)height,
    523         (GLenum)format,
    524         (GLsizei)imageSize,
    525         (GLvoid *)data
    526     );
    527 
    528 exit:
    529     if (_array) {
    530         releasePointer(_env, _array, data, JNI_FALSE);
    531     }
    532     if (_exception) {
    533         jniThrowException(_env, _exceptionType, _exceptionMessage);
    534     }
    535 }
    536 
    537 /* void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) */
    538 static void
    539 android_glCopyTexImage2D__IIIIIIII
    540   (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint x, jint y, jint width, jint height, jint border) {
    541     glCopyTexImage2D(
    542         (GLenum)target,
    543         (GLint)level,
    544         (GLenum)internalformat,
    545         (GLint)x,
    546         (GLint)y,
    547         (GLsizei)width,
    548         (GLsizei)height,
    549         (GLint)border
    550     );
    551 }
    552 
    553 /* void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */
    554 static void
    555 android_glCopyTexSubImage2D__IIIIIIII
    556   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint x, jint y, jint width, jint height) {
    557     glCopyTexSubImage2D(
    558         (GLenum)target,
    559         (GLint)level,
    560         (GLint)xoffset,
    561         (GLint)yoffset,
    562         (GLint)x,
    563         (GLint)y,
    564         (GLsizei)width,
    565         (GLsizei)height
    566     );
    567 }
    568 
    569 /* void glCullFace ( GLenum mode ) */
    570 static void
    571 android_glCullFace__I
    572   (JNIEnv *_env, jobject _this, jint mode) {
    573     glCullFace(
    574         (GLenum)mode
    575     );
    576 }
    577 
    578 /* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
    579 static void
    580 android_glDeleteTextures__I_3II
    581   (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
    582     jint _exception = 0;
    583     const char * _exceptionType = NULL;
    584     const char * _exceptionMessage = NULL;
    585     GLuint *textures_base = (GLuint *) 0;
    586     jint _remaining;
    587     GLuint *textures = (GLuint *) 0;
    588 
    589     if (!textures_ref) {
    590         _exception = 1;
    591         _exceptionType = "java/lang/IllegalArgumentException";
    592         _exceptionMessage = "textures == null";
    593         goto exit;
    594     }
    595     if (offset < 0) {
    596         _exception = 1;
    597         _exceptionType = "java/lang/IllegalArgumentException";
    598         _exceptionMessage = "offset < 0";
    599         goto exit;
    600     }
    601     _remaining = _env->GetArrayLength(textures_ref) - offset;
    602     if (_remaining < n) {
    603         _exception = 1;
    604         _exceptionType = "java/lang/IllegalArgumentException";
    605         _exceptionMessage = "length - offset < n < needed";
    606         goto exit;
    607     }
    608     textures_base = (GLuint *)
    609         _env->GetIntArrayElements(textures_ref, (jboolean *)0);
    610     textures = textures_base + offset;
    611 
    612     glDeleteTextures(
    613         (GLsizei)n,
    614         (GLuint *)textures
    615     );
    616 
    617 exit:
    618     if (textures_base) {
    619         _env->ReleaseIntArrayElements(textures_ref, (jint*)textures_base,
    620             JNI_ABORT);
    621     }
    622     if (_exception) {
    623         jniThrowException(_env, _exceptionType, _exceptionMessage);
    624     }
    625 }
    626 
    627 /* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
    628 static void
    629 android_glDeleteTextures__ILjava_nio_IntBuffer_2
    630   (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
    631     jint _exception = 0;
    632     const char * _exceptionType = NULL;
    633     const char * _exceptionMessage = NULL;
    634     jintArray _array = (jintArray) 0;
    635     jint _bufferOffset = (jint) 0;
    636     jint _remaining;
    637     GLuint *textures = (GLuint *) 0;
    638 
    639     if (!textures_buf) {
    640         _exception = 1;
    641         _exceptionType = "java/lang/IllegalArgumentException";
    642         _exceptionMessage = "textures == null";
    643         goto exit;
    644     }
    645     textures = (GLuint *)getPointer(_env, textures_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
    646     if (_remaining < n) {
    647         _exception = 1;
    648         _exceptionType = "java/lang/IllegalArgumentException";
    649         _exceptionMessage = "remaining() < n < needed";
    650         goto exit;
    651     }
    652     if (textures == NULL) {
    653         char * _texturesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
    654         textures = (GLuint *) (_texturesBase + _bufferOffset);
    655     }
    656     glDeleteTextures(
    657         (GLsizei)n,
    658         (GLuint *)textures
    659     );
    660 
    661 exit:
    662     if (_array) {
    663         _env->ReleaseIntArrayElements(_array, (jint*)textures, JNI_ABORT);
    664     }
    665     if (_exception) {
    666         jniThrowException(_env, _exceptionType, _exceptionMessage);
    667     }
    668 }
    669 
    670 /* void glDepthFunc ( GLenum func ) */
    671 static void
    672 android_glDepthFunc__I
    673   (JNIEnv *_env, jobject _this, jint func) {
    674     glDepthFunc(
    675         (GLenum)func
    676     );
    677 }
    678 
    679 /* void glDepthMask ( GLboolean flag ) */
    680 static void
    681 android_glDepthMask__Z
    682   (JNIEnv *_env, jobject _this, jboolean flag) {
    683     glDepthMask(
    684         (GLboolean)flag
    685     );
    686 }
    687 
    688 /* void glDepthRangef ( GLclampf zNear, GLclampf zFar ) */
    689 static void
    690 android_glDepthRangef__FF
    691   (JNIEnv *_env, jobject _this, jfloat zNear, jfloat zFar) {
    692     glDepthRangef(
    693         (GLclampf)zNear,
    694         (GLclampf)zFar
    695     );
    696 }
    697 
    698 /* void glDepthRangex ( GLclampx zNear, GLclampx zFar ) */
    699 static void
    700 android_glDepthRangex__II
    701   (JNIEnv *_env, jobject _this, jint zNear, jint zFar) {
    702     glDepthRangex(
    703         (GLclampx)zNear,
    704         (GLclampx)zFar
    705     );
    706 }
    707 
    708 /* void glDisable ( GLenum cap ) */
    709 static void
    710 android_glDisable__I
    711   (JNIEnv *_env, jobject _this, jint cap) {
    712     glDisable(
    713         (GLenum)cap
    714     );
    715 }
    716 
    717 /* void glDisableClientState ( GLenum array ) */
    718 static void
    719 android_glDisableClientState__I
    720   (JNIEnv *_env, jobject _this, jint array) {
    721     glDisableClientState(
    722         (GLenum)array
    723     );
    724 }
    725 
    726 /* void glDrawArrays ( GLenum mode, GLint first, GLsizei count ) */
    727 static void
    728 android_glDrawArrays__III
    729   (JNIEnv *_env, jobject _this, jint mode, jint first, jint count) {
    730     glDrawArrays(
    731         (GLenum)mode,
    732         (GLint)first,
    733         (GLsizei)count
    734     );
    735 }
    736 
    737 /* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) */
    738 static void
    739 android_glDrawElements__IIILjava_nio_Buffer_2
    740   (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf) {
    741     jint _exception = 0;
    742     const char * _exceptionType = NULL;
    743     const char * _exceptionMessage = NULL;
    744     jarray _array = (jarray) 0;
    745     jint _bufferOffset = (jint) 0;
    746     jint _remaining;
    747     GLvoid *indices = (GLvoid *) 0;
    748 
    749     if (!indices_buf) {
    750         _exception = 1;
    751         _exceptionType = "java/lang/IllegalArgumentException";
    752         _exceptionMessage = "indices == null";
    753         goto exit;
    754     }
    755     indices = (GLvoid *)getPointer(_env, indices_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
    756     if (_remaining < count) {
    757         _exception = 1;
    758         _exceptionType = "java/lang/ArrayIndexOutOfBoundsException";
    759         _exceptionMessage = "remaining() < count < needed";
    760         goto exit;
    761     }
    762     if (indices == NULL) {
    763         char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
    764         indices = (GLvoid *) (_indicesBase + _bufferOffset);
    765     }
    766     glDrawElements(
    767         (GLenum)mode,
    768         (GLsizei)count,
    769         (GLenum)type,
    770         (GLvoid *)indices
    771     );
    772 
    773 exit:
    774     if (_array) {
    775         releasePointer(_env, _array, indices, JNI_FALSE);
    776     }
    777     if (_exception) {
    778         jniThrowException(_env, _exceptionType, _exceptionMessage);
    779     }
    780 }
    781 
    782 /* void glEnable ( GLenum cap ) */
    783 static void
    784 android_glEnable__I
    785   (JNIEnv *_env, jobject _this, jint cap) {
    786     glEnable(
    787         (GLenum)cap
    788     );
    789 }
    790 
    791 /* void glEnableClientState ( GLenum array ) */
    792 static void
    793 android_glEnableClientState__I
    794   (JNIEnv *_env, jobject _this, jint array) {
    795     glEnableClientState(
    796         (GLenum)array
    797     );
    798 }
    799 
    800 /* void glFinish ( void ) */
    801 static void
    802 android_glFinish__
    803   (JNIEnv *_env, jobject _this) {
    804     glFinish();
    805 }
    806 
    807 /* void glFlush ( void ) */
    808 static void
    809 android_glFlush__
    810   (JNIEnv *_env, jobject _this) {
    811     glFlush();
    812 }
    813 
    814 /* void glFogf ( GLenum pname, GLfloat param ) */
    815 static void
    816 android_glFogf__IF
    817   (JNIEnv *_env, jobject _this, jint pname, jfloat param) {
    818     glFogf(
    819         (GLenum)pname,
    820         (GLfloat)param
    821     );
    822 }
    823 
    824 /* void glFogfv ( GLenum pname, const GLfloat *params ) */
    825 static void
    826 android_glFogfv__I_3FI
    827   (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
    828     jint _exception = 0;
    829     const char * _exceptionType = NULL;
    830     const char * _exceptionMessage = NULL;
    831     GLfloat *params_base = (GLfloat *) 0;
    832     jint _remaining;
    833     GLfloat *params = (GLfloat *) 0;
    834 
    835     if (!params_ref) {
    836         _exception = 1;
    837         _exceptionType = "java/lang/IllegalArgumentException";
    838         _exceptionMessage = "params == null";
    839         goto exit;
    840     }
    841     if (offset < 0) {
    842         _exception = 1;
    843         _exceptionType = "java/lang/IllegalArgumentException";
    844         _exceptionMessage = "offset < 0";
    845         goto exit;
    846     }
    847     _remaining = _env->GetArrayLength(params_ref) - offset;
    848     int _needed;
    849     switch (pname) {
    850 #if defined(GL_FOG_MODE)
    851         case GL_FOG_MODE:
    852 #endif // defined(GL_FOG_MODE)
    853 #if defined(GL_FOG_DENSITY)
    854         case GL_FOG_DENSITY:
    855 #endif // defined(GL_FOG_DENSITY)
    856 #if defined(GL_FOG_START)
    857         case GL_FOG_START:
    858 #endif // defined(GL_FOG_START)
    859 #if defined(GL_FOG_END)
    860         case GL_FOG_END:
    861 #endif // defined(GL_FOG_END)
    862             _needed = 1;
    863             break;
    864 #if defined(GL_FOG_COLOR)
    865         case GL_FOG_COLOR:
    866 #endif // defined(GL_FOG_COLOR)
    867             _needed = 4;
    868             break;
    869         default:
    870             _needed = 1;
    871             break;
    872     }
    873     if (_remaining < _needed) {
    874         _exception = 1;
    875         _exceptionType = "java/lang/IllegalArgumentException";
    876         _exceptionMessage = "length - offset < needed";
    877         goto exit;
    878     }
    879     params_base = (GLfloat *)
    880         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
    881     params = params_base + offset;
    882 
    883     glFogfv(
    884         (GLenum)pname,
    885         (GLfloat *)params
    886     );
    887 
    888 exit:
    889     if (params_base) {
    890         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
    891             JNI_ABORT);
    892     }
    893     if (_exception) {
    894         jniThrowException(_env, _exceptionType, _exceptionMessage);
    895     }
    896 }
    897 
    898 /* void glFogfv ( GLenum pname, const GLfloat *params ) */
    899 static void
    900 android_glFogfv__ILjava_nio_FloatBuffer_2
    901   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
    902     jint _exception = 0;
    903     const char * _exceptionType = NULL;
    904     const char * _exceptionMessage = NULL;
    905     jfloatArray _array = (jfloatArray) 0;
    906     jint _bufferOffset = (jint) 0;
    907     jint _remaining;
    908     GLfloat *params = (GLfloat *) 0;
    909 
    910     if (!params_buf) {
    911         _exception = 1;
    912         _exceptionType = "java/lang/IllegalArgumentException";
    913         _exceptionMessage = "params == null";
    914         goto exit;
    915     }
    916     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
    917     int _needed;
    918     switch (pname) {
    919 #if defined(GL_FOG_MODE)
    920         case GL_FOG_MODE:
    921 #endif // defined(GL_FOG_MODE)
    922 #if defined(GL_FOG_DENSITY)
    923         case GL_FOG_DENSITY:
    924 #endif // defined(GL_FOG_DENSITY)
    925 #if defined(GL_FOG_START)
    926         case GL_FOG_START:
    927 #endif // defined(GL_FOG_START)
    928 #if defined(GL_FOG_END)
    929         case GL_FOG_END:
    930 #endif // defined(GL_FOG_END)
    931             _needed = 1;
    932             break;
    933 #if defined(GL_FOG_COLOR)
    934         case GL_FOG_COLOR:
    935 #endif // defined(GL_FOG_COLOR)
    936             _needed = 4;
    937             break;
    938         default:
    939             _needed = 1;
    940             break;
    941     }
    942     if (_remaining < _needed) {
    943         _exception = 1;
    944         _exceptionType = "java/lang/IllegalArgumentException";
    945         _exceptionMessage = "remaining() < needed";
    946         goto exit;
    947     }
    948     if (params == NULL) {
    949         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
    950         params = (GLfloat *) (_paramsBase + _bufferOffset);
    951     }
    952     glFogfv(
    953         (GLenum)pname,
    954         (GLfloat *)params
    955     );
    956 
    957 exit:
    958     if (_array) {
    959         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
    960     }
    961     if (_exception) {
    962         jniThrowException(_env, _exceptionType, _exceptionMessage);
    963     }
    964 }
    965 
    966 /* void glFogx ( GLenum pname, GLfixed param ) */
    967 static void
    968 android_glFogx__II
    969   (JNIEnv *_env, jobject _this, jint pname, jint param) {
    970     glFogx(
    971         (GLenum)pname,
    972         (GLfixed)param
    973     );
    974 }
    975 
    976 /* void glFogxv ( GLenum pname, const GLfixed *params ) */
    977 static void
    978 android_glFogxv__I_3II
    979   (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
    980     jint _exception = 0;
    981     const char * _exceptionType = NULL;
    982     const char * _exceptionMessage = NULL;
    983     GLfixed *params_base = (GLfixed *) 0;
    984     jint _remaining;
    985     GLfixed *params = (GLfixed *) 0;
    986 
    987     if (!params_ref) {
    988         _exception = 1;
    989         _exceptionType = "java/lang/IllegalArgumentException";
    990         _exceptionMessage = "params == null";
    991         goto exit;
    992     }
    993     if (offset < 0) {
    994         _exception = 1;
    995         _exceptionType = "java/lang/IllegalArgumentException";
    996         _exceptionMessage = "offset < 0";
    997         goto exit;
    998     }
    999     _remaining = _env->GetArrayLength(params_ref) - offset;
   1000     int _needed;
   1001     switch (pname) {
   1002 #if defined(GL_FOG_MODE)
   1003         case GL_FOG_MODE:
   1004 #endif // defined(GL_FOG_MODE)
   1005 #if defined(GL_FOG_DENSITY)
   1006         case GL_FOG_DENSITY:
   1007 #endif // defined(GL_FOG_DENSITY)
   1008 #if defined(GL_FOG_START)
   1009         case GL_FOG_START:
   1010 #endif // defined(GL_FOG_START)
   1011 #if defined(GL_FOG_END)
   1012         case GL_FOG_END:
   1013 #endif // defined(GL_FOG_END)
   1014             _needed = 1;
   1015             break;
   1016 #if defined(GL_FOG_COLOR)
   1017         case GL_FOG_COLOR:
   1018 #endif // defined(GL_FOG_COLOR)
   1019             _needed = 4;
   1020             break;
   1021         default:
   1022             _needed = 1;
   1023             break;
   1024     }
   1025     if (_remaining < _needed) {
   1026         _exception = 1;
   1027         _exceptionType = "java/lang/IllegalArgumentException";
   1028         _exceptionMessage = "length - offset < needed";
   1029         goto exit;
   1030     }
   1031     params_base = (GLfixed *)
   1032         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   1033     params = params_base + offset;
   1034 
   1035     glFogxv(
   1036         (GLenum)pname,
   1037         (GLfixed *)params
   1038     );
   1039 
   1040 exit:
   1041     if (params_base) {
   1042         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   1043             JNI_ABORT);
   1044     }
   1045     if (_exception) {
   1046         jniThrowException(_env, _exceptionType, _exceptionMessage);
   1047     }
   1048 }
   1049 
   1050 /* void glFogxv ( GLenum pname, const GLfixed *params ) */
   1051 static void
   1052 android_glFogxv__ILjava_nio_IntBuffer_2
   1053   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
   1054     jint _exception = 0;
   1055     const char * _exceptionType = NULL;
   1056     const char * _exceptionMessage = NULL;
   1057     jintArray _array = (jintArray) 0;
   1058     jint _bufferOffset = (jint) 0;
   1059     jint _remaining;
   1060     GLfixed *params = (GLfixed *) 0;
   1061 
   1062     if (!params_buf) {
   1063         _exception = 1;
   1064         _exceptionType = "java/lang/IllegalArgumentException";
   1065         _exceptionMessage = "params == null";
   1066         goto exit;
   1067     }
   1068     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   1069     int _needed;
   1070     switch (pname) {
   1071 #if defined(GL_FOG_MODE)
   1072         case GL_FOG_MODE:
   1073 #endif // defined(GL_FOG_MODE)
   1074 #if defined(GL_FOG_DENSITY)
   1075         case GL_FOG_DENSITY:
   1076 #endif // defined(GL_FOG_DENSITY)
   1077 #if defined(GL_FOG_START)
   1078         case GL_FOG_START:
   1079 #endif // defined(GL_FOG_START)
   1080 #if defined(GL_FOG_END)
   1081         case GL_FOG_END:
   1082 #endif // defined(GL_FOG_END)
   1083             _needed = 1;
   1084             break;
   1085 #if defined(GL_FOG_COLOR)
   1086         case GL_FOG_COLOR:
   1087 #endif // defined(GL_FOG_COLOR)
   1088             _needed = 4;
   1089             break;
   1090         default:
   1091             _needed = 1;
   1092             break;
   1093     }
   1094     if (_remaining < _needed) {
   1095         _exception = 1;
   1096         _exceptionType = "java/lang/IllegalArgumentException";
   1097         _exceptionMessage = "remaining() < needed";
   1098         goto exit;
   1099     }
   1100     if (params == NULL) {
   1101         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   1102         params = (GLfixed *) (_paramsBase + _bufferOffset);
   1103     }
   1104     glFogxv(
   1105         (GLenum)pname,
   1106         (GLfixed *)params
   1107     );
   1108 
   1109 exit:
   1110     if (_array) {
   1111         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
   1112     }
   1113     if (_exception) {
   1114         jniThrowException(_env, _exceptionType, _exceptionMessage);
   1115     }
   1116 }
   1117 
   1118 /* void glFrontFace ( GLenum mode ) */
   1119 static void
   1120 android_glFrontFace__I
   1121   (JNIEnv *_env, jobject _this, jint mode) {
   1122     glFrontFace(
   1123         (GLenum)mode
   1124     );
   1125 }
   1126 
   1127 /* void glFrustumf ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */
   1128 static void
   1129 android_glFrustumf__FFFFFF
   1130   (JNIEnv *_env, jobject _this, jfloat left, jfloat right, jfloat bottom, jfloat top, jfloat zNear, jfloat zFar) {
   1131     glFrustumf(
   1132         (GLfloat)left,
   1133         (GLfloat)right,
   1134         (GLfloat)bottom,
   1135         (GLfloat)top,
   1136         (GLfloat)zNear,
   1137         (GLfloat)zFar
   1138     );
   1139 }
   1140 
   1141 /* void glFrustumx ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) */
   1142 static void
   1143 android_glFrustumx__IIIIII
   1144   (JNIEnv *_env, jobject _this, jint left, jint right, jint bottom, jint top, jint zNear, jint zFar) {
   1145     glFrustumx(
   1146         (GLfixed)left,
   1147         (GLfixed)right,
   1148         (GLfixed)bottom,
   1149         (GLfixed)top,
   1150         (GLfixed)zNear,
   1151         (GLfixed)zFar
   1152     );
   1153 }
   1154 
   1155 /* void glGenTextures ( GLsizei n, GLuint *textures ) */
   1156 static void
   1157 android_glGenTextures__I_3II
   1158   (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
   1159     jint _exception = 0;
   1160     const char * _exceptionType = NULL;
   1161     const char * _exceptionMessage = NULL;
   1162     GLuint *textures_base = (GLuint *) 0;
   1163     jint _remaining;
   1164     GLuint *textures = (GLuint *) 0;
   1165 
   1166     if (!textures_ref) {
   1167         _exception = 1;
   1168         _exceptionType = "java/lang/IllegalArgumentException";
   1169         _exceptionMessage = "textures == null";
   1170         goto exit;
   1171     }
   1172     if (offset < 0) {
   1173         _exception = 1;
   1174         _exceptionType = "java/lang/IllegalArgumentException";
   1175         _exceptionMessage = "offset < 0";
   1176         goto exit;
   1177     }
   1178     _remaining = _env->GetArrayLength(textures_ref) - offset;
   1179     if (_remaining < n) {
   1180         _exception = 1;
   1181         _exceptionType = "java/lang/IllegalArgumentException";
   1182         _exceptionMessage = "length - offset < n < needed";
   1183         goto exit;
   1184     }
   1185     textures_base = (GLuint *)
   1186         _env->GetIntArrayElements(textures_ref, (jboolean *)0);
   1187     textures = textures_base + offset;
   1188 
   1189     glGenTextures(
   1190         (GLsizei)n,
   1191         (GLuint *)textures
   1192     );
   1193 
   1194 exit:
   1195     if (textures_base) {
   1196         _env->ReleaseIntArrayElements(textures_ref, (jint*)textures_base,
   1197             _exception ? JNI_ABORT: 0);
   1198     }
   1199     if (_exception) {
   1200         jniThrowException(_env, _exceptionType, _exceptionMessage);
   1201     }
   1202 }
   1203 
   1204 /* void glGenTextures ( GLsizei n, GLuint *textures ) */
   1205 static void
   1206 android_glGenTextures__ILjava_nio_IntBuffer_2
   1207   (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
   1208     jint _exception = 0;
   1209     const char * _exceptionType = NULL;
   1210     const char * _exceptionMessage = NULL;
   1211     jintArray _array = (jintArray) 0;
   1212     jint _bufferOffset = (jint) 0;
   1213     jint _remaining;
   1214     GLuint *textures = (GLuint *) 0;
   1215 
   1216     if (!textures_buf) {
   1217         _exception = 1;
   1218         _exceptionType = "java/lang/IllegalArgumentException";
   1219         _exceptionMessage = "textures == null";
   1220         goto exit;
   1221     }
   1222     textures = (GLuint *)getPointer(_env, textures_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   1223     if (_remaining < n) {
   1224         _exception = 1;
   1225         _exceptionType = "java/lang/IllegalArgumentException";
   1226         _exceptionMessage = "remaining() < n < needed";
   1227         goto exit;
   1228     }
   1229     if (textures == NULL) {
   1230         char * _texturesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   1231         textures = (GLuint *) (_texturesBase + _bufferOffset);
   1232     }
   1233     glGenTextures(
   1234         (GLsizei)n,
   1235         (GLuint *)textures
   1236     );
   1237 
   1238 exit:
   1239     if (_array) {
   1240         _env->ReleaseIntArrayElements(_array, (jint*)textures, _exception ? JNI_ABORT : 0);
   1241     }
   1242     if (_exception) {
   1243         jniThrowException(_env, _exceptionType, _exceptionMessage);
   1244     }
   1245 }
   1246 
   1247 /* GLenum glGetError ( void ) */
   1248 static jint
   1249 android_glGetError__
   1250   (JNIEnv *_env, jobject _this) {
   1251     GLenum _returnValue;
   1252     _returnValue = glGetError();
   1253     return (jint)_returnValue;
   1254 }
   1255 
   1256 /* void glGetIntegerv ( GLenum pname, GLint *params ) */
   1257 static void
   1258 android_glGetIntegerv__I_3II
   1259   (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
   1260     jint _exception = 0;
   1261     const char * _exceptionType = NULL;
   1262     const char * _exceptionMessage = NULL;
   1263     GLint *params_base = (GLint *) 0;
   1264     jint _remaining;
   1265     GLint *params = (GLint *) 0;
   1266 
   1267     if (!params_ref) {
   1268         _exception = 1;
   1269         _exceptionType = "java/lang/IllegalArgumentException";
   1270         _exceptionMessage = "params == null";
   1271         goto exit;
   1272     }
   1273     if (offset < 0) {
   1274         _exception = 1;
   1275         _exceptionType = "java/lang/IllegalArgumentException";
   1276         _exceptionMessage = "offset < 0";
   1277         goto exit;
   1278     }
   1279     _remaining = _env->GetArrayLength(params_ref) - offset;
   1280     int _needed;
   1281     switch (pname) {
   1282 #if defined(GL_ALPHA_BITS)
   1283         case GL_ALPHA_BITS:
   1284 #endif // defined(GL_ALPHA_BITS)
   1285 #if defined(GL_ALPHA_TEST_FUNC)
   1286         case GL_ALPHA_TEST_FUNC:
   1287 #endif // defined(GL_ALPHA_TEST_FUNC)
   1288 #if defined(GL_ALPHA_TEST_REF)
   1289         case GL_ALPHA_TEST_REF:
   1290 #endif // defined(GL_ALPHA_TEST_REF)
   1291 #if defined(GL_BLEND_DST)
   1292         case GL_BLEND_DST:
   1293 #endif // defined(GL_BLEND_DST)
   1294 #if defined(GL_BLUE_BITS)
   1295         case GL_BLUE_BITS:
   1296 #endif // defined(GL_BLUE_BITS)
   1297 #if defined(GL_COLOR_ARRAY_BUFFER_BINDING)
   1298         case GL_COLOR_ARRAY_BUFFER_BINDING:
   1299 #endif // defined(GL_COLOR_ARRAY_BUFFER_BINDING)
   1300 #if defined(GL_COLOR_ARRAY_SIZE)
   1301         case GL_COLOR_ARRAY_SIZE:
   1302 #endif // defined(GL_COLOR_ARRAY_SIZE)
   1303 #if defined(GL_COLOR_ARRAY_STRIDE)
   1304         case GL_COLOR_ARRAY_STRIDE:
   1305 #endif // defined(GL_COLOR_ARRAY_STRIDE)
   1306 #if defined(GL_COLOR_ARRAY_TYPE)
   1307         case GL_COLOR_ARRAY_TYPE:
   1308 #endif // defined(GL_COLOR_ARRAY_TYPE)
   1309 #if defined(GL_CULL_FACE)
   1310         case GL_CULL_FACE:
   1311 #endif // defined(GL_CULL_FACE)
   1312 #if defined(GL_DEPTH_BITS)
   1313         case GL_DEPTH_BITS:
   1314 #endif // defined(GL_DEPTH_BITS)
   1315 #if defined(GL_DEPTH_CLEAR_VALUE)
   1316         case GL_DEPTH_CLEAR_VALUE:
   1317 #endif // defined(GL_DEPTH_CLEAR_VALUE)
   1318 #if defined(GL_DEPTH_FUNC)
   1319         case GL_DEPTH_FUNC:
   1320 #endif // defined(GL_DEPTH_FUNC)
   1321 #if defined(GL_DEPTH_WRITEMASK)
   1322         case GL_DEPTH_WRITEMASK:
   1323 #endif // defined(GL_DEPTH_WRITEMASK)
   1324 #if defined(GL_FOG_DENSITY)
   1325         case GL_FOG_DENSITY:
   1326 #endif // defined(GL_FOG_DENSITY)
   1327 #if defined(GL_FOG_END)
   1328         case GL_FOG_END:
   1329 #endif // defined(GL_FOG_END)
   1330 #if defined(GL_FOG_MODE)
   1331         case GL_FOG_MODE:
   1332 #endif // defined(GL_FOG_MODE)
   1333 #if defined(GL_FOG_START)
   1334         case GL_FOG_START:
   1335 #endif // defined(GL_FOG_START)
   1336 #if defined(GL_FRONT_FACE)
   1337         case GL_FRONT_FACE:
   1338 #endif // defined(GL_FRONT_FACE)
   1339 #if defined(GL_GREEN_BITS)
   1340         case GL_GREEN_BITS:
   1341 #endif // defined(GL_GREEN_BITS)
   1342 #if defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
   1343         case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
   1344 #endif // defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
   1345 #if defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
   1346         case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
   1347 #endif // defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
   1348 #if defined(GL_LIGHT_MODEL_COLOR_CONTROL)
   1349         case GL_LIGHT_MODEL_COLOR_CONTROL:
   1350 #endif // defined(GL_LIGHT_MODEL_COLOR_CONTROL)
   1351 #if defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
   1352         case GL_LIGHT_MODEL_LOCAL_VIEWER:
   1353 #endif // defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
   1354 #if defined(GL_LIGHT_MODEL_TWO_SIDE)
   1355         case GL_LIGHT_MODEL_TWO_SIDE:
   1356 #endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
   1357 #if defined(GL_LINE_SMOOTH_HINT)
   1358         case GL_LINE_SMOOTH_HINT:
   1359 #endif // defined(GL_LINE_SMOOTH_HINT)
   1360 #if defined(GL_LINE_WIDTH)
   1361         case GL_LINE_WIDTH:
   1362 #endif // defined(GL_LINE_WIDTH)
   1363 #if defined(GL_LOGIC_OP_MODE)
   1364         case GL_LOGIC_OP_MODE:
   1365 #endif // defined(GL_LOGIC_OP_MODE)
   1366 #if defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
   1367         case GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES:
   1368 #endif // defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
   1369 #if defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
   1370         case GL_MATRIX_INDEX_ARRAY_SIZE_OES:
   1371 #endif // defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
   1372 #if defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
   1373         case GL_MATRIX_INDEX_ARRAY_STRIDE_OES:
   1374 #endif // defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
   1375 #if defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
   1376         case GL_MATRIX_INDEX_ARRAY_TYPE_OES:
   1377 #endif // defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
   1378 #if defined(GL_MATRIX_MODE)
   1379         case GL_MATRIX_MODE:
   1380 #endif // defined(GL_MATRIX_MODE)
   1381 #if defined(GL_MAX_CLIP_PLANES)
   1382         case GL_MAX_CLIP_PLANES:
   1383 #endif // defined(GL_MAX_CLIP_PLANES)
   1384 #if defined(GL_MAX_ELEMENTS_INDICES)
   1385         case GL_MAX_ELEMENTS_INDICES:
   1386 #endif // defined(GL_MAX_ELEMENTS_INDICES)
   1387 #if defined(GL_MAX_ELEMENTS_VERTICES)
   1388         case GL_MAX_ELEMENTS_VERTICES:
   1389 #endif // defined(GL_MAX_ELEMENTS_VERTICES)
   1390 #if defined(GL_MAX_LIGHTS)
   1391         case GL_MAX_LIGHTS:
   1392 #endif // defined(GL_MAX_LIGHTS)
   1393 #if defined(GL_MAX_MODELVIEW_STACK_DEPTH)
   1394         case GL_MAX_MODELVIEW_STACK_DEPTH:
   1395 #endif // defined(GL_MAX_MODELVIEW_STACK_DEPTH)
   1396 #if defined(GL_MAX_PALETTE_MATRICES_OES)
   1397         case GL_MAX_PALETTE_MATRICES_OES:
   1398 #endif // defined(GL_MAX_PALETTE_MATRICES_OES)
   1399 #if defined(GL_MAX_PROJECTION_STACK_DEPTH)
   1400         case GL_MAX_PROJECTION_STACK_DEPTH:
   1401 #endif // defined(GL_MAX_PROJECTION_STACK_DEPTH)
   1402 #if defined(GL_MAX_TEXTURE_SIZE)
   1403         case GL_MAX_TEXTURE_SIZE:
   1404 #endif // defined(GL_MAX_TEXTURE_SIZE)
   1405 #if defined(GL_MAX_TEXTURE_STACK_DEPTH)
   1406         case GL_MAX_TEXTURE_STACK_DEPTH:
   1407 #endif // defined(GL_MAX_TEXTURE_STACK_DEPTH)
   1408 #if defined(GL_MAX_TEXTURE_UNITS)
   1409         case GL_MAX_TEXTURE_UNITS:
   1410 #endif // defined(GL_MAX_TEXTURE_UNITS)
   1411 #if defined(GL_MAX_VERTEX_UNITS_OES)
   1412         case GL_MAX_VERTEX_UNITS_OES:
   1413 #endif // defined(GL_MAX_VERTEX_UNITS_OES)
   1414 #if defined(GL_MODELVIEW_STACK_DEPTH)
   1415         case GL_MODELVIEW_STACK_DEPTH:
   1416 #endif // defined(GL_MODELVIEW_STACK_DEPTH)
   1417 #if defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
   1418         case GL_NORMAL_ARRAY_BUFFER_BINDING:
   1419 #endif // defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
   1420 #if defined(GL_NORMAL_ARRAY_STRIDE)
   1421         case GL_NORMAL_ARRAY_STRIDE:
   1422 #endif // defined(GL_NORMAL_ARRAY_STRIDE)
   1423 #if defined(GL_NORMAL_ARRAY_TYPE)
   1424         case GL_NORMAL_ARRAY_TYPE:
   1425 #endif // defined(GL_NORMAL_ARRAY_TYPE)
   1426 #if defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
   1427         case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
   1428 #endif // defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
   1429 #if defined(GL_PACK_ALIGNMENT)
   1430         case GL_PACK_ALIGNMENT:
   1431 #endif // defined(GL_PACK_ALIGNMENT)
   1432 #if defined(GL_PERSPECTIVE_CORRECTION_HINT)
   1433         case GL_PERSPECTIVE_CORRECTION_HINT:
   1434 #endif // defined(GL_PERSPECTIVE_CORRECTION_HINT)
   1435 #if defined(GL_POINT_SIZE)
   1436         case GL_POINT_SIZE:
   1437 #endif // defined(GL_POINT_SIZE)
   1438 #if defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
   1439         case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
   1440 #endif // defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
   1441 #if defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
   1442         case GL_POINT_SIZE_ARRAY_STRIDE_OES:
   1443 #endif // defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
   1444 #if defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
   1445         case GL_POINT_SIZE_ARRAY_TYPE_OES:
   1446 #endif // defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
   1447 #if defined(GL_POINT_SMOOTH_HINT)
   1448         case GL_POINT_SMOOTH_HINT:
   1449 #endif // defined(GL_POINT_SMOOTH_HINT)
   1450 #if defined(GL_POLYGON_OFFSET_FACTOR)
   1451         case GL_POLYGON_OFFSET_FACTOR:
   1452 #endif // defined(GL_POLYGON_OFFSET_FACTOR)
   1453 #if defined(GL_POLYGON_OFFSET_UNITS)
   1454         case GL_POLYGON_OFFSET_UNITS:
   1455 #endif // defined(GL_POLYGON_OFFSET_UNITS)
   1456 #if defined(GL_PROJECTION_STACK_DEPTH)
   1457         case GL_PROJECTION_STACK_DEPTH:
   1458 #endif // defined(GL_PROJECTION_STACK_DEPTH)
   1459 #if defined(GL_RED_BITS)
   1460         case GL_RED_BITS:
   1461 #endif // defined(GL_RED_BITS)
   1462 #if defined(GL_SHADE_MODEL)
   1463         case GL_SHADE_MODEL:
   1464 #endif // defined(GL_SHADE_MODEL)
   1465 #if defined(GL_STENCIL_BITS)
   1466         case GL_STENCIL_BITS:
   1467 #endif // defined(GL_STENCIL_BITS)
   1468 #if defined(GL_STENCIL_CLEAR_VALUE)
   1469         case GL_STENCIL_CLEAR_VALUE:
   1470 #endif // defined(GL_STENCIL_CLEAR_VALUE)
   1471 #if defined(GL_STENCIL_FAIL)
   1472         case GL_STENCIL_FAIL:
   1473 #endif // defined(GL_STENCIL_FAIL)
   1474 #if defined(GL_STENCIL_FUNC)
   1475         case GL_STENCIL_FUNC:
   1476 #endif // defined(GL_STENCIL_FUNC)
   1477 #if defined(GL_STENCIL_PASS_DEPTH_FAIL)
   1478         case GL_STENCIL_PASS_DEPTH_FAIL:
   1479 #endif // defined(GL_STENCIL_PASS_DEPTH_FAIL)
   1480 #if defined(GL_STENCIL_PASS_DEPTH_PASS)
   1481         case GL_STENCIL_PASS_DEPTH_PASS:
   1482 #endif // defined(GL_STENCIL_PASS_DEPTH_PASS)
   1483 #if defined(GL_STENCIL_REF)
   1484         case GL_STENCIL_REF:
   1485 #endif // defined(GL_STENCIL_REF)
   1486 #if defined(GL_STENCIL_VALUE_MASK)
   1487         case GL_STENCIL_VALUE_MASK:
   1488 #endif // defined(GL_STENCIL_VALUE_MASK)
   1489 #if defined(GL_STENCIL_WRITEMASK)
   1490         case GL_STENCIL_WRITEMASK:
   1491 #endif // defined(GL_STENCIL_WRITEMASK)
   1492 #if defined(GL_SUBPIXEL_BITS)
   1493         case GL_SUBPIXEL_BITS:
   1494 #endif // defined(GL_SUBPIXEL_BITS)
   1495 #if defined(GL_TEXTURE_BINDING_2D)
   1496         case GL_TEXTURE_BINDING_2D:
   1497 #endif // defined(GL_TEXTURE_BINDING_2D)
   1498 #if defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
   1499         case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
   1500 #endif // defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
   1501 #if defined(GL_TEXTURE_COORD_ARRAY_SIZE)
   1502         case GL_TEXTURE_COORD_ARRAY_SIZE:
   1503 #endif // defined(GL_TEXTURE_COORD_ARRAY_SIZE)
   1504 #if defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
   1505         case GL_TEXTURE_COORD_ARRAY_STRIDE:
   1506 #endif // defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
   1507 #if defined(GL_TEXTURE_COORD_ARRAY_TYPE)
   1508         case GL_TEXTURE_COORD_ARRAY_TYPE:
   1509 #endif // defined(GL_TEXTURE_COORD_ARRAY_TYPE)
   1510 #if defined(GL_TEXTURE_STACK_DEPTH)
   1511         case GL_TEXTURE_STACK_DEPTH:
   1512 #endif // defined(GL_TEXTURE_STACK_DEPTH)
   1513 #if defined(GL_UNPACK_ALIGNMENT)
   1514         case GL_UNPACK_ALIGNMENT:
   1515 #endif // defined(GL_UNPACK_ALIGNMENT)
   1516 #if defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
   1517         case GL_VERTEX_ARRAY_BUFFER_BINDING:
   1518 #endif // defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
   1519 #if defined(GL_VERTEX_ARRAY_SIZE)
   1520         case GL_VERTEX_ARRAY_SIZE:
   1521 #endif // defined(GL_VERTEX_ARRAY_SIZE)
   1522 #if defined(GL_VERTEX_ARRAY_STRIDE)
   1523         case GL_VERTEX_ARRAY_STRIDE:
   1524 #endif // defined(GL_VERTEX_ARRAY_STRIDE)
   1525 #if defined(GL_VERTEX_ARRAY_TYPE)
   1526         case GL_VERTEX_ARRAY_TYPE:
   1527 #endif // defined(GL_VERTEX_ARRAY_TYPE)
   1528 #if defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
   1529         case GL_WEIGHT_ARRAY_BUFFER_BINDING_OES:
   1530 #endif // defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
   1531 #if defined(GL_WEIGHT_ARRAY_SIZE_OES)
   1532         case GL_WEIGHT_ARRAY_SIZE_OES:
   1533 #endif // defined(GL_WEIGHT_ARRAY_SIZE_OES)
   1534 #if defined(GL_WEIGHT_ARRAY_STRIDE_OES)
   1535         case GL_WEIGHT_ARRAY_STRIDE_OES:
   1536 #endif // defined(GL_WEIGHT_ARRAY_STRIDE_OES)
   1537 #if defined(GL_WEIGHT_ARRAY_TYPE_OES)
   1538         case GL_WEIGHT_ARRAY_TYPE_OES:
   1539 #endif // defined(GL_WEIGHT_ARRAY_TYPE_OES)
   1540             _needed = 1;
   1541             break;
   1542 #if defined(GL_ALIASED_POINT_SIZE_RANGE)
   1543         case GL_ALIASED_POINT_SIZE_RANGE:
   1544 #endif // defined(GL_ALIASED_POINT_SIZE_RANGE)
   1545 #if defined(GL_ALIASED_LINE_WIDTH_RANGE)
   1546         case GL_ALIASED_LINE_WIDTH_RANGE:
   1547 #endif // defined(GL_ALIASED_LINE_WIDTH_RANGE)
   1548 #if defined(GL_DEPTH_RANGE)
   1549         case GL_DEPTH_RANGE:
   1550 #endif // defined(GL_DEPTH_RANGE)
   1551 #if defined(GL_MAX_VIEWPORT_DIMS)
   1552         case GL_MAX_VIEWPORT_DIMS:
   1553 #endif // defined(GL_MAX_VIEWPORT_DIMS)
   1554 #if defined(GL_SMOOTH_LINE_WIDTH_RANGE)
   1555         case GL_SMOOTH_LINE_WIDTH_RANGE:
   1556 #endif // defined(GL_SMOOTH_LINE_WIDTH_RANGE)
   1557 #if defined(GL_SMOOTH_POINT_SIZE_RANGE)
   1558         case GL_SMOOTH_POINT_SIZE_RANGE:
   1559 #endif // defined(GL_SMOOTH_POINT_SIZE_RANGE)
   1560             _needed = 2;
   1561             break;
   1562 #if defined(GL_COLOR_CLEAR_VALUE)
   1563         case GL_COLOR_CLEAR_VALUE:
   1564 #endif // defined(GL_COLOR_CLEAR_VALUE)
   1565 #if defined(GL_COLOR_WRITEMASK)
   1566         case GL_COLOR_WRITEMASK:
   1567 #endif // defined(GL_COLOR_WRITEMASK)
   1568 #if defined(GL_FOG_COLOR)
   1569         case GL_FOG_COLOR:
   1570 #endif // defined(GL_FOG_COLOR)
   1571 #if defined(GL_LIGHT_MODEL_AMBIENT)
   1572         case GL_LIGHT_MODEL_AMBIENT:
   1573 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
   1574 #if defined(GL_SCISSOR_BOX)
   1575         case GL_SCISSOR_BOX:
   1576 #endif // defined(GL_SCISSOR_BOX)
   1577 #if defined(GL_VIEWPORT)
   1578         case GL_VIEWPORT:
   1579 #endif // defined(GL_VIEWPORT)
   1580             _needed = 4;
   1581             break;
   1582 #if defined(GL_MODELVIEW_MATRIX)
   1583         case GL_MODELVIEW_MATRIX:
   1584 #endif // defined(GL_MODELVIEW_MATRIX)
   1585 #if defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
   1586         case GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES:
   1587 #endif // defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
   1588 #if defined(GL_PROJECTION_MATRIX)
   1589         case GL_PROJECTION_MATRIX:
   1590 #endif // defined(GL_PROJECTION_MATRIX)
   1591 #if defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
   1592         case GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES:
   1593 #endif // defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
   1594 #if defined(GL_TEXTURE_MATRIX)
   1595         case GL_TEXTURE_MATRIX:
   1596 #endif // defined(GL_TEXTURE_MATRIX)
   1597 #if defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
   1598         case GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES:
   1599 #endif // defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
   1600             _needed = 16;
   1601             break;
   1602 #if defined(GL_COMPRESSED_TEXTURE_FORMATS)
   1603         case GL_COMPRESSED_TEXTURE_FORMATS:
   1604 #endif // defined(GL_COMPRESSED_TEXTURE_FORMATS)
   1605             _needed = getNumCompressedTextureFormats();
   1606             break;
   1607         default:
   1608             _needed = 1;
   1609             break;
   1610     }
   1611     if (_remaining < _needed) {
   1612         _exception = 1;
   1613         _exceptionType = "java/lang/IllegalArgumentException";
   1614         _exceptionMessage = "length - offset < needed";
   1615         goto exit;
   1616     }
   1617     params_base = (GLint *)
   1618         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   1619     params = params_base + offset;
   1620 
   1621     glGetIntegerv(
   1622         (GLenum)pname,
   1623         (GLint *)params
   1624     );
   1625 
   1626 exit:
   1627     if (params_base) {
   1628         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   1629             _exception ? JNI_ABORT: 0);
   1630     }
   1631     if (_exception) {
   1632         jniThrowException(_env, _exceptionType, _exceptionMessage);
   1633     }
   1634 }
   1635 
   1636 /* void glGetIntegerv ( GLenum pname, GLint *params ) */
   1637 static void
   1638 android_glGetIntegerv__ILjava_nio_IntBuffer_2
   1639   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
   1640     jint _exception = 0;
   1641     const char * _exceptionType = NULL;
   1642     const char * _exceptionMessage = NULL;
   1643     jintArray _array = (jintArray) 0;
   1644     jint _bufferOffset = (jint) 0;
   1645     jint _remaining;
   1646     GLint *params = (GLint *) 0;
   1647 
   1648     if (!params_buf) {
   1649         _exception = 1;
   1650         _exceptionType = "java/lang/IllegalArgumentException";
   1651         _exceptionMessage = "params == null";
   1652         goto exit;
   1653     }
   1654     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   1655     int _needed;
   1656     switch (pname) {
   1657 #if defined(GL_ALPHA_BITS)
   1658         case GL_ALPHA_BITS:
   1659 #endif // defined(GL_ALPHA_BITS)
   1660 #if defined(GL_ALPHA_TEST_FUNC)
   1661         case GL_ALPHA_TEST_FUNC:
   1662 #endif // defined(GL_ALPHA_TEST_FUNC)
   1663 #if defined(GL_ALPHA_TEST_REF)
   1664         case GL_ALPHA_TEST_REF:
   1665 #endif // defined(GL_ALPHA_TEST_REF)
   1666 #if defined(GL_BLEND_DST)
   1667         case GL_BLEND_DST:
   1668 #endif // defined(GL_BLEND_DST)
   1669 #if defined(GL_BLUE_BITS)
   1670         case GL_BLUE_BITS:
   1671 #endif // defined(GL_BLUE_BITS)
   1672 #if defined(GL_COLOR_ARRAY_BUFFER_BINDING)
   1673         case GL_COLOR_ARRAY_BUFFER_BINDING:
   1674 #endif // defined(GL_COLOR_ARRAY_BUFFER_BINDING)
   1675 #if defined(GL_COLOR_ARRAY_SIZE)
   1676         case GL_COLOR_ARRAY_SIZE:
   1677 #endif // defined(GL_COLOR_ARRAY_SIZE)
   1678 #if defined(GL_COLOR_ARRAY_STRIDE)
   1679         case GL_COLOR_ARRAY_STRIDE:
   1680 #endif // defined(GL_COLOR_ARRAY_STRIDE)
   1681 #if defined(GL_COLOR_ARRAY_TYPE)
   1682         case GL_COLOR_ARRAY_TYPE:
   1683 #endif // defined(GL_COLOR_ARRAY_TYPE)
   1684 #if defined(GL_CULL_FACE)
   1685         case GL_CULL_FACE:
   1686 #endif // defined(GL_CULL_FACE)
   1687 #if defined(GL_DEPTH_BITS)
   1688         case GL_DEPTH_BITS:
   1689 #endif // defined(GL_DEPTH_BITS)
   1690 #if defined(GL_DEPTH_CLEAR_VALUE)
   1691         case GL_DEPTH_CLEAR_VALUE:
   1692 #endif // defined(GL_DEPTH_CLEAR_VALUE)
   1693 #if defined(GL_DEPTH_FUNC)
   1694         case GL_DEPTH_FUNC:
   1695 #endif // defined(GL_DEPTH_FUNC)
   1696 #if defined(GL_DEPTH_WRITEMASK)
   1697         case GL_DEPTH_WRITEMASK:
   1698 #endif // defined(GL_DEPTH_WRITEMASK)
   1699 #if defined(GL_FOG_DENSITY)
   1700         case GL_FOG_DENSITY:
   1701 #endif // defined(GL_FOG_DENSITY)
   1702 #if defined(GL_FOG_END)
   1703         case GL_FOG_END:
   1704 #endif // defined(GL_FOG_END)
   1705 #if defined(GL_FOG_MODE)
   1706         case GL_FOG_MODE:
   1707 #endif // defined(GL_FOG_MODE)
   1708 #if defined(GL_FOG_START)
   1709         case GL_FOG_START:
   1710 #endif // defined(GL_FOG_START)
   1711 #if defined(GL_FRONT_FACE)
   1712         case GL_FRONT_FACE:
   1713 #endif // defined(GL_FRONT_FACE)
   1714 #if defined(GL_GREEN_BITS)
   1715         case GL_GREEN_BITS:
   1716 #endif // defined(GL_GREEN_BITS)
   1717 #if defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
   1718         case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
   1719 #endif // defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
   1720 #if defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
   1721         case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
   1722 #endif // defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
   1723 #if defined(GL_LIGHT_MODEL_COLOR_CONTROL)
   1724         case GL_LIGHT_MODEL_COLOR_CONTROL:
   1725 #endif // defined(GL_LIGHT_MODEL_COLOR_CONTROL)
   1726 #if defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
   1727         case GL_LIGHT_MODEL_LOCAL_VIEWER:
   1728 #endif // defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
   1729 #if defined(GL_LIGHT_MODEL_TWO_SIDE)
   1730         case GL_LIGHT_MODEL_TWO_SIDE:
   1731 #endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
   1732 #if defined(GL_LINE_SMOOTH_HINT)
   1733         case GL_LINE_SMOOTH_HINT:
   1734 #endif // defined(GL_LINE_SMOOTH_HINT)
   1735 #if defined(GL_LINE_WIDTH)
   1736         case GL_LINE_WIDTH:
   1737 #endif // defined(GL_LINE_WIDTH)
   1738 #if defined(GL_LOGIC_OP_MODE)
   1739         case GL_LOGIC_OP_MODE:
   1740 #endif // defined(GL_LOGIC_OP_MODE)
   1741 #if defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
   1742         case GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES:
   1743 #endif // defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
   1744 #if defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
   1745         case GL_MATRIX_INDEX_ARRAY_SIZE_OES:
   1746 #endif // defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
   1747 #if defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
   1748         case GL_MATRIX_INDEX_ARRAY_STRIDE_OES:
   1749 #endif // defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
   1750 #if defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
   1751         case GL_MATRIX_INDEX_ARRAY_TYPE_OES:
   1752 #endif // defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
   1753 #if defined(GL_MATRIX_MODE)
   1754         case GL_MATRIX_MODE:
   1755 #endif // defined(GL_MATRIX_MODE)
   1756 #if defined(GL_MAX_CLIP_PLANES)
   1757         case GL_MAX_CLIP_PLANES:
   1758 #endif // defined(GL_MAX_CLIP_PLANES)
   1759 #if defined(GL_MAX_ELEMENTS_INDICES)
   1760         case GL_MAX_ELEMENTS_INDICES:
   1761 #endif // defined(GL_MAX_ELEMENTS_INDICES)
   1762 #if defined(GL_MAX_ELEMENTS_VERTICES)
   1763         case GL_MAX_ELEMENTS_VERTICES:
   1764 #endif // defined(GL_MAX_ELEMENTS_VERTICES)
   1765 #if defined(GL_MAX_LIGHTS)
   1766         case GL_MAX_LIGHTS:
   1767 #endif // defined(GL_MAX_LIGHTS)
   1768 #if defined(GL_MAX_MODELVIEW_STACK_DEPTH)
   1769         case GL_MAX_MODELVIEW_STACK_DEPTH:
   1770 #endif // defined(GL_MAX_MODELVIEW_STACK_DEPTH)
   1771 #if defined(GL_MAX_PALETTE_MATRICES_OES)
   1772         case GL_MAX_PALETTE_MATRICES_OES:
   1773 #endif // defined(GL_MAX_PALETTE_MATRICES_OES)
   1774 #if defined(GL_MAX_PROJECTION_STACK_DEPTH)
   1775         case GL_MAX_PROJECTION_STACK_DEPTH:
   1776 #endif // defined(GL_MAX_PROJECTION_STACK_DEPTH)
   1777 #if defined(GL_MAX_TEXTURE_SIZE)
   1778         case GL_MAX_TEXTURE_SIZE:
   1779 #endif // defined(GL_MAX_TEXTURE_SIZE)
   1780 #if defined(GL_MAX_TEXTURE_STACK_DEPTH)
   1781         case GL_MAX_TEXTURE_STACK_DEPTH:
   1782 #endif // defined(GL_MAX_TEXTURE_STACK_DEPTH)
   1783 #if defined(GL_MAX_TEXTURE_UNITS)
   1784         case GL_MAX_TEXTURE_UNITS:
   1785 #endif // defined(GL_MAX_TEXTURE_UNITS)
   1786 #if defined(GL_MAX_VERTEX_UNITS_OES)
   1787         case GL_MAX_VERTEX_UNITS_OES:
   1788 #endif // defined(GL_MAX_VERTEX_UNITS_OES)
   1789 #if defined(GL_MODELVIEW_STACK_DEPTH)
   1790         case GL_MODELVIEW_STACK_DEPTH:
   1791 #endif // defined(GL_MODELVIEW_STACK_DEPTH)
   1792 #if defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
   1793         case GL_NORMAL_ARRAY_BUFFER_BINDING:
   1794 #endif // defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
   1795 #if defined(GL_NORMAL_ARRAY_STRIDE)
   1796         case GL_NORMAL_ARRAY_STRIDE:
   1797 #endif // defined(GL_NORMAL_ARRAY_STRIDE)
   1798 #if defined(GL_NORMAL_ARRAY_TYPE)
   1799         case GL_NORMAL_ARRAY_TYPE:
   1800 #endif // defined(GL_NORMAL_ARRAY_TYPE)
   1801 #if defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
   1802         case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
   1803 #endif // defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
   1804 #if defined(GL_PACK_ALIGNMENT)
   1805         case GL_PACK_ALIGNMENT:
   1806 #endif // defined(GL_PACK_ALIGNMENT)
   1807 #if defined(GL_PERSPECTIVE_CORRECTION_HINT)
   1808         case GL_PERSPECTIVE_CORRECTION_HINT:
   1809 #endif // defined(GL_PERSPECTIVE_CORRECTION_HINT)
   1810 #if defined(GL_POINT_SIZE)
   1811         case GL_POINT_SIZE:
   1812 #endif // defined(GL_POINT_SIZE)
   1813 #if defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
   1814         case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
   1815 #endif // defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
   1816 #if defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
   1817         case GL_POINT_SIZE_ARRAY_STRIDE_OES:
   1818 #endif // defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
   1819 #if defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
   1820         case GL_POINT_SIZE_ARRAY_TYPE_OES:
   1821 #endif // defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
   1822 #if defined(GL_POINT_SMOOTH_HINT)
   1823         case GL_POINT_SMOOTH_HINT:
   1824 #endif // defined(GL_POINT_SMOOTH_HINT)
   1825 #if defined(GL_POLYGON_OFFSET_FACTOR)
   1826         case GL_POLYGON_OFFSET_FACTOR:
   1827 #endif // defined(GL_POLYGON_OFFSET_FACTOR)
   1828 #if defined(GL_POLYGON_OFFSET_UNITS)
   1829         case GL_POLYGON_OFFSET_UNITS:
   1830 #endif // defined(GL_POLYGON_OFFSET_UNITS)
   1831 #if defined(GL_PROJECTION_STACK_DEPTH)
   1832         case GL_PROJECTION_STACK_DEPTH:
   1833 #endif // defined(GL_PROJECTION_STACK_DEPTH)
   1834 #if defined(GL_RED_BITS)
   1835         case GL_RED_BITS:
   1836 #endif // defined(GL_RED_BITS)
   1837 #if defined(GL_SHADE_MODEL)
   1838         case GL_SHADE_MODEL:
   1839 #endif // defined(GL_SHADE_MODEL)
   1840 #if defined(GL_STENCIL_BITS)
   1841         case GL_STENCIL_BITS:
   1842 #endif // defined(GL_STENCIL_BITS)
   1843 #if defined(GL_STENCIL_CLEAR_VALUE)
   1844         case GL_STENCIL_CLEAR_VALUE:
   1845 #endif // defined(GL_STENCIL_CLEAR_VALUE)
   1846 #if defined(GL_STENCIL_FAIL)
   1847         case GL_STENCIL_FAIL:
   1848 #endif // defined(GL_STENCIL_FAIL)
   1849 #if defined(GL_STENCIL_FUNC)
   1850         case GL_STENCIL_FUNC:
   1851 #endif // defined(GL_STENCIL_FUNC)
   1852 #if defined(GL_STENCIL_PASS_DEPTH_FAIL)
   1853         case GL_STENCIL_PASS_DEPTH_FAIL:
   1854 #endif // defined(GL_STENCIL_PASS_DEPTH_FAIL)
   1855 #if defined(GL_STENCIL_PASS_DEPTH_PASS)
   1856         case GL_STENCIL_PASS_DEPTH_PASS:
   1857 #endif // defined(GL_STENCIL_PASS_DEPTH_PASS)
   1858 #if defined(GL_STENCIL_REF)
   1859         case GL_STENCIL_REF:
   1860 #endif // defined(GL_STENCIL_REF)
   1861 #if defined(GL_STENCIL_VALUE_MASK)
   1862         case GL_STENCIL_VALUE_MASK:
   1863 #endif // defined(GL_STENCIL_VALUE_MASK)
   1864 #if defined(GL_STENCIL_WRITEMASK)
   1865         case GL_STENCIL_WRITEMASK:
   1866 #endif // defined(GL_STENCIL_WRITEMASK)
   1867 #if defined(GL_SUBPIXEL_BITS)
   1868         case GL_SUBPIXEL_BITS:
   1869 #endif // defined(GL_SUBPIXEL_BITS)
   1870 #if defined(GL_TEXTURE_BINDING_2D)
   1871         case GL_TEXTURE_BINDING_2D:
   1872 #endif // defined(GL_TEXTURE_BINDING_2D)
   1873 #if defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
   1874         case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
   1875 #endif // defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
   1876 #if defined(GL_TEXTURE_COORD_ARRAY_SIZE)
   1877         case GL_TEXTURE_COORD_ARRAY_SIZE:
   1878 #endif // defined(GL_TEXTURE_COORD_ARRAY_SIZE)
   1879 #if defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
   1880         case GL_TEXTURE_COORD_ARRAY_STRIDE:
   1881 #endif // defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
   1882 #if defined(GL_TEXTURE_COORD_ARRAY_TYPE)
   1883         case GL_TEXTURE_COORD_ARRAY_TYPE:
   1884 #endif // defined(GL_TEXTURE_COORD_ARRAY_TYPE)
   1885 #if defined(GL_TEXTURE_STACK_DEPTH)
   1886         case GL_TEXTURE_STACK_DEPTH:
   1887 #endif // defined(GL_TEXTURE_STACK_DEPTH)
   1888 #if defined(GL_UNPACK_ALIGNMENT)
   1889         case GL_UNPACK_ALIGNMENT:
   1890 #endif // defined(GL_UNPACK_ALIGNMENT)
   1891 #if defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
   1892         case GL_VERTEX_ARRAY_BUFFER_BINDING:
   1893 #endif // defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
   1894 #if defined(GL_VERTEX_ARRAY_SIZE)
   1895         case GL_VERTEX_ARRAY_SIZE:
   1896 #endif // defined(GL_VERTEX_ARRAY_SIZE)
   1897 #if defined(GL_VERTEX_ARRAY_STRIDE)
   1898         case GL_VERTEX_ARRAY_STRIDE:
   1899 #endif // defined(GL_VERTEX_ARRAY_STRIDE)
   1900 #if defined(GL_VERTEX_ARRAY_TYPE)
   1901         case GL_VERTEX_ARRAY_TYPE:
   1902 #endif // defined(GL_VERTEX_ARRAY_TYPE)
   1903 #if defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
   1904         case GL_WEIGHT_ARRAY_BUFFER_BINDING_OES:
   1905 #endif // defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
   1906 #if defined(GL_WEIGHT_ARRAY_SIZE_OES)
   1907         case GL_WEIGHT_ARRAY_SIZE_OES:
   1908 #endif // defined(GL_WEIGHT_ARRAY_SIZE_OES)
   1909 #if defined(GL_WEIGHT_ARRAY_STRIDE_OES)
   1910         case GL_WEIGHT_ARRAY_STRIDE_OES:
   1911 #endif // defined(GL_WEIGHT_ARRAY_STRIDE_OES)
   1912 #if defined(GL_WEIGHT_ARRAY_TYPE_OES)
   1913         case GL_WEIGHT_ARRAY_TYPE_OES:
   1914 #endif // defined(GL_WEIGHT_ARRAY_TYPE_OES)
   1915             _needed = 1;
   1916             break;
   1917 #if defined(GL_ALIASED_POINT_SIZE_RANGE)
   1918         case GL_ALIASED_POINT_SIZE_RANGE:
   1919 #endif // defined(GL_ALIASED_POINT_SIZE_RANGE)
   1920 #if defined(GL_ALIASED_LINE_WIDTH_RANGE)
   1921         case GL_ALIASED_LINE_WIDTH_RANGE:
   1922 #endif // defined(GL_ALIASED_LINE_WIDTH_RANGE)
   1923 #if defined(GL_DEPTH_RANGE)
   1924         case GL_DEPTH_RANGE:
   1925 #endif // defined(GL_DEPTH_RANGE)
   1926 #if defined(GL_MAX_VIEWPORT_DIMS)
   1927         case GL_MAX_VIEWPORT_DIMS:
   1928 #endif // defined(GL_MAX_VIEWPORT_DIMS)
   1929 #if defined(GL_SMOOTH_LINE_WIDTH_RANGE)
   1930         case GL_SMOOTH_LINE_WIDTH_RANGE:
   1931 #endif // defined(GL_SMOOTH_LINE_WIDTH_RANGE)
   1932 #if defined(GL_SMOOTH_POINT_SIZE_RANGE)
   1933         case GL_SMOOTH_POINT_SIZE_RANGE:
   1934 #endif // defined(GL_SMOOTH_POINT_SIZE_RANGE)
   1935             _needed = 2;
   1936             break;
   1937 #if defined(GL_COLOR_CLEAR_VALUE)
   1938         case GL_COLOR_CLEAR_VALUE:
   1939 #endif // defined(GL_COLOR_CLEAR_VALUE)
   1940 #if defined(GL_COLOR_WRITEMASK)
   1941         case GL_COLOR_WRITEMASK:
   1942 #endif // defined(GL_COLOR_WRITEMASK)
   1943 #if defined(GL_FOG_COLOR)
   1944         case GL_FOG_COLOR:
   1945 #endif // defined(GL_FOG_COLOR)
   1946 #if defined(GL_LIGHT_MODEL_AMBIENT)
   1947         case GL_LIGHT_MODEL_AMBIENT:
   1948 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
   1949 #if defined(GL_SCISSOR_BOX)
   1950         case GL_SCISSOR_BOX:
   1951 #endif // defined(GL_SCISSOR_BOX)
   1952 #if defined(GL_VIEWPORT)
   1953         case GL_VIEWPORT:
   1954 #endif // defined(GL_VIEWPORT)
   1955             _needed = 4;
   1956             break;
   1957 #if defined(GL_MODELVIEW_MATRIX)
   1958         case GL_MODELVIEW_MATRIX:
   1959 #endif // defined(GL_MODELVIEW_MATRIX)
   1960 #if defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
   1961         case GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES:
   1962 #endif // defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
   1963 #if defined(GL_PROJECTION_MATRIX)
   1964         case GL_PROJECTION_MATRIX:
   1965 #endif // defined(GL_PROJECTION_MATRIX)
   1966 #if defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
   1967         case GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES:
   1968 #endif // defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
   1969 #if defined(GL_TEXTURE_MATRIX)
   1970         case GL_TEXTURE_MATRIX:
   1971 #endif // defined(GL_TEXTURE_MATRIX)
   1972 #if defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
   1973         case GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES:
   1974 #endif // defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
   1975             _needed = 16;
   1976             break;
   1977 #if defined(GL_COMPRESSED_TEXTURE_FORMATS)
   1978         case GL_COMPRESSED_TEXTURE_FORMATS:
   1979 #endif // defined(GL_COMPRESSED_TEXTURE_FORMATS)
   1980             _needed = getNumCompressedTextureFormats();
   1981             break;
   1982         default:
   1983             _needed = 1;
   1984             break;
   1985     }
   1986     if (_remaining < _needed) {
   1987         _exception = 1;
   1988         _exceptionType = "java/lang/IllegalArgumentException";
   1989         _exceptionMessage = "remaining() < needed";
   1990         goto exit;
   1991     }
   1992     if (params == NULL) {
   1993         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   1994         params = (GLint *) (_paramsBase + _bufferOffset);
   1995     }
   1996     glGetIntegerv(
   1997         (GLenum)pname,
   1998         (GLint *)params
   1999     );
   2000 
   2001 exit:
   2002     if (_array) {
   2003         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   2004     }
   2005     if (_exception) {
   2006         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2007     }
   2008 }
   2009 
   2010 /* const GLubyte * glGetString ( GLenum name ) */
   2011 static jstring android_glGetString(JNIEnv *_env, jobject, jint name) {
   2012     const char* chars = (const char*) glGetString((GLenum) name);
   2013     return _env->NewStringUTF(chars);
   2014 }
   2015 /* void glHint ( GLenum target, GLenum mode ) */
   2016 static void
   2017 android_glHint__II
   2018   (JNIEnv *_env, jobject _this, jint target, jint mode) {
   2019     glHint(
   2020         (GLenum)target,
   2021         (GLenum)mode
   2022     );
   2023 }
   2024 
   2025 /* void glLightModelf ( GLenum pname, GLfloat param ) */
   2026 static void
   2027 android_glLightModelf__IF
   2028   (JNIEnv *_env, jobject _this, jint pname, jfloat param) {
   2029     glLightModelf(
   2030         (GLenum)pname,
   2031         (GLfloat)param
   2032     );
   2033 }
   2034 
   2035 /* void glLightModelfv ( GLenum pname, const GLfloat *params ) */
   2036 static void
   2037 android_glLightModelfv__I_3FI
   2038   (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
   2039     jint _exception = 0;
   2040     const char * _exceptionType = NULL;
   2041     const char * _exceptionMessage = NULL;
   2042     GLfloat *params_base = (GLfloat *) 0;
   2043     jint _remaining;
   2044     GLfloat *params = (GLfloat *) 0;
   2045 
   2046     if (!params_ref) {
   2047         _exception = 1;
   2048         _exceptionType = "java/lang/IllegalArgumentException";
   2049         _exceptionMessage = "params == null";
   2050         goto exit;
   2051     }
   2052     if (offset < 0) {
   2053         _exception = 1;
   2054         _exceptionType = "java/lang/IllegalArgumentException";
   2055         _exceptionMessage = "offset < 0";
   2056         goto exit;
   2057     }
   2058     _remaining = _env->GetArrayLength(params_ref) - offset;
   2059     int _needed;
   2060     switch (pname) {
   2061 #if defined(GL_LIGHT_MODEL_TWO_SIDE)
   2062         case GL_LIGHT_MODEL_TWO_SIDE:
   2063 #endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
   2064             _needed = 1;
   2065             break;
   2066 #if defined(GL_LIGHT_MODEL_AMBIENT)
   2067         case GL_LIGHT_MODEL_AMBIENT:
   2068 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
   2069             _needed = 4;
   2070             break;
   2071         default:
   2072             _needed = 1;
   2073             break;
   2074     }
   2075     if (_remaining < _needed) {
   2076         _exception = 1;
   2077         _exceptionType = "java/lang/IllegalArgumentException";
   2078         _exceptionMessage = "length - offset < needed";
   2079         goto exit;
   2080     }
   2081     params_base = (GLfloat *)
   2082         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
   2083     params = params_base + offset;
   2084 
   2085     glLightModelfv(
   2086         (GLenum)pname,
   2087         (GLfloat *)params
   2088     );
   2089 
   2090 exit:
   2091     if (params_base) {
   2092         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
   2093             JNI_ABORT);
   2094     }
   2095     if (_exception) {
   2096         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2097     }
   2098 }
   2099 
   2100 /* void glLightModelfv ( GLenum pname, const GLfloat *params ) */
   2101 static void
   2102 android_glLightModelfv__ILjava_nio_FloatBuffer_2
   2103   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
   2104     jint _exception = 0;
   2105     const char * _exceptionType = NULL;
   2106     const char * _exceptionMessage = NULL;
   2107     jfloatArray _array = (jfloatArray) 0;
   2108     jint _bufferOffset = (jint) 0;
   2109     jint _remaining;
   2110     GLfloat *params = (GLfloat *) 0;
   2111 
   2112     if (!params_buf) {
   2113         _exception = 1;
   2114         _exceptionType = "java/lang/IllegalArgumentException";
   2115         _exceptionMessage = "params == null";
   2116         goto exit;
   2117     }
   2118     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   2119     int _needed;
   2120     switch (pname) {
   2121 #if defined(GL_LIGHT_MODEL_TWO_SIDE)
   2122         case GL_LIGHT_MODEL_TWO_SIDE:
   2123 #endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
   2124             _needed = 1;
   2125             break;
   2126 #if defined(GL_LIGHT_MODEL_AMBIENT)
   2127         case GL_LIGHT_MODEL_AMBIENT:
   2128 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
   2129             _needed = 4;
   2130             break;
   2131         default:
   2132             _needed = 1;
   2133             break;
   2134     }
   2135     if (_remaining < _needed) {
   2136         _exception = 1;
   2137         _exceptionType = "java/lang/IllegalArgumentException";
   2138         _exceptionMessage = "remaining() < needed";
   2139         goto exit;
   2140     }
   2141     if (params == NULL) {
   2142         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   2143         params = (GLfloat *) (_paramsBase + _bufferOffset);
   2144     }
   2145     glLightModelfv(
   2146         (GLenum)pname,
   2147         (GLfloat *)params
   2148     );
   2149 
   2150 exit:
   2151     if (_array) {
   2152         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
   2153     }
   2154     if (_exception) {
   2155         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2156     }
   2157 }
   2158 
   2159 /* void glLightModelx ( GLenum pname, GLfixed param ) */
   2160 static void
   2161 android_glLightModelx__II
   2162   (JNIEnv *_env, jobject _this, jint pname, jint param) {
   2163     glLightModelx(
   2164         (GLenum)pname,
   2165         (GLfixed)param
   2166     );
   2167 }
   2168 
   2169 /* void glLightModelxv ( GLenum pname, const GLfixed *params ) */
   2170 static void
   2171 android_glLightModelxv__I_3II
   2172   (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
   2173     jint _exception = 0;
   2174     const char * _exceptionType = NULL;
   2175     const char * _exceptionMessage = NULL;
   2176     GLfixed *params_base = (GLfixed *) 0;
   2177     jint _remaining;
   2178     GLfixed *params = (GLfixed *) 0;
   2179 
   2180     if (!params_ref) {
   2181         _exception = 1;
   2182         _exceptionType = "java/lang/IllegalArgumentException";
   2183         _exceptionMessage = "params == null";
   2184         goto exit;
   2185     }
   2186     if (offset < 0) {
   2187         _exception = 1;
   2188         _exceptionType = "java/lang/IllegalArgumentException";
   2189         _exceptionMessage = "offset < 0";
   2190         goto exit;
   2191     }
   2192     _remaining = _env->GetArrayLength(params_ref) - offset;
   2193     int _needed;
   2194     switch (pname) {
   2195 #if defined(GL_LIGHT_MODEL_TWO_SIDE)
   2196         case GL_LIGHT_MODEL_TWO_SIDE:
   2197 #endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
   2198             _needed = 1;
   2199             break;
   2200 #if defined(GL_LIGHT_MODEL_AMBIENT)
   2201         case GL_LIGHT_MODEL_AMBIENT:
   2202 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
   2203             _needed = 4;
   2204             break;
   2205         default:
   2206             _needed = 1;
   2207             break;
   2208     }
   2209     if (_remaining < _needed) {
   2210         _exception = 1;
   2211         _exceptionType = "java/lang/IllegalArgumentException";
   2212         _exceptionMessage = "length - offset < needed";
   2213         goto exit;
   2214     }
   2215     params_base = (GLfixed *)
   2216         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   2217     params = params_base + offset;
   2218 
   2219     glLightModelxv(
   2220         (GLenum)pname,
   2221         (GLfixed *)params
   2222     );
   2223 
   2224 exit:
   2225     if (params_base) {
   2226         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   2227             JNI_ABORT);
   2228     }
   2229     if (_exception) {
   2230         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2231     }
   2232 }
   2233 
   2234 /* void glLightModelxv ( GLenum pname, const GLfixed *params ) */
   2235 static void
   2236 android_glLightModelxv__ILjava_nio_IntBuffer_2
   2237   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
   2238     jint _exception = 0;
   2239     const char * _exceptionType = NULL;
   2240     const char * _exceptionMessage = NULL;
   2241     jintArray _array = (jintArray) 0;
   2242     jint _bufferOffset = (jint) 0;
   2243     jint _remaining;
   2244     GLfixed *params = (GLfixed *) 0;
   2245 
   2246     if (!params_buf) {
   2247         _exception = 1;
   2248         _exceptionType = "java/lang/IllegalArgumentException";
   2249         _exceptionMessage = "params == null";
   2250         goto exit;
   2251     }
   2252     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   2253     int _needed;
   2254     switch (pname) {
   2255 #if defined(GL_LIGHT_MODEL_TWO_SIDE)
   2256         case GL_LIGHT_MODEL_TWO_SIDE:
   2257 #endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
   2258             _needed = 1;
   2259             break;
   2260 #if defined(GL_LIGHT_MODEL_AMBIENT)
   2261         case GL_LIGHT_MODEL_AMBIENT:
   2262 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
   2263             _needed = 4;
   2264             break;
   2265         default:
   2266             _needed = 1;
   2267             break;
   2268     }
   2269     if (_remaining < _needed) {
   2270         _exception = 1;
   2271         _exceptionType = "java/lang/IllegalArgumentException";
   2272         _exceptionMessage = "remaining() < needed";
   2273         goto exit;
   2274     }
   2275     if (params == NULL) {
   2276         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   2277         params = (GLfixed *) (_paramsBase + _bufferOffset);
   2278     }
   2279     glLightModelxv(
   2280         (GLenum)pname,
   2281         (GLfixed *)params
   2282     );
   2283 
   2284 exit:
   2285     if (_array) {
   2286         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
   2287     }
   2288     if (_exception) {
   2289         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2290     }
   2291 }
   2292 
   2293 /* void glLightf ( GLenum light, GLenum pname, GLfloat param ) */
   2294 static void
   2295 android_glLightf__IIF
   2296   (JNIEnv *_env, jobject _this, jint light, jint pname, jfloat param) {
   2297     glLightf(
   2298         (GLenum)light,
   2299         (GLenum)pname,
   2300         (GLfloat)param
   2301     );
   2302 }
   2303 
   2304 /* void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) */
   2305 static void
   2306 android_glLightfv__II_3FI
   2307   (JNIEnv *_env, jobject _this, jint light, jint pname, jfloatArray params_ref, jint offset) {
   2308     jint _exception = 0;
   2309     const char * _exceptionType = NULL;
   2310     const char * _exceptionMessage = NULL;
   2311     GLfloat *params_base = (GLfloat *) 0;
   2312     jint _remaining;
   2313     GLfloat *params = (GLfloat *) 0;
   2314 
   2315     if (!params_ref) {
   2316         _exception = 1;
   2317         _exceptionType = "java/lang/IllegalArgumentException";
   2318         _exceptionMessage = "params == null";
   2319         goto exit;
   2320     }
   2321     if (offset < 0) {
   2322         _exception = 1;
   2323         _exceptionType = "java/lang/IllegalArgumentException";
   2324         _exceptionMessage = "offset < 0";
   2325         goto exit;
   2326     }
   2327     _remaining = _env->GetArrayLength(params_ref) - offset;
   2328     int _needed;
   2329     switch (pname) {
   2330 #if defined(GL_SPOT_EXPONENT)
   2331         case GL_SPOT_EXPONENT:
   2332 #endif // defined(GL_SPOT_EXPONENT)
   2333 #if defined(GL_SPOT_CUTOFF)
   2334         case GL_SPOT_CUTOFF:
   2335 #endif // defined(GL_SPOT_CUTOFF)
   2336 #if defined(GL_CONSTANT_ATTENUATION)
   2337         case GL_CONSTANT_ATTENUATION:
   2338 #endif // defined(GL_CONSTANT_ATTENUATION)
   2339 #if defined(GL_LINEAR_ATTENUATION)
   2340         case GL_LINEAR_ATTENUATION:
   2341 #endif // defined(GL_LINEAR_ATTENUATION)
   2342 #if defined(GL_QUADRATIC_ATTENUATION)
   2343         case GL_QUADRATIC_ATTENUATION:
   2344 #endif // defined(GL_QUADRATIC_ATTENUATION)
   2345             _needed = 1;
   2346             break;
   2347 #if defined(GL_SPOT_DIRECTION)
   2348         case GL_SPOT_DIRECTION:
   2349 #endif // defined(GL_SPOT_DIRECTION)
   2350             _needed = 3;
   2351             break;
   2352 #if defined(GL_AMBIENT)
   2353         case GL_AMBIENT:
   2354 #endif // defined(GL_AMBIENT)
   2355 #if defined(GL_DIFFUSE)
   2356         case GL_DIFFUSE:
   2357 #endif // defined(GL_DIFFUSE)
   2358 #if defined(GL_SPECULAR)
   2359         case GL_SPECULAR:
   2360 #endif // defined(GL_SPECULAR)
   2361 #if defined(GL_EMISSION)
   2362         case GL_EMISSION:
   2363 #endif // defined(GL_EMISSION)
   2364             _needed = 4;
   2365             break;
   2366         default:
   2367             _needed = 1;
   2368             break;
   2369     }
   2370     if (_remaining < _needed) {
   2371         _exception = 1;
   2372         _exceptionType = "java/lang/IllegalArgumentException";
   2373         _exceptionMessage = "length - offset < needed";
   2374         goto exit;
   2375     }
   2376     params_base = (GLfloat *)
   2377         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
   2378     params = params_base + offset;
   2379 
   2380     glLightfv(
   2381         (GLenum)light,
   2382         (GLenum)pname,
   2383         (GLfloat *)params
   2384     );
   2385 
   2386 exit:
   2387     if (params_base) {
   2388         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
   2389             JNI_ABORT);
   2390     }
   2391     if (_exception) {
   2392         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2393     }
   2394 }
   2395 
   2396 /* void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) */
   2397 static void
   2398 android_glLightfv__IILjava_nio_FloatBuffer_2
   2399   (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
   2400     jint _exception = 0;
   2401     const char * _exceptionType = NULL;
   2402     const char * _exceptionMessage = NULL;
   2403     jfloatArray _array = (jfloatArray) 0;
   2404     jint _bufferOffset = (jint) 0;
   2405     jint _remaining;
   2406     GLfloat *params = (GLfloat *) 0;
   2407 
   2408     if (!params_buf) {
   2409         _exception = 1;
   2410         _exceptionType = "java/lang/IllegalArgumentException";
   2411         _exceptionMessage = "params == null";
   2412         goto exit;
   2413     }
   2414     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   2415     int _needed;
   2416     switch (pname) {
   2417 #if defined(GL_SPOT_EXPONENT)
   2418         case GL_SPOT_EXPONENT:
   2419 #endif // defined(GL_SPOT_EXPONENT)
   2420 #if defined(GL_SPOT_CUTOFF)
   2421         case GL_SPOT_CUTOFF:
   2422 #endif // defined(GL_SPOT_CUTOFF)
   2423 #if defined(GL_CONSTANT_ATTENUATION)
   2424         case GL_CONSTANT_ATTENUATION:
   2425 #endif // defined(GL_CONSTANT_ATTENUATION)
   2426 #if defined(GL_LINEAR_ATTENUATION)
   2427         case GL_LINEAR_ATTENUATION:
   2428 #endif // defined(GL_LINEAR_ATTENUATION)
   2429 #if defined(GL_QUADRATIC_ATTENUATION)
   2430         case GL_QUADRATIC_ATTENUATION:
   2431 #endif // defined(GL_QUADRATIC_ATTENUATION)
   2432             _needed = 1;
   2433             break;
   2434 #if defined(GL_SPOT_DIRECTION)
   2435         case GL_SPOT_DIRECTION:
   2436 #endif // defined(GL_SPOT_DIRECTION)
   2437             _needed = 3;
   2438             break;
   2439 #if defined(GL_AMBIENT)
   2440         case GL_AMBIENT:
   2441 #endif // defined(GL_AMBIENT)
   2442 #if defined(GL_DIFFUSE)
   2443         case GL_DIFFUSE:
   2444 #endif // defined(GL_DIFFUSE)
   2445 #if defined(GL_SPECULAR)
   2446         case GL_SPECULAR:
   2447 #endif // defined(GL_SPECULAR)
   2448 #if defined(GL_EMISSION)
   2449         case GL_EMISSION:
   2450 #endif // defined(GL_EMISSION)
   2451             _needed = 4;
   2452             break;
   2453         default:
   2454             _needed = 1;
   2455             break;
   2456     }
   2457     if (_remaining < _needed) {
   2458         _exception = 1;
   2459         _exceptionType = "java/lang/IllegalArgumentException";
   2460         _exceptionMessage = "remaining() < needed";
   2461         goto exit;
   2462     }
   2463     if (params == NULL) {
   2464         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   2465         params = (GLfloat *) (_paramsBase + _bufferOffset);
   2466     }
   2467     glLightfv(
   2468         (GLenum)light,
   2469         (GLenum)pname,
   2470         (GLfloat *)params
   2471     );
   2472 
   2473 exit:
   2474     if (_array) {
   2475         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
   2476     }
   2477     if (_exception) {
   2478         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2479     }
   2480 }
   2481 
   2482 /* void glLightx ( GLenum light, GLenum pname, GLfixed param ) */
   2483 static void
   2484 android_glLightx__III
   2485   (JNIEnv *_env, jobject _this, jint light, jint pname, jint param) {
   2486     glLightx(
   2487         (GLenum)light,
   2488         (GLenum)pname,
   2489         (GLfixed)param
   2490     );
   2491 }
   2492 
   2493 /* void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) */
   2494 static void
   2495 android_glLightxv__II_3II
   2496   (JNIEnv *_env, jobject _this, jint light, jint pname, jintArray params_ref, jint offset) {
   2497     jint _exception = 0;
   2498     const char * _exceptionType = NULL;
   2499     const char * _exceptionMessage = NULL;
   2500     GLfixed *params_base = (GLfixed *) 0;
   2501     jint _remaining;
   2502     GLfixed *params = (GLfixed *) 0;
   2503 
   2504     if (!params_ref) {
   2505         _exception = 1;
   2506         _exceptionType = "java/lang/IllegalArgumentException";
   2507         _exceptionMessage = "params == null";
   2508         goto exit;
   2509     }
   2510     if (offset < 0) {
   2511         _exception = 1;
   2512         _exceptionType = "java/lang/IllegalArgumentException";
   2513         _exceptionMessage = "offset < 0";
   2514         goto exit;
   2515     }
   2516     _remaining = _env->GetArrayLength(params_ref) - offset;
   2517     int _needed;
   2518     switch (pname) {
   2519 #if defined(GL_SPOT_EXPONENT)
   2520         case GL_SPOT_EXPONENT:
   2521 #endif // defined(GL_SPOT_EXPONENT)
   2522 #if defined(GL_SPOT_CUTOFF)
   2523         case GL_SPOT_CUTOFF:
   2524 #endif // defined(GL_SPOT_CUTOFF)
   2525 #if defined(GL_CONSTANT_ATTENUATION)
   2526         case GL_CONSTANT_ATTENUATION:
   2527 #endif // defined(GL_CONSTANT_ATTENUATION)
   2528 #if defined(GL_LINEAR_ATTENUATION)
   2529         case GL_LINEAR_ATTENUATION:
   2530 #endif // defined(GL_LINEAR_ATTENUATION)
   2531 #if defined(GL_QUADRATIC_ATTENUATION)
   2532         case GL_QUADRATIC_ATTENUATION:
   2533 #endif // defined(GL_QUADRATIC_ATTENUATION)
   2534             _needed = 1;
   2535             break;
   2536 #if defined(GL_SPOT_DIRECTION)
   2537         case GL_SPOT_DIRECTION:
   2538 #endif // defined(GL_SPOT_DIRECTION)
   2539             _needed = 3;
   2540             break;
   2541 #if defined(GL_AMBIENT)
   2542         case GL_AMBIENT:
   2543 #endif // defined(GL_AMBIENT)
   2544 #if defined(GL_DIFFUSE)
   2545         case GL_DIFFUSE:
   2546 #endif // defined(GL_DIFFUSE)
   2547 #if defined(GL_SPECULAR)
   2548         case GL_SPECULAR:
   2549 #endif // defined(GL_SPECULAR)
   2550 #if defined(GL_EMISSION)
   2551         case GL_EMISSION:
   2552 #endif // defined(GL_EMISSION)
   2553             _needed = 4;
   2554             break;
   2555         default:
   2556             _needed = 1;
   2557             break;
   2558     }
   2559     if (_remaining < _needed) {
   2560         _exception = 1;
   2561         _exceptionType = "java/lang/IllegalArgumentException";
   2562         _exceptionMessage = "length - offset < needed";
   2563         goto exit;
   2564     }
   2565     params_base = (GLfixed *)
   2566         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   2567     params = params_base + offset;
   2568 
   2569     glLightxv(
   2570         (GLenum)light,
   2571         (GLenum)pname,
   2572         (GLfixed *)params
   2573     );
   2574 
   2575 exit:
   2576     if (params_base) {
   2577         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   2578             JNI_ABORT);
   2579     }
   2580     if (_exception) {
   2581         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2582     }
   2583 }
   2584 
   2585 /* void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) */
   2586 static void
   2587 android_glLightxv__IILjava_nio_IntBuffer_2
   2588   (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
   2589     jint _exception = 0;
   2590     const char * _exceptionType = NULL;
   2591     const char * _exceptionMessage = NULL;
   2592     jintArray _array = (jintArray) 0;
   2593     jint _bufferOffset = (jint) 0;
   2594     jint _remaining;
   2595     GLfixed *params = (GLfixed *) 0;
   2596 
   2597     if (!params_buf) {
   2598         _exception = 1;
   2599         _exceptionType = "java/lang/IllegalArgumentException";
   2600         _exceptionMessage = "params == null";
   2601         goto exit;
   2602     }
   2603     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   2604     int _needed;
   2605     switch (pname) {
   2606 #if defined(GL_SPOT_EXPONENT)
   2607         case GL_SPOT_EXPONENT:
   2608 #endif // defined(GL_SPOT_EXPONENT)
   2609 #if defined(GL_SPOT_CUTOFF)
   2610         case GL_SPOT_CUTOFF:
   2611 #endif // defined(GL_SPOT_CUTOFF)
   2612 #if defined(GL_CONSTANT_ATTENUATION)
   2613         case GL_CONSTANT_ATTENUATION:
   2614 #endif // defined(GL_CONSTANT_ATTENUATION)
   2615 #if defined(GL_LINEAR_ATTENUATION)
   2616         case GL_LINEAR_ATTENUATION:
   2617 #endif // defined(GL_LINEAR_ATTENUATION)
   2618 #if defined(GL_QUADRATIC_ATTENUATION)
   2619         case GL_QUADRATIC_ATTENUATION:
   2620 #endif // defined(GL_QUADRATIC_ATTENUATION)
   2621             _needed = 1;
   2622             break;
   2623 #if defined(GL_SPOT_DIRECTION)
   2624         case GL_SPOT_DIRECTION:
   2625 #endif // defined(GL_SPOT_DIRECTION)
   2626             _needed = 3;
   2627             break;
   2628 #if defined(GL_AMBIENT)
   2629         case GL_AMBIENT:
   2630 #endif // defined(GL_AMBIENT)
   2631 #if defined(GL_DIFFUSE)
   2632         case GL_DIFFUSE:
   2633 #endif // defined(GL_DIFFUSE)
   2634 #if defined(GL_SPECULAR)
   2635         case GL_SPECULAR:
   2636 #endif // defined(GL_SPECULAR)
   2637 #if defined(GL_EMISSION)
   2638         case GL_EMISSION:
   2639 #endif // defined(GL_EMISSION)
   2640             _needed = 4;
   2641             break;
   2642         default:
   2643             _needed = 1;
   2644             break;
   2645     }
   2646     if (_remaining < _needed) {
   2647         _exception = 1;
   2648         _exceptionType = "java/lang/IllegalArgumentException";
   2649         _exceptionMessage = "remaining() < needed";
   2650         goto exit;
   2651     }
   2652     if (params == NULL) {
   2653         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   2654         params = (GLfixed *) (_paramsBase + _bufferOffset);
   2655     }
   2656     glLightxv(
   2657         (GLenum)light,
   2658         (GLenum)pname,
   2659         (GLfixed *)params
   2660     );
   2661 
   2662 exit:
   2663     if (_array) {
   2664         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
   2665     }
   2666     if (_exception) {
   2667         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2668     }
   2669 }
   2670 
   2671 /* void glLineWidth ( GLfloat width ) */
   2672 static void
   2673 android_glLineWidth__F
   2674   (JNIEnv *_env, jobject _this, jfloat width) {
   2675     glLineWidth(
   2676         (GLfloat)width
   2677     );
   2678 }
   2679 
   2680 /* void glLineWidthx ( GLfixed width ) */
   2681 static void
   2682 android_glLineWidthx__I
   2683   (JNIEnv *_env, jobject _this, jint width) {
   2684     glLineWidthx(
   2685         (GLfixed)width
   2686     );
   2687 }
   2688 
   2689 /* void glLoadIdentity ( void ) */
   2690 static void
   2691 android_glLoadIdentity__
   2692   (JNIEnv *_env, jobject _this) {
   2693     glLoadIdentity();
   2694 }
   2695 
   2696 /* void glLoadMatrixf ( const GLfloat *m ) */
   2697 static void
   2698 android_glLoadMatrixf___3FI
   2699   (JNIEnv *_env, jobject _this, jfloatArray m_ref, jint offset) {
   2700     jint _exception = 0;
   2701     const char * _exceptionType = NULL;
   2702     const char * _exceptionMessage = NULL;
   2703     GLfloat *m_base = (GLfloat *) 0;
   2704     jint _remaining;
   2705     GLfloat *m = (GLfloat *) 0;
   2706 
   2707     if (!m_ref) {
   2708         _exception = 1;
   2709         _exceptionType = "java/lang/IllegalArgumentException";
   2710         _exceptionMessage = "m == null";
   2711         goto exit;
   2712     }
   2713     if (offset < 0) {
   2714         _exception = 1;
   2715         _exceptionType = "java/lang/IllegalArgumentException";
   2716         _exceptionMessage = "offset < 0";
   2717         goto exit;
   2718     }
   2719     _remaining = _env->GetArrayLength(m_ref) - offset;
   2720     m_base = (GLfloat *)
   2721         _env->GetFloatArrayElements(m_ref, (jboolean *)0);
   2722     m = m_base + offset;
   2723 
   2724     glLoadMatrixf(
   2725         (GLfloat *)m
   2726     );
   2727 
   2728 exit:
   2729     if (m_base) {
   2730         _env->ReleaseFloatArrayElements(m_ref, (jfloat*)m_base,
   2731             JNI_ABORT);
   2732     }
   2733     if (_exception) {
   2734         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2735     }
   2736 }
   2737 
   2738 /* void glLoadMatrixf ( const GLfloat *m ) */
   2739 static void
   2740 android_glLoadMatrixf__Ljava_nio_FloatBuffer_2
   2741   (JNIEnv *_env, jobject _this, jobject m_buf) {
   2742     jint _exception = 0;
   2743     const char * _exceptionType = NULL;
   2744     const char * _exceptionMessage = NULL;
   2745     jfloatArray _array = (jfloatArray) 0;
   2746     jint _bufferOffset = (jint) 0;
   2747     jint _remaining;
   2748     GLfloat *m = (GLfloat *) 0;
   2749 
   2750     if (!m_buf) {
   2751         _exception = 1;
   2752         _exceptionType = "java/lang/IllegalArgumentException";
   2753         _exceptionMessage = "m == null";
   2754         goto exit;
   2755     }
   2756     m = (GLfloat *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   2757     if (m == NULL) {
   2758         char * _mBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   2759         m = (GLfloat *) (_mBase + _bufferOffset);
   2760     }
   2761     glLoadMatrixf(
   2762         (GLfloat *)m
   2763     );
   2764 
   2765 exit:
   2766     if (_array) {
   2767         _env->ReleaseFloatArrayElements(_array, (jfloat*)m, JNI_ABORT);
   2768     }
   2769     if (_exception) {
   2770         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2771     }
   2772 }
   2773 
   2774 /* void glLoadMatrixx ( const GLfixed *m ) */
   2775 static void
   2776 android_glLoadMatrixx___3II
   2777   (JNIEnv *_env, jobject _this, jintArray m_ref, jint offset) {
   2778     jint _exception = 0;
   2779     const char * _exceptionType = NULL;
   2780     const char * _exceptionMessage = NULL;
   2781     GLfixed *m_base = (GLfixed *) 0;
   2782     jint _remaining;
   2783     GLfixed *m = (GLfixed *) 0;
   2784 
   2785     if (!m_ref) {
   2786         _exception = 1;
   2787         _exceptionType = "java/lang/IllegalArgumentException";
   2788         _exceptionMessage = "m == null";
   2789         goto exit;
   2790     }
   2791     if (offset < 0) {
   2792         _exception = 1;
   2793         _exceptionType = "java/lang/IllegalArgumentException";
   2794         _exceptionMessage = "offset < 0";
   2795         goto exit;
   2796     }
   2797     _remaining = _env->GetArrayLength(m_ref) - offset;
   2798     m_base = (GLfixed *)
   2799         _env->GetIntArrayElements(m_ref, (jboolean *)0);
   2800     m = m_base + offset;
   2801 
   2802     glLoadMatrixx(
   2803         (GLfixed *)m
   2804     );
   2805 
   2806 exit:
   2807     if (m_base) {
   2808         _env->ReleaseIntArrayElements(m_ref, (jint*)m_base,
   2809             JNI_ABORT);
   2810     }
   2811     if (_exception) {
   2812         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2813     }
   2814 }
   2815 
   2816 /* void glLoadMatrixx ( const GLfixed *m ) */
   2817 static void
   2818 android_glLoadMatrixx__Ljava_nio_IntBuffer_2
   2819   (JNIEnv *_env, jobject _this, jobject m_buf) {
   2820     jint _exception = 0;
   2821     const char * _exceptionType = NULL;
   2822     const char * _exceptionMessage = NULL;
   2823     jintArray _array = (jintArray) 0;
   2824     jint _bufferOffset = (jint) 0;
   2825     jint _remaining;
   2826     GLfixed *m = (GLfixed *) 0;
   2827 
   2828     if (!m_buf) {
   2829         _exception = 1;
   2830         _exceptionType = "java/lang/IllegalArgumentException";
   2831         _exceptionMessage = "m == null";
   2832         goto exit;
   2833     }
   2834     m = (GLfixed *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   2835     if (m == NULL) {
   2836         char * _mBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   2837         m = (GLfixed *) (_mBase + _bufferOffset);
   2838     }
   2839     glLoadMatrixx(
   2840         (GLfixed *)m
   2841     );
   2842 
   2843 exit:
   2844     if (_array) {
   2845         _env->ReleaseIntArrayElements(_array, (jint*)m, JNI_ABORT);
   2846     }
   2847     if (_exception) {
   2848         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2849     }
   2850 }
   2851 
   2852 /* void glLogicOp ( GLenum opcode ) */
   2853 static void
   2854 android_glLogicOp__I
   2855   (JNIEnv *_env, jobject _this, jint opcode) {
   2856     glLogicOp(
   2857         (GLenum)opcode
   2858     );
   2859 }
   2860 
   2861 /* void glMaterialf ( GLenum face, GLenum pname, GLfloat param ) */
   2862 static void
   2863 android_glMaterialf__IIF
   2864   (JNIEnv *_env, jobject _this, jint face, jint pname, jfloat param) {
   2865     glMaterialf(
   2866         (GLenum)face,
   2867         (GLenum)pname,
   2868         (GLfloat)param
   2869     );
   2870 }
   2871 
   2872 /* void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) */
   2873 static void
   2874 android_glMaterialfv__II_3FI
   2875   (JNIEnv *_env, jobject _this, jint face, jint pname, jfloatArray params_ref, jint offset) {
   2876     jint _exception = 0;
   2877     const char * _exceptionType = NULL;
   2878     const char * _exceptionMessage = NULL;
   2879     GLfloat *params_base = (GLfloat *) 0;
   2880     jint _remaining;
   2881     GLfloat *params = (GLfloat *) 0;
   2882 
   2883     if (!params_ref) {
   2884         _exception = 1;
   2885         _exceptionType = "java/lang/IllegalArgumentException";
   2886         _exceptionMessage = "params == null";
   2887         goto exit;
   2888     }
   2889     if (offset < 0) {
   2890         _exception = 1;
   2891         _exceptionType = "java/lang/IllegalArgumentException";
   2892         _exceptionMessage = "offset < 0";
   2893         goto exit;
   2894     }
   2895     _remaining = _env->GetArrayLength(params_ref) - offset;
   2896     int _needed;
   2897     switch (pname) {
   2898 #if defined(GL_SHININESS)
   2899         case GL_SHININESS:
   2900 #endif // defined(GL_SHININESS)
   2901             _needed = 1;
   2902             break;
   2903 #if defined(GL_AMBIENT)
   2904         case GL_AMBIENT:
   2905 #endif // defined(GL_AMBIENT)
   2906 #if defined(GL_DIFFUSE)
   2907         case GL_DIFFUSE:
   2908 #endif // defined(GL_DIFFUSE)
   2909 #if defined(GL_SPECULAR)
   2910         case GL_SPECULAR:
   2911 #endif // defined(GL_SPECULAR)
   2912 #if defined(GL_EMISSION)
   2913         case GL_EMISSION:
   2914 #endif // defined(GL_EMISSION)
   2915 #if defined(GL_AMBIENT_AND_DIFFUSE)
   2916         case GL_AMBIENT_AND_DIFFUSE:
   2917 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
   2918             _needed = 4;
   2919             break;
   2920         default:
   2921             _needed = 1;
   2922             break;
   2923     }
   2924     if (_remaining < _needed) {
   2925         _exception = 1;
   2926         _exceptionType = "java/lang/IllegalArgumentException";
   2927         _exceptionMessage = "length - offset < needed";
   2928         goto exit;
   2929     }
   2930     params_base = (GLfloat *)
   2931         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
   2932     params = params_base + offset;
   2933 
   2934     glMaterialfv(
   2935         (GLenum)face,
   2936         (GLenum)pname,
   2937         (GLfloat *)params
   2938     );
   2939 
   2940 exit:
   2941     if (params_base) {
   2942         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
   2943             JNI_ABORT);
   2944     }
   2945     if (_exception) {
   2946         jniThrowException(_env, _exceptionType, _exceptionMessage);
   2947     }
   2948 }
   2949 
   2950 /* void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) */
   2951 static void
   2952 android_glMaterialfv__IILjava_nio_FloatBuffer_2
   2953   (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
   2954     jint _exception = 0;
   2955     const char * _exceptionType = NULL;
   2956     const char * _exceptionMessage = NULL;
   2957     jfloatArray _array = (jfloatArray) 0;
   2958     jint _bufferOffset = (jint) 0;
   2959     jint _remaining;
   2960     GLfloat *params = (GLfloat *) 0;
   2961 
   2962     if (!params_buf) {
   2963         _exception = 1;
   2964         _exceptionType = "java/lang/IllegalArgumentException";
   2965         _exceptionMessage = "params == null";
   2966         goto exit;
   2967     }
   2968     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   2969     int _needed;
   2970     switch (pname) {
   2971 #if defined(GL_SHININESS)
   2972         case GL_SHININESS:
   2973 #endif // defined(GL_SHININESS)
   2974             _needed = 1;
   2975             break;
   2976 #if defined(GL_AMBIENT)
   2977         case GL_AMBIENT:
   2978 #endif // defined(GL_AMBIENT)
   2979 #if defined(GL_DIFFUSE)
   2980         case GL_DIFFUSE:
   2981 #endif // defined(GL_DIFFUSE)
   2982 #if defined(GL_SPECULAR)
   2983         case GL_SPECULAR:
   2984 #endif // defined(GL_SPECULAR)
   2985 #if defined(GL_EMISSION)
   2986         case GL_EMISSION:
   2987 #endif // defined(GL_EMISSION)
   2988 #if defined(GL_AMBIENT_AND_DIFFUSE)
   2989         case GL_AMBIENT_AND_DIFFUSE:
   2990 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
   2991             _needed = 4;
   2992             break;
   2993         default:
   2994             _needed = 1;
   2995             break;
   2996     }
   2997     if (_remaining < _needed) {
   2998         _exception = 1;
   2999         _exceptionType = "java/lang/IllegalArgumentException";
   3000         _exceptionMessage = "remaining() < needed";
   3001         goto exit;
   3002     }
   3003     if (params == NULL) {
   3004         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   3005         params = (GLfloat *) (_paramsBase + _bufferOffset);
   3006     }
   3007     glMaterialfv(
   3008         (GLenum)face,
   3009         (GLenum)pname,
   3010         (GLfloat *)params
   3011     );
   3012 
   3013 exit:
   3014     if (_array) {
   3015         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
   3016     }
   3017     if (_exception) {
   3018         jniThrowException(_env, _exceptionType, _exceptionMessage);
   3019     }
   3020 }
   3021 
   3022 /* void glMaterialx ( GLenum face, GLenum pname, GLfixed param ) */
   3023 static void
   3024 android_glMaterialx__III
   3025   (JNIEnv *_env, jobject _this, jint face, jint pname, jint param) {
   3026     glMaterialx(
   3027         (GLenum)face,
   3028         (GLenum)pname,
   3029         (GLfixed)param
   3030     );
   3031 }
   3032 
   3033 /* void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) */
   3034 static void
   3035 android_glMaterialxv__II_3II
   3036   (JNIEnv *_env, jobject _this, jint face, jint pname, jintArray params_ref, jint offset) {
   3037     jint _exception = 0;
   3038     const char * _exceptionType = NULL;
   3039     const char * _exceptionMessage = NULL;
   3040     GLfixed *params_base = (GLfixed *) 0;
   3041     jint _remaining;
   3042     GLfixed *params = (GLfixed *) 0;
   3043 
   3044     if (!params_ref) {
   3045         _exception = 1;
   3046         _exceptionType = "java/lang/IllegalArgumentException";
   3047         _exceptionMessage = "params == null";
   3048         goto exit;
   3049     }
   3050     if (offset < 0) {
   3051         _exception = 1;
   3052         _exceptionType = "java/lang/IllegalArgumentException";
   3053         _exceptionMessage = "offset < 0";
   3054         goto exit;
   3055     }
   3056     _remaining = _env->GetArrayLength(params_ref) - offset;
   3057     int _needed;
   3058     switch (pname) {
   3059 #if defined(GL_SHININESS)
   3060         case GL_SHININESS:
   3061 #endif // defined(GL_SHININESS)
   3062             _needed = 1;
   3063             break;
   3064 #if defined(GL_AMBIENT)
   3065         case GL_AMBIENT:
   3066 #endif // defined(GL_AMBIENT)
   3067 #if defined(GL_DIFFUSE)
   3068         case GL_DIFFUSE:
   3069 #endif // defined(GL_DIFFUSE)
   3070 #if defined(GL_SPECULAR)
   3071         case GL_SPECULAR:
   3072 #endif // defined(GL_SPECULAR)
   3073 #if defined(GL_EMISSION)
   3074         case GL_EMISSION:
   3075 #endif // defined(GL_EMISSION)
   3076 #if defined(GL_AMBIENT_AND_DIFFUSE)
   3077         case GL_AMBIENT_AND_DIFFUSE:
   3078 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
   3079             _needed = 4;
   3080             break;
   3081         default:
   3082             _needed = 1;
   3083             break;
   3084     }
   3085     if (_remaining < _needed) {
   3086         _exception = 1;
   3087         _exceptionType = "java/lang/IllegalArgumentException";
   3088         _exceptionMessage = "length - offset < needed";
   3089         goto exit;
   3090     }
   3091     params_base = (GLfixed *)
   3092         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   3093     params = params_base + offset;
   3094 
   3095     glMaterialxv(
   3096         (GLenum)face,
   3097         (GLenum)pname,
   3098         (GLfixed *)params
   3099     );
   3100 
   3101 exit:
   3102     if (params_base) {
   3103         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   3104             JNI_ABORT);
   3105     }
   3106     if (_exception) {
   3107         jniThrowException(_env, _exceptionType, _exceptionMessage);
   3108     }
   3109 }
   3110 
   3111 /* void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) */
   3112 static void
   3113 android_glMaterialxv__IILjava_nio_IntBuffer_2
   3114   (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
   3115     jint _exception = 0;
   3116     const char * _exceptionType = NULL;
   3117     const char * _exceptionMessage = NULL;
   3118     jintArray _array = (jintArray) 0;
   3119     jint _bufferOffset = (jint) 0;
   3120     jint _remaining;
   3121     GLfixed *params = (GLfixed *) 0;
   3122 
   3123     if (!params_buf) {
   3124         _exception = 1;
   3125         _exceptionType = "java/lang/IllegalArgumentException";
   3126         _exceptionMessage = "params == null";
   3127         goto exit;
   3128     }
   3129     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   3130     int _needed;
   3131     switch (pname) {
   3132 #if defined(GL_SHININESS)
   3133         case GL_SHININESS:
   3134 #endif // defined(GL_SHININESS)
   3135             _needed = 1;
   3136             break;
   3137 #if defined(GL_AMBIENT)
   3138         case GL_AMBIENT:
   3139 #endif // defined(GL_AMBIENT)
   3140 #if defined(GL_DIFFUSE)
   3141         case GL_DIFFUSE:
   3142 #endif // defined(GL_DIFFUSE)
   3143 #if defined(GL_SPECULAR)
   3144         case GL_SPECULAR:
   3145 #endif // defined(GL_SPECULAR)
   3146 #if defined(GL_EMISSION)
   3147         case GL_EMISSION:
   3148 #endif // defined(GL_EMISSION)
   3149 #if defined(GL_AMBIENT_AND_DIFFUSE)
   3150         case GL_AMBIENT_AND_DIFFUSE:
   3151 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
   3152             _needed = 4;
   3153             break;
   3154         default:
   3155             _needed = 1;
   3156             break;
   3157     }
   3158     if (_remaining < _needed) {
   3159         _exception = 1;
   3160         _exceptionType = "java/lang/IllegalArgumentException";
   3161         _exceptionMessage = "remaining() < needed";
   3162         goto exit;
   3163     }
   3164     if (params == NULL) {
   3165         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   3166         params = (GLfixed *) (_paramsBase + _bufferOffset);
   3167     }
   3168     glMaterialxv(
   3169         (GLenum)face,
   3170         (GLenum)pname,
   3171         (GLfixed *)params
   3172     );
   3173 
   3174 exit:
   3175     if (_array) {
   3176         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
   3177     }
   3178     if (_exception) {
   3179         jniThrowException(_env, _exceptionType, _exceptionMessage);
   3180     }
   3181 }
   3182 
   3183 /* void glMatrixMode ( GLenum mode ) */
   3184 static void
   3185 android_glMatrixMode__I
   3186   (JNIEnv *_env, jobject _this, jint mode) {
   3187     glMatrixMode(
   3188         (GLenum)mode
   3189     );
   3190 }
   3191 
   3192 /* void glMultMatrixf ( const GLfloat *m ) */
   3193 static void
   3194 android_glMultMatrixf___3FI
   3195   (JNIEnv *_env, jobject _this, jfloatArray m_ref, jint offset) {
   3196     jint _exception = 0;
   3197     const char * _exceptionType = NULL;
   3198     const char * _exceptionMessage = NULL;
   3199     GLfloat *m_base = (GLfloat *) 0;
   3200     jint _remaining;
   3201     GLfloat *m = (GLfloat *) 0;
   3202 
   3203     if (!m_ref) {
   3204         _exception = 1;
   3205         _exceptionType = "java/lang/IllegalArgumentException";
   3206         _exceptionMessage = "m == null";
   3207         goto exit;
   3208     }
   3209     if (offset < 0) {
   3210         _exception = 1;
   3211         _exceptionType = "java/lang/IllegalArgumentException";
   3212         _exceptionMessage = "offset < 0";
   3213         goto exit;
   3214     }
   3215     _remaining = _env->GetArrayLength(m_ref) - offset;
   3216     m_base = (GLfloat *)
   3217         _env->GetFloatArrayElements(m_ref, (jboolean *)0);
   3218     m = m_base + offset;
   3219 
   3220     glMultMatrixf(
   3221         (GLfloat *)m
   3222     );
   3223 
   3224 exit:
   3225     if (m_base) {
   3226         _env->ReleaseFloatArrayElements(m_ref, (jfloat*)m_base,
   3227             JNI_ABORT);
   3228     }
   3229     if (_exception) {
   3230         jniThrowException(_env, _exceptionType, _exceptionMessage);
   3231     }
   3232 }
   3233 
   3234 /* void glMultMatrixf ( const GLfloat *m ) */
   3235 static void
   3236 android_glMultMatrixf__Ljava_nio_FloatBuffer_2
   3237   (JNIEnv *_env, jobject _this, jobject m_buf) {
   3238     jint _exception = 0;
   3239     const char * _exceptionType = NULL;
   3240     const char * _exceptionMessage = NULL;
   3241     jfloatArray _array = (jfloatArray) 0;
   3242     jint _bufferOffset = (jint) 0;
   3243     jint _remaining;
   3244     GLfloat *m = (GLfloat *) 0;
   3245 
   3246     if (!m_buf) {
   3247         _exception = 1;
   3248         _exceptionType = "java/lang/IllegalArgumentException";
   3249         _exceptionMessage = "m == null";
   3250         goto exit;
   3251     }
   3252     m = (GLfloat *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   3253     if (m == NULL) {
   3254         char * _mBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   3255         m = (GLfloat *) (_mBase + _bufferOffset);
   3256     }
   3257     glMultMatrixf(
   3258         (GLfloat *)m
   3259     );
   3260 
   3261 exit:
   3262     if (_array) {
   3263         _env->ReleaseFloatArrayElements(_array, (jfloat*)m, JNI_ABORT);
   3264     }
   3265     if (_exception) {
   3266         jniThrowException(_env, _exceptionType, _exceptionMessage);
   3267     }
   3268 }
   3269 
   3270 /* void glMultMatrixx ( const GLfixed *m ) */
   3271 static void
   3272 android_glMultMatrixx___3II
   3273   (JNIEnv *_env, jobject _this, jintArray m_ref, jint offset) {
   3274     jint _exception = 0;
   3275     const char * _exceptionType = NULL;
   3276     const char * _exceptionMessage = NULL;
   3277     GLfixed *m_base = (GLfixed *) 0;
   3278     jint _remaining;
   3279     GLfixed *m = (GLfixed *) 0;
   3280 
   3281     if (!m_ref) {
   3282         _exception = 1;
   3283         _exceptionType = "java/lang/IllegalArgumentException";
   3284         _exceptionMessage = "m == null";
   3285         goto exit;
   3286     }
   3287     if (offset < 0) {
   3288         _exception = 1;
   3289         _exceptionType = "java/lang/IllegalArgumentException";
   3290         _exceptionMessage = "offset < 0";
   3291         goto exit;
   3292     }
   3293     _remaining = _env->GetArrayLength(m_ref) - offset;
   3294     m_base = (GLfixed *)
   3295         _env->GetIntArrayElements(m_ref, (jboolean *)0);
   3296     m = m_base + offset;
   3297 
   3298     glMultMatrixx(
   3299         (GLfixed *)m
   3300     );
   3301 
   3302 exit:
   3303     if (m_base) {
   3304         _env->ReleaseIntArrayElements(m_ref, (jint*)m_base,
   3305             JNI_ABORT);
   3306     }
   3307     if (_exception) {
   3308         jniThrowException(_env, _exceptionType, _exceptionMessage);
   3309     }
   3310 }
   3311 
   3312 /* void glMultMatrixx ( const GLfixed *m ) */
   3313 static void
   3314 android_glMultMatrixx__Ljava_nio_IntBuffer_2
   3315   (JNIEnv *_env, jobject _this, jobject m_buf) {
   3316     jint _exception = 0;
   3317     const char * _exceptionType = NULL;
   3318     const char * _exceptionMessage = NULL;
   3319     jintArray _array = (jintArray) 0;
   3320     jint _bufferOffset = (jint) 0;
   3321     jint _remaining;
   3322     GLfixed *m = (GLfixed *) 0;
   3323 
   3324     if (!m_buf) {
   3325         _exception = 1;
   3326         _exceptionType = "java/lang/IllegalArgumentException";
   3327         _exceptionMessage = "m == null";
   3328         goto exit;
   3329     }
   3330     m = (GLfixed *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   3331     if (m == NULL) {
   3332         char * _mBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   3333         m = (GLfixed *) (_mBase + _bufferOffset);
   3334     }
   3335     glMultMatrixx(
   3336         (GLfixed *)m
   3337     );
   3338 
   3339 exit:
   3340     if (_array) {
   3341         _env->ReleaseIntArrayElements(_array, (jint*)m, JNI_ABORT);
   3342     }
   3343     if (_exception) {
   3344         jniThrowException(_env, _exceptionType, _exceptionMessage);
   3345     }
   3346 }
   3347 
   3348 /* void glMultiTexCoord4f ( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ) */
   3349 static void
   3350 android_glMultiTexCoord4f__IFFFF
   3351   (JNIEnv *_env, jobject _this, jint target, jfloat s, jfloat t, jfloat r, jfloat q) {
   3352     glMultiTexCoord4f(
   3353         (GLenum)target,
   3354         (GLfloat)s,
   3355         (GLfloat)t,
   3356         (GLfloat)r,
   3357         (GLfloat)q
   3358     );
   3359 }
   3360 
   3361 /* void glMultiTexCoord4x ( GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q ) */
   3362 static void
   3363 android_glMultiTexCoord4x__IIIII
   3364   (JNIEnv *_env, jobject _this, jint target, jint s, jint t, jint r, jint q) {
   3365     glMultiTexCoord4x(
   3366         (GLenum)target,
   3367         (GLfixed)s,
   3368         (GLfixed)t,
   3369         (GLfixed)r,
   3370         (GLfixed)q
   3371     );
   3372 }
   3373 
   3374 /* void glNormal3f ( GLfloat nx, GLfloat ny, GLfloat nz ) */
   3375 static void
   3376 android_glNormal3f__FFF
   3377   (JNIEnv *_env, jobject _this, jfloat nx, jfloat ny, jfloat nz) {
   3378     glNormal3f(
   3379         (GLfloat)nx,
   3380         (GLfloat)ny,
   3381         (GLfloat)nz
   3382     );
   3383 }
   3384 
   3385 /* void glNormal3x ( GLfixed nx, GLfixed ny, GLfixed nz ) */
   3386 static void
   3387 android_glNormal3x__III
   3388   (JNIEnv *_env, jobject _this, jint nx, jint ny, jint nz) {
   3389     glNormal3x(
   3390         (GLfixed)nx,
   3391         (GLfixed)ny,
   3392         (GLfixed)nz
   3393     );
   3394 }
   3395 
   3396 /* void glNormalPointer ( GLenum type, GLsizei stride, const GLvoid *pointer ) */
   3397 static void
   3398 android_glNormalPointerBounds__IILjava_nio_Buffer_2I
   3399   (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) {
   3400     jint _exception = 0;
   3401     const char * _exceptionType = NULL;
   3402     const char * _exceptionMessage = NULL;
   3403     jarray _array = (jarray) 0;
   3404     jint _bufferOffset = (jint) 0;
   3405     jint _remaining;
   3406     GLvoid *pointer = (GLvoid *) 0;
   3407 
   3408     if (pointer_buf) {
   3409         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
   3410         if ( ! pointer ) {
   3411             return;
   3412         }
   3413     }
   3414     glNormalPointerBounds(
   3415         (GLenum)type,
   3416         (GLsizei)stride,
   3417         (GLvoid *)pointer,
   3418         (GLsizei)remaining
   3419     );
   3420     if (_exception) {
   3421         jniThrowException(_env, _exceptionType, _exceptionMessage);
   3422     }
   3423 }
   3424 
   3425 /* void glOrthof ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */
   3426 static void
   3427 android_glOrthof__FFFFFF
   3428   (JNIEnv *_env, jobject _this, jfloat left, jfloat right, jfloat bottom, jfloat top, jfloat zNear, jfloat zFar) {
   3429     glOrthof(
   3430         (GLfloat)left,
   3431         (GLfloat)right,
   3432         (GLfloat)bottom,
   3433         (GLfloat)top,
   3434         (GLfloat)zNear,
   3435         (GLfloat)zFar
   3436     );
   3437 }
   3438 
   3439 /* void glOrthox ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) */
   3440 static void
   3441 android_glOrthox__IIIIII
   3442   (JNIEnv *_env, jobject _this, jint left, jint right, jint bottom, jint top, jint zNear, jint zFar) {
   3443     glOrthox(
   3444         (GLfixed)left,
   3445         (GLfixed)right,
   3446         (GLfixed)bottom,
   3447         (GLfixed)top,
   3448         (GLfixed)zNear,
   3449         (GLfixed)zFar
   3450     );
   3451 }
   3452 
   3453 /* void glPixelStorei ( GLenum pname, GLint param ) */
   3454 static void
   3455 android_glPixelStorei__II
   3456   (JNIEnv *_env, jobject _this, jint pname, jint param) {
   3457     glPixelStorei(
   3458         (GLenum)pname,
   3459         (GLint)param
   3460     );
   3461 }
   3462 
   3463 /* void glPointSize ( GLfloat size ) */
   3464 static void
   3465 android_glPointSize__F
   3466   (JNIEnv *_env, jobject _this, jfloat size) {
   3467     glPointSize(
   3468         (GLfloat)size
   3469     );
   3470 }
   3471 
   3472 /* void glPointSizex ( GLfixed size ) */
   3473 static void
   3474 android_glPointSizex__I
   3475   (JNIEnv *_env, jobject _this, jint size) {
   3476     glPointSizex(
   3477         (GLfixed)size
   3478     );
   3479 }
   3480 
   3481 /* void glPolygonOffset ( GLfloat factor, GLfloat units ) */
   3482 static void
   3483 android_glPolygonOffset__FF
   3484   (JNIEnv *_env, jobject _this, jfloat factor, jfloat units) {
   3485     glPolygonOffset(
   3486         (GLfloat)factor,
   3487         (GLfloat)units
   3488     );
   3489 }
   3490 
   3491 /* void glPolygonOffsetx ( GLfixed factor, GLfixed units ) */
   3492 static void
   3493 android_glPolygonOffsetx__II
   3494   (JNIEnv *_env, jobject _this, jint factor, jint units) {
   3495     glPolygonOffsetx(
   3496         (GLfixed)factor,
   3497         (GLfixed)units
   3498     );
   3499 }
   3500 
   3501 /* void glPopMatrix ( void ) */
   3502 static void
   3503 android_glPopMatrix__
   3504   (JNIEnv *_env, jobject _this) {
   3505     glPopMatrix();
   3506 }
   3507 
   3508 /* void glPushMatrix ( void ) */
   3509 static void
   3510 android_glPushMatrix__
   3511   (JNIEnv *_env, jobject _this) {
   3512     glPushMatrix();
   3513 }
   3514 
   3515 /* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) */
   3516 static void
   3517 android_glReadPixels__IIIIIILjava_nio_Buffer_2
   3518   (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) {
   3519     jint _exception = 0;
   3520     const char * _exceptionType = NULL;
   3521     const char * _exceptionMessage = NULL;
   3522     jarray _array = (jarray) 0;
   3523     jint _bufferOffset = (jint) 0;
   3524     jint _remaining;
   3525     GLvoid *pixels = (GLvoid *) 0;
   3526 
   3527     if (!pixels_buf) {
   3528         _exception = 1;
   3529         _exceptionType = "java/lang/IllegalArgumentException";
   3530         _exceptionMessage = "pixels == null";
   3531         goto exit;
   3532     }
   3533     pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   3534     if (pixels == NULL) {
   3535         char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
   3536         pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
   3537     }
   3538     glReadPixels(
   3539         (GLint)x,
   3540         (GLint)y,
   3541         (GLsizei)width,
   3542         (GLsizei)height,
   3543         (GLenum)format,
   3544         (GLenum)type,
   3545         (GLvoid *)pixels
   3546     );
   3547 
   3548 exit:
   3549     if (_array) {
   3550         releasePointer(_env, _array, pixels, _exception ? JNI_FALSE : JNI_TRUE);
   3551     }
   3552     if (_exception) {
   3553         jniThrowException(_env, _exceptionType, _exceptionMessage);
   3554     }
   3555 }
   3556 
   3557 /* void glRotatef ( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) */
   3558 static void
   3559 android_glRotatef__FFFF
   3560   (JNIEnv *_env, jobject _this, jfloat angle, jfloat x, jfloat y, jfloat z) {
   3561     glRotatef(
   3562         (GLfloat)angle,
   3563         (GLfloat)x,
   3564         (GLfloat)y,
   3565         (GLfloat)z
   3566     );
   3567 }
   3568 
   3569 /* void glRotatex ( GLfixed angle, GLfixed x, GLfixed y, GLfixed z ) */
   3570 static void
   3571 android_glRotatex__IIII
   3572   (JNIEnv *_env, jobject _this, jint angle, jint x, jint y, jint z) {
   3573     glRotatex(
   3574         (GLfixed)angle,
   3575         (GLfixed)x,
   3576         (GLfixed)y,
   3577         (GLfixed)z
   3578     );
   3579 }
   3580 
   3581 /* void glSampleCoverage ( GLclampf value, GLboolean invert ) */
   3582 static void
   3583 android_glSampleCoverage__FZ
   3584   (JNIEnv *_env, jobject _this, jfloat value, jboolean invert) {
   3585     glSampleCoverage(
   3586         (GLclampf)value,
   3587         (GLboolean)invert
   3588     );
   3589 }
   3590 
   3591 /* void glSampleCoveragex ( GLclampx value, GLboolean invert ) */
   3592 static void
   3593 android_glSampleCoveragex__IZ
   3594   (JNIEnv *_env, jobject _this, jint value, jboolean invert) {
   3595     glSampleCoveragex(
   3596         (GLclampx)value,
   3597         (GLboolean)invert
   3598     );
   3599 }
   3600 
   3601 /* void glScalef ( GLfloat x, GLfloat y, GLfloat z ) */
   3602 static void
   3603 android_glScalef__FFF
   3604   (JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) {
   3605     glScalef(
   3606         (GLfloat)x,
   3607         (GLfloat)y,
   3608         (GLfloat)z
   3609     );
   3610 }
   3611 
   3612 /* void glScalex ( GLfixed x, GLfixed y, GLfixed z ) */
   3613 static void
   3614 android_glScalex__III
   3615   (JNIEnv *_env, jobject _this, jint x, jint y, jint z) {
   3616     glScalex(
   3617         (GLfixed)x,
   3618         (GLfixed)y,
   3619         (GLfixed)z
   3620     );
   3621 }
   3622 
   3623 /* void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height ) */
   3624 static void
   3625 android_glScissor__IIII
   3626   (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
   3627     glScissor(
   3628         (GLint)x,
   3629         (GLint)y,
   3630         (GLsizei)width,
   3631         (GLsizei)height
   3632     );
   3633 }
   3634 
   3635 /* void glShadeModel ( GLenum mode ) */
   3636 static void
   3637 android_glShadeModel__I
   3638   (JNIEnv *_env, jobject _this, jint mode) {
   3639     glShadeModel(
   3640         (GLenum)mode
   3641     );
   3642 }
   3643 
   3644 /* void glStencilFunc ( GLenum func, GLint ref, GLuint mask ) */
   3645 static void
   3646 android_glStencilFunc__III
   3647   (JNIEnv *_env, jobject _this, jint func, jint ref, jint mask) {
   3648     glStencilFunc(
   3649         (GLenum)func,
   3650         (GLint)ref,
   3651         (GLuint)mask
   3652     );
   3653 }
   3654 
   3655 /* void glStencilMask ( GLuint mask ) */
   3656 static void
   3657 android_glStencilMask__I
   3658   (JNIEnv *_env, jobject _this, jint mask) {
   3659     glStencilMask(
   3660         (GLuint)mask
   3661     );
   3662 }
   3663 
   3664 /* void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass ) */
   3665 static void
   3666 android_glStencilOp__III
   3667   (JNIEnv *_env, jobject _this, jint fail, jint zfail, jint zpass) {
   3668     glStencilOp(
   3669         (GLenum)fail,
   3670         (GLenum)zfail,
   3671         (GLenum)zpass
   3672     );
   3673 }
   3674 
   3675 /* void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
   3676 static void
   3677 android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I
   3678   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
   3679     jint _exception = 0;
   3680     const char * _exceptionType = NULL;
   3681     const char * _exceptionMessage = NULL;
   3682     jarray _array = (jarray) 0;
   3683     jint _bufferOffset = (jint) 0;
   3684     jint _remaining;
   3685     GLvoid *pointer = (GLvoid *) 0;
   3686 
   3687     if (pointer_buf) {
   3688         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
   3689         if ( ! pointer ) {
   3690             return;
   3691         }
   3692     }
   3693     glTexCoordPointerBounds(
   3694         (GLint)size,
   3695         (GLenum)type,
   3696         (GLsizei)stride,
   3697         (GLvoid *)pointer,
   3698         (GLsizei)remaining
   3699     );
   3700     if (_exception) {
   3701         jniThrowException(_env, _exceptionType, _exceptionMessage);
   3702     }
   3703 }
   3704 
   3705 /* void glTexEnvf ( GLenum target, GLenum pname, GLfloat param ) */
   3706 static void
   3707 android_glTexEnvf__IIF
   3708   (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
   3709     glTexEnvf(
   3710         (GLenum)target,
   3711         (GLenum)pname,
   3712         (GLfloat)param
   3713     );
   3714 }
   3715 
   3716 /* void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) */
   3717 static void
   3718 android_glTexEnvfv__II_3FI
   3719   (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
   3720     jint _exception = 0;
   3721     const char * _exceptionType = NULL;
   3722     const char * _exceptionMessage = NULL;
   3723     GLfloat *params_base = (GLfloat *) 0;
   3724     jint _remaining;
   3725     GLfloat *params = (GLfloat *) 0;
   3726 
   3727     if (!params_ref) {
   3728         _exception = 1;
   3729         _exceptionType = "java/lang/IllegalArgumentException";
   3730         _exceptionMessage = "params == null";
   3731         goto exit;
   3732     }
   3733     if (offset < 0) {
   3734         _exception = 1;
   3735         _exceptionType = "java/lang/IllegalArgumentException";
   3736         _exceptionMessage = "offset < 0";
   3737         goto exit;
   3738     }
   3739     _remaining = _env->GetArrayLength(params_ref) - offset;
   3740     int _needed;
   3741     switch (pname) {
   3742 #if defined(GL_TEXTURE_ENV_MODE)
   3743         case GL_TEXTURE_ENV_MODE:
   3744 #endif // defined(GL_TEXTURE_ENV_MODE)
   3745 #if defined(GL_COMBINE_RGB)
   3746         case GL_COMBINE_RGB:
   3747 #endif // defined(GL_COMBINE_RGB)
   3748 #if defined(GL_COMBINE_ALPHA)
   3749         case GL_COMBINE_ALPHA:
   3750 #endif // defined(GL_COMBINE_ALPHA)
   3751             _needed = 1;
   3752             break;
   3753 #if defined(GL_TEXTURE_ENV_COLOR)
   3754         case GL_TEXTURE_ENV_COLOR:
   3755 #endif // defined(GL_TEXTURE_ENV_COLOR)
   3756             _needed = 4;
   3757             break;
   3758         default:
   3759             _needed = 1;
   3760             break;
   3761     }
   3762     if (_remaining < _needed) {
   3763         _exception = 1;
   3764         _exceptionType = "java/lang/IllegalArgumentException";
   3765         _exceptionMessage = "length - offset < needed";
   3766         goto exit;
   3767     }
   3768     params_base = (GLfloat *)
   3769         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
   3770     params = params_base + offset;
   3771 
   3772     glTexEnvfv(
   3773         (GLenum)target,
   3774         (GLenum)pname,
   3775         (GLfloat *)params
   3776     );
   3777 
   3778 exit:
   3779     if (params_base) {
   3780         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
   3781             JNI_ABORT);
   3782     }
   3783     if (_exception) {
   3784         jniThrowException(_env, _exceptionType, _exceptionMessage);
   3785     }
   3786 }
   3787 
   3788 /* void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) */
   3789 static void
   3790 android_glTexEnvfv__IILjava_nio_FloatBuffer_2
   3791   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
   3792     jint _exception = 0;
   3793     const char * _exceptionType = NULL;
   3794     const char * _exceptionMessage = NULL;
   3795     jfloatArray _array = (jfloatArray) 0;
   3796     jint _bufferOffset = (jint) 0;
   3797     jint _remaining;
   3798     GLfloat *params = (GLfloat *) 0;
   3799 
   3800     if (!params_buf) {
   3801         _exception = 1;
   3802         _exceptionType = "java/lang/IllegalArgumentException";
   3803         _exceptionMessage = "params == null";
   3804         goto exit;
   3805     }
   3806     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   3807     int _needed;
   3808     switch (pname) {
   3809 #if defined(GL_TEXTURE_ENV_MODE)
   3810         case GL_TEXTURE_ENV_MODE:
   3811 #endif // defined(GL_TEXTURE_ENV_MODE)
   3812 #if defined(GL_COMBINE_RGB)
   3813         case GL_COMBINE_RGB:
   3814 #endif // defined(GL_COMBINE_RGB)
   3815 #if defined(GL_COMBINE_ALPHA)
   3816         case GL_COMBINE_ALPHA:
   3817 #endif // defined(GL_COMBINE_ALPHA)
   3818             _needed = 1;
   3819             break;
   3820 #if defined(GL_TEXTURE_ENV_COLOR)
   3821         case GL_TEXTURE_ENV_COLOR:
   3822 #endif // defined(GL_TEXTURE_ENV_COLOR)
   3823             _needed = 4;
   3824             break;
   3825         default:
   3826             _needed = 1;
   3827             break;
   3828     }
   3829     if (_remaining < _needed) {
   3830         _exception = 1;
   3831         _exceptionType = "java/lang/IllegalArgumentException";
   3832         _exceptionMessage = "remaining() < needed";
   3833         goto exit;
   3834     }
   3835     if (params == NULL) {
   3836         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   3837         params = (GLfloat *) (_paramsBase + _bufferOffset);
   3838     }
   3839     glTexEnvfv(
   3840         (GLenum)target,
   3841         (GLenum)pname,
   3842         (GLfloat *)params
   3843     );
   3844 
   3845 exit:
   3846     if (_array) {
   3847         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
   3848     }
   3849     if (_exception) {
   3850         jniThrowException(_env, _exceptionType, _exceptionMessage);
   3851     }
   3852 }
   3853 
   3854 /* void glTexEnvx ( GLenum target, GLenum pname, GLfixed param ) */
   3855 static void
   3856 android_glTexEnvx__III
   3857   (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
   3858     glTexEnvx(
   3859         (GLenum)target,
   3860         (GLenum)pname,
   3861         (GLfixed)param
   3862     );
   3863 }
   3864 
   3865 /* void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) */
   3866 static void
   3867 android_glTexEnvxv__II_3II
   3868   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
   3869     jint _exception = 0;
   3870     const char * _exceptionType = NULL;
   3871     const char * _exceptionMessage = NULL;
   3872     GLfixed *params_base = (GLfixed *) 0;
   3873     jint _remaining;
   3874     GLfixed *params = (GLfixed *) 0;
   3875 
   3876     if (!params_ref) {
   3877         _exception = 1;
   3878         _exceptionType = "java/lang/IllegalArgumentException";
   3879         _exceptionMessage = "params == null";
   3880         goto exit;
   3881     }
   3882     if (offset < 0) {
   3883         _exception = 1;
   3884         _exceptionType = "java/lang/IllegalArgumentException";
   3885         _exceptionMessage = "offset < 0";
   3886         goto exit;
   3887     }
   3888     _remaining = _env->GetArrayLength(params_ref) - offset;
   3889     int _needed;
   3890     switch (pname) {
   3891 #if defined(GL_TEXTURE_ENV_MODE)
   3892         case GL_TEXTURE_ENV_MODE:
   3893 #endif // defined(GL_TEXTURE_ENV_MODE)
   3894 #if defined(GL_COMBINE_RGB)
   3895         case GL_COMBINE_RGB:
   3896 #endif // defined(GL_COMBINE_RGB)
   3897 #if defined(GL_COMBINE_ALPHA)
   3898         case GL_COMBINE_ALPHA:
   3899 #endif // defined(GL_COMBINE_ALPHA)
   3900             _needed = 1;
   3901             break;
   3902 #if defined(GL_TEXTURE_ENV_COLOR)
   3903         case GL_TEXTURE_ENV_COLOR:
   3904 #endif // defined(GL_TEXTURE_ENV_COLOR)
   3905             _needed = 4;
   3906             break;
   3907         default:
   3908             _needed = 1;
   3909             break;
   3910     }
   3911     if (_remaining < _needed) {
   3912         _exception = 1;
   3913         _exceptionType = "java/lang/IllegalArgumentException";
   3914         _exceptionMessage = "length - offset < needed";
   3915         goto exit;
   3916     }
   3917     params_base = (GLfixed *)
   3918         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   3919     params = params_base + offset;
   3920 
   3921     glTexEnvxv(
   3922         (GLenum)target,
   3923         (GLenum)pname,
   3924         (GLfixed *)params
   3925     );
   3926 
   3927 exit:
   3928     if (params_base) {
   3929         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   3930             JNI_ABORT);
   3931     }
   3932     if (_exception) {
   3933         jniThrowException(_env, _exceptionType, _exceptionMessage);
   3934     }
   3935 }
   3936 
   3937 /* void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) */
   3938 static void
   3939 android_glTexEnvxv__IILjava_nio_IntBuffer_2
   3940   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
   3941     jint _exception = 0;
   3942     const char * _exceptionType = NULL;
   3943     const char * _exceptionMessage = NULL;
   3944     jintArray _array = (jintArray) 0;
   3945     jint _bufferOffset = (jint) 0;
   3946     jint _remaining;
   3947     GLfixed *params = (GLfixed *) 0;
   3948 
   3949     if (!params_buf) {
   3950         _exception = 1;
   3951         _exceptionType = "java/lang/IllegalArgumentException";
   3952         _exceptionMessage = "params == null";
   3953         goto exit;
   3954     }
   3955     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   3956     int _needed;
   3957     switch (pname) {
   3958 #if defined(GL_TEXTURE_ENV_MODE)
   3959         case GL_TEXTURE_ENV_MODE:
   3960 #endif // defined(GL_TEXTURE_ENV_MODE)
   3961 #if defined(GL_COMBINE_RGB)
   3962         case GL_COMBINE_RGB:
   3963 #endif // defined(GL_COMBINE_RGB)
   3964 #if defined(GL_COMBINE_ALPHA)
   3965         case GL_COMBINE_ALPHA:
   3966 #endif // defined(GL_COMBINE_ALPHA)
   3967             _needed = 1;
   3968             break;
   3969 #if defined(GL_TEXTURE_ENV_COLOR)
   3970         case GL_TEXTURE_ENV_COLOR:
   3971 #endif // defined(GL_TEXTURE_ENV_COLOR)
   3972             _needed = 4;
   3973             break;
   3974         default:
   3975             _needed = 1;
   3976             break;
   3977     }
   3978     if (_remaining < _needed) {
   3979         _exception = 1;
   3980         _exceptionType = "java/lang/IllegalArgumentException";
   3981         _exceptionMessage = "remaining() < needed";
   3982         goto exit;
   3983     }
   3984     if (params == NULL) {
   3985         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   3986         params = (GLfixed *) (_paramsBase + _bufferOffset);
   3987     }
   3988     glTexEnvxv(
   3989         (GLenum)target,
   3990         (GLenum)pname,
   3991         (GLfixed *)params
   3992     );
   3993 
   3994 exit:
   3995     if (_array) {
   3996         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
   3997     }
   3998     if (_exception) {
   3999         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4000     }
   4001 }
   4002 
   4003 /* void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */
   4004 static void
   4005 android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2
   4006   (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) {
   4007     jint _exception = 0;
   4008     const char * _exceptionType = NULL;
   4009     const char * _exceptionMessage = NULL;
   4010     jarray _array = (jarray) 0;
   4011     jint _bufferOffset = (jint) 0;
   4012     jint _remaining;
   4013     GLvoid *pixels = (GLvoid *) 0;
   4014 
   4015     if (pixels_buf) {
   4016         pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   4017     }
   4018     if (pixels_buf && pixels == NULL) {
   4019         char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
   4020         pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
   4021     }
   4022     glTexImage2D(
   4023         (GLenum)target,
   4024         (GLint)level,
   4025         (GLint)internalformat,
   4026         (GLsizei)width,
   4027         (GLsizei)height,
   4028         (GLint)border,
   4029         (GLenum)format,
   4030         (GLenum)type,
   4031         (GLvoid *)pixels
   4032     );
   4033     if (_array) {
   4034         releasePointer(_env, _array, pixels, JNI_FALSE);
   4035     }
   4036     if (_exception) {
   4037         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4038     }
   4039 }
   4040 
   4041 /* void glTexParameterf ( GLenum target, GLenum pname, GLfloat param ) */
   4042 static void
   4043 android_glTexParameterf__IIF
   4044   (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
   4045     glTexParameterf(
   4046         (GLenum)target,
   4047         (GLenum)pname,
   4048         (GLfloat)param
   4049     );
   4050 }
   4051 
   4052 /* void glTexParameterx ( GLenum target, GLenum pname, GLfixed param ) */
   4053 static void
   4054 android_glTexParameterx__III
   4055   (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
   4056     glTexParameterx(
   4057         (GLenum)target,
   4058         (GLenum)pname,
   4059         (GLfixed)param
   4060     );
   4061 }
   4062 
   4063 /* void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) */
   4064 static void
   4065 android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
   4066   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) {
   4067     jint _exception = 0;
   4068     const char * _exceptionType = NULL;
   4069     const char * _exceptionMessage = NULL;
   4070     jarray _array = (jarray) 0;
   4071     jint _bufferOffset = (jint) 0;
   4072     jint _remaining;
   4073     GLvoid *pixels = (GLvoid *) 0;
   4074 
   4075     if (pixels_buf) {
   4076         pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   4077     }
   4078     if (pixels_buf && pixels == NULL) {
   4079         char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
   4080         pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
   4081     }
   4082     glTexSubImage2D(
   4083         (GLenum)target,
   4084         (GLint)level,
   4085         (GLint)xoffset,
   4086         (GLint)yoffset,
   4087         (GLsizei)width,
   4088         (GLsizei)height,
   4089         (GLenum)format,
   4090         (GLenum)type,
   4091         (GLvoid *)pixels
   4092     );
   4093     if (_array) {
   4094         releasePointer(_env, _array, pixels, JNI_FALSE);
   4095     }
   4096     if (_exception) {
   4097         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4098     }
   4099 }
   4100 
   4101 /* void glTranslatef ( GLfloat x, GLfloat y, GLfloat z ) */
   4102 static void
   4103 android_glTranslatef__FFF
   4104   (JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) {
   4105     glTranslatef(
   4106         (GLfloat)x,
   4107         (GLfloat)y,
   4108         (GLfloat)z
   4109     );
   4110 }
   4111 
   4112 /* void glTranslatex ( GLfixed x, GLfixed y, GLfixed z ) */
   4113 static void
   4114 android_glTranslatex__III
   4115   (JNIEnv *_env, jobject _this, jint x, jint y, jint z) {
   4116     glTranslatex(
   4117         (GLfixed)x,
   4118         (GLfixed)y,
   4119         (GLfixed)z
   4120     );
   4121 }
   4122 
   4123 /* void glVertexPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
   4124 static void
   4125 android_glVertexPointerBounds__IIILjava_nio_Buffer_2I
   4126   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
   4127     jint _exception = 0;
   4128     const char * _exceptionType = NULL;
   4129     const char * _exceptionMessage = NULL;
   4130     jarray _array = (jarray) 0;
   4131     jint _bufferOffset = (jint) 0;
   4132     jint _remaining;
   4133     GLvoid *pointer = (GLvoid *) 0;
   4134 
   4135     if (pointer_buf) {
   4136         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
   4137         if ( ! pointer ) {
   4138             return;
   4139         }
   4140     }
   4141     glVertexPointerBounds(
   4142         (GLint)size,
   4143         (GLenum)type,
   4144         (GLsizei)stride,
   4145         (GLvoid *)pointer,
   4146         (GLsizei)remaining
   4147     );
   4148     if (_exception) {
   4149         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4150     }
   4151 }
   4152 
   4153 /* void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) */
   4154 static void
   4155 android_glViewport__IIII
   4156   (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
   4157     glViewport(
   4158         (GLint)x,
   4159         (GLint)y,
   4160         (GLsizei)width,
   4161         (GLsizei)height
   4162     );
   4163 }
   4164 
   4165 /* GLbitfield glQueryMatrixxOES ( GLfixed *mantissa, GLint *exponent ) */
   4166 static jint
   4167 android_glQueryMatrixxOES___3II_3II
   4168   (JNIEnv *_env, jobject _this, jintArray mantissa_ref, jint mantissaOffset, jintArray exponent_ref, jint exponentOffset) {
   4169     jint _exception = 0;
   4170     const char * _exceptionType = NULL;
   4171     const char * _exceptionMessage = NULL;
   4172     GLbitfield _returnValue = -1;
   4173     GLfixed *mantissa_base = (GLfixed *) 0;
   4174     jint _mantissaRemaining;
   4175     GLfixed *mantissa = (GLfixed *) 0;
   4176     GLint *exponent_base = (GLint *) 0;
   4177     jint _exponentRemaining;
   4178     GLint *exponent = (GLint *) 0;
   4179 
   4180     if (!mantissa_ref) {
   4181         _exception = 1;
   4182         _exceptionType = "java/lang/IllegalArgumentException";
   4183         _exceptionMessage = "mantissa == null";
   4184         goto exit;
   4185     }
   4186     if (mantissaOffset < 0) {
   4187         _exception = 1;
   4188         _exceptionType = "java/lang/IllegalArgumentException";
   4189         _exceptionMessage = "mantissaOffset < 0";
   4190         goto exit;
   4191     }
   4192     _mantissaRemaining = _env->GetArrayLength(mantissa_ref) - mantissaOffset;
   4193     if (_mantissaRemaining < 16) {
   4194         _exception = 1;
   4195         _exceptionType = "java/lang/IllegalArgumentException";
   4196         _exceptionMessage = "length - mantissaOffset < 16 < needed";
   4197         goto exit;
   4198     }
   4199     mantissa_base = (GLfixed *)
   4200         _env->GetIntArrayElements(mantissa_ref, (jboolean *)0);
   4201     mantissa = mantissa_base + mantissaOffset;
   4202 
   4203     if (!exponent_ref) {
   4204         _exception = 1;
   4205         _exceptionType = "java/lang/IllegalArgumentException";
   4206         _exceptionMessage = "exponent == null";
   4207         goto exit;
   4208     }
   4209     if (exponentOffset < 0) {
   4210         _exception = 1;
   4211         _exceptionType = "java/lang/IllegalArgumentException";
   4212         _exceptionMessage = "exponentOffset < 0";
   4213         goto exit;
   4214     }
   4215     _exponentRemaining = _env->GetArrayLength(exponent_ref) - exponentOffset;
   4216     if (_exponentRemaining < 16) {
   4217         _exception = 1;
   4218         _exceptionType = "java/lang/IllegalArgumentException";
   4219         _exceptionMessage = "length - exponentOffset < 16 < needed";
   4220         goto exit;
   4221     }
   4222     exponent_base = (GLint *)
   4223         _env->GetIntArrayElements(exponent_ref, (jboolean *)0);
   4224     exponent = exponent_base + exponentOffset;
   4225 
   4226     _returnValue = glQueryMatrixxOES(
   4227         (GLfixed *)mantissa,
   4228         (GLint *)exponent
   4229     );
   4230 
   4231 exit:
   4232     if (exponent_base) {
   4233         _env->ReleaseIntArrayElements(exponent_ref, (jint*)exponent_base,
   4234             _exception ? JNI_ABORT: 0);
   4235     }
   4236     if (mantissa_base) {
   4237         _env->ReleaseIntArrayElements(mantissa_ref, (jint*)mantissa_base,
   4238             _exception ? JNI_ABORT: 0);
   4239     }
   4240     if (_exception) {
   4241         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4242     }
   4243     return (jint)_returnValue;
   4244 }
   4245 
   4246 /* GLbitfield glQueryMatrixxOES ( GLfixed *mantissa, GLint *exponent ) */
   4247 static jint
   4248 android_glQueryMatrixxOES__Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
   4249   (JNIEnv *_env, jobject _this, jobject mantissa_buf, jobject exponent_buf) {
   4250     jint _exception = 0;
   4251     const char * _exceptionType = NULL;
   4252     const char * _exceptionMessage = NULL;
   4253     jintArray _mantissaArray = (jintArray) 0;
   4254     jint _mantissaBufferOffset = (jint) 0;
   4255     jintArray _exponentArray = (jintArray) 0;
   4256     jint _exponentBufferOffset = (jint) 0;
   4257     GLbitfield _returnValue = -1;
   4258     jint _mantissaRemaining;
   4259     GLfixed *mantissa = (GLfixed *) 0;
   4260     jint _exponentRemaining;
   4261     GLint *exponent = (GLint *) 0;
   4262 
   4263     if (!mantissa_buf) {
   4264         _exception = 1;
   4265         _exceptionType = "java/lang/IllegalArgumentException";
   4266         _exceptionMessage = "mantissa == null";
   4267         goto exit;
   4268     }
   4269     mantissa = (GLfixed *)getPointer(_env, mantissa_buf, (jarray*)&_mantissaArray, &_mantissaRemaining, &_mantissaBufferOffset);
   4270     if (_mantissaRemaining < 16) {
   4271         _exception = 1;
   4272         _exceptionType = "java/lang/IllegalArgumentException";
   4273         _exceptionMessage = "remaining() < 16 < needed";
   4274         goto exit;
   4275     }
   4276     if (!exponent_buf) {
   4277         _exception = 1;
   4278         _exceptionType = "java/lang/IllegalArgumentException";
   4279         _exceptionMessage = "exponent == null";
   4280         goto exit;
   4281     }
   4282     exponent = (GLint *)getPointer(_env, exponent_buf, (jarray*)&_exponentArray, &_exponentRemaining, &_exponentBufferOffset);
   4283     if (_exponentRemaining < 16) {
   4284         _exception = 1;
   4285         _exceptionType = "java/lang/IllegalArgumentException";
   4286         _exceptionMessage = "remaining() < 16 < needed";
   4287         goto exit;
   4288     }
   4289     if (mantissa == NULL) {
   4290         char * _mantissaBase = (char *)_env->GetIntArrayElements(_mantissaArray, (jboolean *) 0);
   4291         mantissa = (GLfixed *) (_mantissaBase + _mantissaBufferOffset);
   4292     }
   4293     if (exponent == NULL) {
   4294         char * _exponentBase = (char *)_env->GetIntArrayElements(_exponentArray, (jboolean *) 0);
   4295         exponent = (GLint *) (_exponentBase + _exponentBufferOffset);
   4296     }
   4297     _returnValue = glQueryMatrixxOES(
   4298         (GLfixed *)mantissa,
   4299         (GLint *)exponent
   4300     );
   4301 
   4302 exit:
   4303     if (_exponentArray) {
   4304         _env->ReleaseIntArrayElements(_exponentArray, (jint*)exponent, _exception ? JNI_ABORT : 0);
   4305     }
   4306     if (_mantissaArray) {
   4307         _env->ReleaseIntArrayElements(_mantissaArray, (jint*)mantissa, _exception ? JNI_ABORT : 0);
   4308     }
   4309     if (_exception) {
   4310         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4311     }
   4312     return (jint)_returnValue;
   4313 }
   4314 
   4315 /* void glBindBuffer ( GLenum target, GLuint buffer ) */
   4316 static void
   4317 android_glBindBuffer__II
   4318   (JNIEnv *_env, jobject _this, jint target, jint buffer) {
   4319     glBindBuffer(
   4320         (GLenum)target,
   4321         (GLuint)buffer
   4322     );
   4323 }
   4324 
   4325 /* void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage ) */
   4326 static void
   4327 android_glBufferData__IILjava_nio_Buffer_2I
   4328   (JNIEnv *_env, jobject _this, jint target, jint size, jobject data_buf, jint usage) {
   4329     jint _exception = 0;
   4330     const char * _exceptionType = NULL;
   4331     const char * _exceptionMessage = NULL;
   4332     jarray _array = (jarray) 0;
   4333     jint _bufferOffset = (jint) 0;
   4334     jint _remaining;
   4335     GLvoid *data = (GLvoid *) 0;
   4336 
   4337     if (data_buf) {
   4338         data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   4339         if (_remaining < size) {
   4340             _exception = 1;
   4341             _exceptionType = "java/lang/IllegalArgumentException";
   4342             _exceptionMessage = "remaining() < size < needed";
   4343             goto exit;
   4344         }
   4345     }
   4346     if (data_buf && data == NULL) {
   4347         char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
   4348         data = (GLvoid *) (_dataBase + _bufferOffset);
   4349     }
   4350     glBufferData(
   4351         (GLenum)target,
   4352         (GLsizeiptr)size,
   4353         (GLvoid *)data,
   4354         (GLenum)usage
   4355     );
   4356 
   4357 exit:
   4358     if (_array) {
   4359         releasePointer(_env, _array, data, JNI_FALSE);
   4360     }
   4361     if (_exception) {
   4362         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4363     }
   4364 }
   4365 
   4366 /* void glBufferSubData ( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data ) */
   4367 static void
   4368 android_glBufferSubData__IIILjava_nio_Buffer_2
   4369   (JNIEnv *_env, jobject _this, jint target, jint offset, jint size, jobject data_buf) {
   4370     jint _exception = 0;
   4371     const char * _exceptionType = NULL;
   4372     const char * _exceptionMessage = NULL;
   4373     jarray _array = (jarray) 0;
   4374     jint _bufferOffset = (jint) 0;
   4375     jint _remaining;
   4376     GLvoid *data = (GLvoid *) 0;
   4377 
   4378     if (!data_buf) {
   4379         _exception = 1;
   4380         _exceptionType = "java/lang/IllegalArgumentException";
   4381         _exceptionMessage = "data == null";
   4382         goto exit;
   4383     }
   4384     data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   4385     if (_remaining < size) {
   4386         _exception = 1;
   4387         _exceptionType = "java/lang/IllegalArgumentException";
   4388         _exceptionMessage = "remaining() < size < needed";
   4389         goto exit;
   4390     }
   4391     if (data == NULL) {
   4392         char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
   4393         data = (GLvoid *) (_dataBase + _bufferOffset);
   4394     }
   4395     glBufferSubData(
   4396         (GLenum)target,
   4397         (GLintptr)offset,
   4398         (GLsizeiptr)size,
   4399         (GLvoid *)data
   4400     );
   4401 
   4402 exit:
   4403     if (_array) {
   4404         releasePointer(_env, _array, data, JNI_FALSE);
   4405     }
   4406     if (_exception) {
   4407         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4408     }
   4409 }
   4410 
   4411 /* void glClipPlanef ( GLenum plane, const GLfloat *equation ) */
   4412 static void
   4413 android_glClipPlanef__I_3FI
   4414   (JNIEnv *_env, jobject _this, jint plane, jfloatArray equation_ref, jint offset) {
   4415     jint _exception = 0;
   4416     const char * _exceptionType = NULL;
   4417     const char * _exceptionMessage = NULL;
   4418     GLfloat *equation_base = (GLfloat *) 0;
   4419     jint _remaining;
   4420     GLfloat *equation = (GLfloat *) 0;
   4421 
   4422     if (!equation_ref) {
   4423         _exception = 1;
   4424         _exceptionType = "java/lang/IllegalArgumentException";
   4425         _exceptionMessage = "equation == null";
   4426         goto exit;
   4427     }
   4428     if (offset < 0) {
   4429         _exception = 1;
   4430         _exceptionType = "java/lang/IllegalArgumentException";
   4431         _exceptionMessage = "offset < 0";
   4432         goto exit;
   4433     }
   4434     _remaining = _env->GetArrayLength(equation_ref) - offset;
   4435     if (_remaining < 4) {
   4436         _exception = 1;
   4437         _exceptionType = "java/lang/IllegalArgumentException";
   4438         _exceptionMessage = "length - offset < 4 < needed";
   4439         goto exit;
   4440     }
   4441     equation_base = (GLfloat *)
   4442         _env->GetFloatArrayElements(equation_ref, (jboolean *)0);
   4443     equation = equation_base + offset;
   4444 
   4445     glClipPlanef(
   4446         (GLenum)plane,
   4447         (GLfloat *)equation
   4448     );
   4449 
   4450 exit:
   4451     if (equation_base) {
   4452         _env->ReleaseFloatArrayElements(equation_ref, (jfloat*)equation_base,
   4453             JNI_ABORT);
   4454     }
   4455     if (_exception) {
   4456         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4457     }
   4458 }
   4459 
   4460 /* void glClipPlanef ( GLenum plane, const GLfloat *equation ) */
   4461 static void
   4462 android_glClipPlanef__ILjava_nio_FloatBuffer_2
   4463   (JNIEnv *_env, jobject _this, jint plane, jobject equation_buf) {
   4464     jint _exception = 0;
   4465     const char * _exceptionType = NULL;
   4466     const char * _exceptionMessage = NULL;
   4467     jfloatArray _array = (jfloatArray) 0;
   4468     jint _bufferOffset = (jint) 0;
   4469     jint _remaining;
   4470     GLfloat *equation = (GLfloat *) 0;
   4471 
   4472     if (!equation_buf) {
   4473         _exception = 1;
   4474         _exceptionType = "java/lang/IllegalArgumentException";
   4475         _exceptionMessage = "equation == null";
   4476         goto exit;
   4477     }
   4478     equation = (GLfloat *)getPointer(_env, equation_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   4479     if (_remaining < 4) {
   4480         _exception = 1;
   4481         _exceptionType = "java/lang/IllegalArgumentException";
   4482         _exceptionMessage = "remaining() < 4 < needed";
   4483         goto exit;
   4484     }
   4485     if (equation == NULL) {
   4486         char * _equationBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   4487         equation = (GLfloat *) (_equationBase + _bufferOffset);
   4488     }
   4489     glClipPlanef(
   4490         (GLenum)plane,
   4491         (GLfloat *)equation
   4492     );
   4493 
   4494 exit:
   4495     if (_array) {
   4496         _env->ReleaseFloatArrayElements(_array, (jfloat*)equation, JNI_ABORT);
   4497     }
   4498     if (_exception) {
   4499         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4500     }
   4501 }
   4502 
   4503 /* void glClipPlanex ( GLenum plane, const GLfixed *equation ) */
   4504 static void
   4505 android_glClipPlanex__I_3II
   4506   (JNIEnv *_env, jobject _this, jint plane, jintArray equation_ref, jint offset) {
   4507     jint _exception = 0;
   4508     const char * _exceptionType = NULL;
   4509     const char * _exceptionMessage = NULL;
   4510     GLfixed *equation_base = (GLfixed *) 0;
   4511     jint _remaining;
   4512     GLfixed *equation = (GLfixed *) 0;
   4513 
   4514     if (!equation_ref) {
   4515         _exception = 1;
   4516         _exceptionType = "java/lang/IllegalArgumentException";
   4517         _exceptionMessage = "equation == null";
   4518         goto exit;
   4519     }
   4520     if (offset < 0) {
   4521         _exception = 1;
   4522         _exceptionType = "java/lang/IllegalArgumentException";
   4523         _exceptionMessage = "offset < 0";
   4524         goto exit;
   4525     }
   4526     _remaining = _env->GetArrayLength(equation_ref) - offset;
   4527     if (_remaining < 4) {
   4528         _exception = 1;
   4529         _exceptionType = "java/lang/IllegalArgumentException";
   4530         _exceptionMessage = "length - offset < 4 < needed";
   4531         goto exit;
   4532     }
   4533     equation_base = (GLfixed *)
   4534         _env->GetIntArrayElements(equation_ref, (jboolean *)0);
   4535     equation = equation_base + offset;
   4536 
   4537     glClipPlanex(
   4538         (GLenum)plane,
   4539         (GLfixed *)equation
   4540     );
   4541 
   4542 exit:
   4543     if (equation_base) {
   4544         _env->ReleaseIntArrayElements(equation_ref, (jint*)equation_base,
   4545             JNI_ABORT);
   4546     }
   4547     if (_exception) {
   4548         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4549     }
   4550 }
   4551 
   4552 /* void glClipPlanex ( GLenum plane, const GLfixed *equation ) */
   4553 static void
   4554 android_glClipPlanex__ILjava_nio_IntBuffer_2
   4555   (JNIEnv *_env, jobject _this, jint plane, jobject equation_buf) {
   4556     jint _exception = 0;
   4557     const char * _exceptionType = NULL;
   4558     const char * _exceptionMessage = NULL;
   4559     jintArray _array = (jintArray) 0;
   4560     jint _bufferOffset = (jint) 0;
   4561     jint _remaining;
   4562     GLfixed *equation = (GLfixed *) 0;
   4563 
   4564     if (!equation_buf) {
   4565         _exception = 1;
   4566         _exceptionType = "java/lang/IllegalArgumentException";
   4567         _exceptionMessage = "equation == null";
   4568         goto exit;
   4569     }
   4570     equation = (GLfixed *)getPointer(_env, equation_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   4571     if (_remaining < 4) {
   4572         _exception = 1;
   4573         _exceptionType = "java/lang/IllegalArgumentException";
   4574         _exceptionMessage = "remaining() < 4 < needed";
   4575         goto exit;
   4576     }
   4577     if (equation == NULL) {
   4578         char * _equationBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   4579         equation = (GLfixed *) (_equationBase + _bufferOffset);
   4580     }
   4581     glClipPlanex(
   4582         (GLenum)plane,
   4583         (GLfixed *)equation
   4584     );
   4585 
   4586 exit:
   4587     if (_array) {
   4588         _env->ReleaseIntArrayElements(_array, (jint*)equation, JNI_ABORT);
   4589     }
   4590     if (_exception) {
   4591         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4592     }
   4593 }
   4594 
   4595 /* void glColor4ub ( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ) */
   4596 static void
   4597 android_glColor4ub__BBBB
   4598   (JNIEnv *_env, jobject _this, jbyte red, jbyte green, jbyte blue, jbyte alpha) {
   4599     glColor4ub(
   4600         (GLubyte)red,
   4601         (GLubyte)green,
   4602         (GLubyte)blue,
   4603         (GLubyte)alpha
   4604     );
   4605 }
   4606 
   4607 /* void glColorPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
   4608 static void
   4609 android_glColorPointer__IIII
   4610   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) {
   4611     glColorPointer(
   4612         (GLint)size,
   4613         (GLenum)type,
   4614         (GLsizei)stride,
   4615         reinterpret_cast<GLvoid *>(offset)
   4616     );
   4617 }
   4618 
   4619 /* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */
   4620 static void
   4621 android_glDeleteBuffers__I_3II
   4622   (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) {
   4623     jint _exception = 0;
   4624     const char * _exceptionType = NULL;
   4625     const char * _exceptionMessage = NULL;
   4626     GLuint *buffers_base = (GLuint *) 0;
   4627     jint _remaining;
   4628     GLuint *buffers = (GLuint *) 0;
   4629 
   4630     if (!buffers_ref) {
   4631         _exception = 1;
   4632         _exceptionType = "java/lang/IllegalArgumentException";
   4633         _exceptionMessage = "buffers == null";
   4634         goto exit;
   4635     }
   4636     if (offset < 0) {
   4637         _exception = 1;
   4638         _exceptionType = "java/lang/IllegalArgumentException";
   4639         _exceptionMessage = "offset < 0";
   4640         goto exit;
   4641     }
   4642     _remaining = _env->GetArrayLength(buffers_ref) - offset;
   4643     if (_remaining < n) {
   4644         _exception = 1;
   4645         _exceptionType = "java/lang/IllegalArgumentException";
   4646         _exceptionMessage = "length - offset < n < needed";
   4647         goto exit;
   4648     }
   4649     buffers_base = (GLuint *)
   4650         _env->GetIntArrayElements(buffers_ref, (jboolean *)0);
   4651     buffers = buffers_base + offset;
   4652 
   4653     glDeleteBuffers(
   4654         (GLsizei)n,
   4655         (GLuint *)buffers
   4656     );
   4657 
   4658 exit:
   4659     if (buffers_base) {
   4660         _env->ReleaseIntArrayElements(buffers_ref, (jint*)buffers_base,
   4661             JNI_ABORT);
   4662     }
   4663     if (_exception) {
   4664         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4665     }
   4666 }
   4667 
   4668 /* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */
   4669 static void
   4670 android_glDeleteBuffers__ILjava_nio_IntBuffer_2
   4671   (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) {
   4672     jint _exception = 0;
   4673     const char * _exceptionType = NULL;
   4674     const char * _exceptionMessage = NULL;
   4675     jintArray _array = (jintArray) 0;
   4676     jint _bufferOffset = (jint) 0;
   4677     jint _remaining;
   4678     GLuint *buffers = (GLuint *) 0;
   4679 
   4680     if (!buffers_buf) {
   4681         _exception = 1;
   4682         _exceptionType = "java/lang/IllegalArgumentException";
   4683         _exceptionMessage = "buffers == null";
   4684         goto exit;
   4685     }
   4686     buffers = (GLuint *)getPointer(_env, buffers_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   4687     if (_remaining < n) {
   4688         _exception = 1;
   4689         _exceptionType = "java/lang/IllegalArgumentException";
   4690         _exceptionMessage = "remaining() < n < needed";
   4691         goto exit;
   4692     }
   4693     if (buffers == NULL) {
   4694         char * _buffersBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   4695         buffers = (GLuint *) (_buffersBase + _bufferOffset);
   4696     }
   4697     glDeleteBuffers(
   4698         (GLsizei)n,
   4699         (GLuint *)buffers
   4700     );
   4701 
   4702 exit:
   4703     if (_array) {
   4704         _env->ReleaseIntArrayElements(_array, (jint*)buffers, JNI_ABORT);
   4705     }
   4706     if (_exception) {
   4707         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4708     }
   4709 }
   4710 
   4711 /* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, GLint offset ) */
   4712 static void
   4713 android_glDrawElements__IIII
   4714   (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint offset) {
   4715     jint _exception = 0;
   4716     const char * _exceptionType = NULL;
   4717     const char * _exceptionMessage = NULL;
   4718     glDrawElements(
   4719         (GLenum)mode,
   4720         (GLsizei)count,
   4721         (GLenum)type,
   4722         reinterpret_cast<GLvoid *>(offset)
   4723     );
   4724     if (_exception) {
   4725         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4726     }
   4727 }
   4728 
   4729 /* void glGenBuffers ( GLsizei n, GLuint *buffers ) */
   4730 static void
   4731 android_glGenBuffers__I_3II
   4732   (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) {
   4733     jint _exception = 0;
   4734     const char * _exceptionType = NULL;
   4735     const char * _exceptionMessage = NULL;
   4736     GLuint *buffers_base = (GLuint *) 0;
   4737     jint _remaining;
   4738     GLuint *buffers = (GLuint *) 0;
   4739 
   4740     if (!buffers_ref) {
   4741         _exception = 1;
   4742         _exceptionType = "java/lang/IllegalArgumentException";
   4743         _exceptionMessage = "buffers == null";
   4744         goto exit;
   4745     }
   4746     if (offset < 0) {
   4747         _exception = 1;
   4748         _exceptionType = "java/lang/IllegalArgumentException";
   4749         _exceptionMessage = "offset < 0";
   4750         goto exit;
   4751     }
   4752     _remaining = _env->GetArrayLength(buffers_ref) - offset;
   4753     if (_remaining < n) {
   4754         _exception = 1;
   4755         _exceptionType = "java/lang/IllegalArgumentException";
   4756         _exceptionMessage = "length - offset < n < needed";
   4757         goto exit;
   4758     }
   4759     buffers_base = (GLuint *)
   4760         _env->GetIntArrayElements(buffers_ref, (jboolean *)0);
   4761     buffers = buffers_base + offset;
   4762 
   4763     glGenBuffers(
   4764         (GLsizei)n,
   4765         (GLuint *)buffers
   4766     );
   4767 
   4768 exit:
   4769     if (buffers_base) {
   4770         _env->ReleaseIntArrayElements(buffers_ref, (jint*)buffers_base,
   4771             _exception ? JNI_ABORT: 0);
   4772     }
   4773     if (_exception) {
   4774         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4775     }
   4776 }
   4777 
   4778 /* void glGenBuffers ( GLsizei n, GLuint *buffers ) */
   4779 static void
   4780 android_glGenBuffers__ILjava_nio_IntBuffer_2
   4781   (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) {
   4782     jint _exception = 0;
   4783     const char * _exceptionType = NULL;
   4784     const char * _exceptionMessage = NULL;
   4785     jintArray _array = (jintArray) 0;
   4786     jint _bufferOffset = (jint) 0;
   4787     jint _remaining;
   4788     GLuint *buffers = (GLuint *) 0;
   4789 
   4790     if (!buffers_buf) {
   4791         _exception = 1;
   4792         _exceptionType = "java/lang/IllegalArgumentException";
   4793         _exceptionMessage = "buffers == null";
   4794         goto exit;
   4795     }
   4796     buffers = (GLuint *)getPointer(_env, buffers_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   4797     if (_remaining < n) {
   4798         _exception = 1;
   4799         _exceptionType = "java/lang/IllegalArgumentException";
   4800         _exceptionMessage = "remaining() < n < needed";
   4801         goto exit;
   4802     }
   4803     if (buffers == NULL) {
   4804         char * _buffersBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   4805         buffers = (GLuint *) (_buffersBase + _bufferOffset);
   4806     }
   4807     glGenBuffers(
   4808         (GLsizei)n,
   4809         (GLuint *)buffers
   4810     );
   4811 
   4812 exit:
   4813     if (_array) {
   4814         _env->ReleaseIntArrayElements(_array, (jint*)buffers, _exception ? JNI_ABORT : 0);
   4815     }
   4816     if (_exception) {
   4817         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4818     }
   4819 }
   4820 
   4821 /* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
   4822 static void
   4823 android_glGetBooleanv__I_3ZI
   4824   (JNIEnv *_env, jobject _this, jint pname, jbooleanArray params_ref, jint offset) {
   4825     jint _exception = 0;
   4826     const char * _exceptionType = NULL;
   4827     const char * _exceptionMessage = NULL;
   4828     GLboolean *params_base = (GLboolean *) 0;
   4829     jint _remaining;
   4830     GLboolean *params = (GLboolean *) 0;
   4831 
   4832     if (!params_ref) {
   4833         _exception = 1;
   4834         _exceptionType = "java/lang/IllegalArgumentException";
   4835         _exceptionMessage = "params == null";
   4836         goto exit;
   4837     }
   4838     if (offset < 0) {
   4839         _exception = 1;
   4840         _exceptionType = "java/lang/IllegalArgumentException";
   4841         _exceptionMessage = "offset < 0";
   4842         goto exit;
   4843     }
   4844     _remaining = _env->GetArrayLength(params_ref) - offset;
   4845     params_base = (GLboolean *)
   4846         _env->GetBooleanArrayElements(params_ref, (jboolean *)0);
   4847     params = params_base + offset;
   4848 
   4849     glGetBooleanv(
   4850         (GLenum)pname,
   4851         (GLboolean *)params
   4852     );
   4853 
   4854 exit:
   4855     if (params_base) {
   4856         _env->ReleaseBooleanArrayElements(params_ref, (jboolean*)params_base,
   4857             _exception ? JNI_ABORT: 0);
   4858     }
   4859     if (_exception) {
   4860         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4861     }
   4862 }
   4863 
   4864 /* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
   4865 static void
   4866 android_glGetBooleanv__ILjava_nio_IntBuffer_2
   4867   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
   4868     jint _exception = 0;
   4869     const char * _exceptionType = NULL;
   4870     const char * _exceptionMessage = NULL;
   4871     jintArray _array = (jintArray) 0;
   4872     jint _bufferOffset = (jint) 0;
   4873     jint _remaining;
   4874     GLboolean *params = (GLboolean *) 0;
   4875 
   4876     if (!params_buf) {
   4877         _exception = 1;
   4878         _exceptionType = "java/lang/IllegalArgumentException";
   4879         _exceptionMessage = "params == null";
   4880         goto exit;
   4881     }
   4882     params = (GLboolean *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   4883     if (params == NULL) {
   4884         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   4885         params = (GLboolean *) (_paramsBase + _bufferOffset);
   4886     }
   4887     glGetBooleanv(
   4888         (GLenum)pname,
   4889         (GLboolean *)params
   4890     );
   4891 
   4892 exit:
   4893     if (_array) {
   4894         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   4895     }
   4896     if (_exception) {
   4897         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4898     }
   4899 }
   4900 
   4901 /* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
   4902 static void
   4903 android_glGetBufferParameteriv__II_3II
   4904   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
   4905     jniThrowException(_env, "java/lang/UnsupportedOperationException",
   4906         "glGetBufferParameteriv");
   4907 }
   4908 
   4909 /* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
   4910 static void
   4911 android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2
   4912   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
   4913     jniThrowException(_env, "java/lang/UnsupportedOperationException",
   4914         "glGetBufferParameteriv");
   4915 }
   4916 
   4917 /* void glGetClipPlanef ( GLenum pname, GLfloat *eqn ) */
   4918 static void
   4919 android_glGetClipPlanef__I_3FI
   4920   (JNIEnv *_env, jobject _this, jint pname, jfloatArray eqn_ref, jint offset) {
   4921     jint _exception = 0;
   4922     const char * _exceptionType = NULL;
   4923     const char * _exceptionMessage = NULL;
   4924     GLfloat *eqn_base = (GLfloat *) 0;
   4925     jint _remaining;
   4926     GLfloat *eqn = (GLfloat *) 0;
   4927 
   4928     if (!eqn_ref) {
   4929         _exception = 1;
   4930         _exceptionType = "java/lang/IllegalArgumentException";
   4931         _exceptionMessage = "eqn == null";
   4932         goto exit;
   4933     }
   4934     if (offset < 0) {
   4935         _exception = 1;
   4936         _exceptionType = "java/lang/IllegalArgumentException";
   4937         _exceptionMessage = "offset < 0";
   4938         goto exit;
   4939     }
   4940     _remaining = _env->GetArrayLength(eqn_ref) - offset;
   4941     eqn_base = (GLfloat *)
   4942         _env->GetFloatArrayElements(eqn_ref, (jboolean *)0);
   4943     eqn = eqn_base + offset;
   4944 
   4945     glGetClipPlanef(
   4946         (GLenum)pname,
   4947         (GLfloat *)eqn
   4948     );
   4949 
   4950 exit:
   4951     if (eqn_base) {
   4952         _env->ReleaseFloatArrayElements(eqn_ref, (jfloat*)eqn_base,
   4953             _exception ? JNI_ABORT: 0);
   4954     }
   4955     if (_exception) {
   4956         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4957     }
   4958 }
   4959 
   4960 /* void glGetClipPlanef ( GLenum pname, GLfloat *eqn ) */
   4961 static void
   4962 android_glGetClipPlanef__ILjava_nio_FloatBuffer_2
   4963   (JNIEnv *_env, jobject _this, jint pname, jobject eqn_buf) {
   4964     jint _exception = 0;
   4965     const char * _exceptionType = NULL;
   4966     const char * _exceptionMessage = NULL;
   4967     jfloatArray _array = (jfloatArray) 0;
   4968     jint _bufferOffset = (jint) 0;
   4969     jint _remaining;
   4970     GLfloat *eqn = (GLfloat *) 0;
   4971 
   4972     if (!eqn_buf) {
   4973         _exception = 1;
   4974         _exceptionType = "java/lang/IllegalArgumentException";
   4975         _exceptionMessage = "eqn == null";
   4976         goto exit;
   4977     }
   4978     eqn = (GLfloat *)getPointer(_env, eqn_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   4979     if (eqn == NULL) {
   4980         char * _eqnBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   4981         eqn = (GLfloat *) (_eqnBase + _bufferOffset);
   4982     }
   4983     glGetClipPlanef(
   4984         (GLenum)pname,
   4985         (GLfloat *)eqn
   4986     );
   4987 
   4988 exit:
   4989     if (_array) {
   4990         _env->ReleaseFloatArrayElements(_array, (jfloat*)eqn, _exception ? JNI_ABORT : 0);
   4991     }
   4992     if (_exception) {
   4993         jniThrowException(_env, _exceptionType, _exceptionMessage);
   4994     }
   4995 }
   4996 
   4997 /* void glGetClipPlanex ( GLenum pname, GLfixed *eqn ) */
   4998 static void
   4999 android_glGetClipPlanex__I_3II
   5000   (JNIEnv *_env, jobject _this, jint pname, jintArray eqn_ref, jint offset) {
   5001     jint _exception = 0;
   5002     const char * _exceptionType = NULL;
   5003     const char * _exceptionMessage = NULL;
   5004     GLfixed *eqn_base = (GLfixed *) 0;
   5005     jint _remaining;
   5006     GLfixed *eqn = (GLfixed *) 0;
   5007 
   5008     if (!eqn_ref) {
   5009         _exception = 1;
   5010         _exceptionType = "java/lang/IllegalArgumentException";
   5011         _exceptionMessage = "eqn == null";
   5012         goto exit;
   5013     }
   5014     if (offset < 0) {
   5015         _exception = 1;
   5016         _exceptionType = "java/lang/IllegalArgumentException";
   5017         _exceptionMessage = "offset < 0";
   5018         goto exit;
   5019     }
   5020     _remaining = _env->GetArrayLength(eqn_ref) - offset;
   5021     eqn_base = (GLfixed *)
   5022         _env->GetIntArrayElements(eqn_ref, (jboolean *)0);
   5023     eqn = eqn_base + offset;
   5024 
   5025     glGetClipPlanex(
   5026         (GLenum)pname,
   5027         (GLfixed *)eqn
   5028     );
   5029 
   5030 exit:
   5031     if (eqn_base) {
   5032         _env->ReleaseIntArrayElements(eqn_ref, (jint*)eqn_base,
   5033             _exception ? JNI_ABORT: 0);
   5034     }
   5035     if (_exception) {
   5036         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5037     }
   5038 }
   5039 
   5040 /* void glGetClipPlanex ( GLenum pname, GLfixed *eqn ) */
   5041 static void
   5042 android_glGetClipPlanex__ILjava_nio_IntBuffer_2
   5043   (JNIEnv *_env, jobject _this, jint pname, jobject eqn_buf) {
   5044     jint _exception = 0;
   5045     const char * _exceptionType = NULL;
   5046     const char * _exceptionMessage = NULL;
   5047     jintArray _array = (jintArray) 0;
   5048     jint _bufferOffset = (jint) 0;
   5049     jint _remaining;
   5050     GLfixed *eqn = (GLfixed *) 0;
   5051 
   5052     if (!eqn_buf) {
   5053         _exception = 1;
   5054         _exceptionType = "java/lang/IllegalArgumentException";
   5055         _exceptionMessage = "eqn == null";
   5056         goto exit;
   5057     }
   5058     eqn = (GLfixed *)getPointer(_env, eqn_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   5059     if (eqn == NULL) {
   5060         char * _eqnBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   5061         eqn = (GLfixed *) (_eqnBase + _bufferOffset);
   5062     }
   5063     glGetClipPlanex(
   5064         (GLenum)pname,
   5065         (GLfixed *)eqn
   5066     );
   5067 
   5068 exit:
   5069     if (_array) {
   5070         _env->ReleaseIntArrayElements(_array, (jint*)eqn, _exception ? JNI_ABORT : 0);
   5071     }
   5072     if (_exception) {
   5073         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5074     }
   5075 }
   5076 
   5077 /* void glGetFixedv ( GLenum pname, GLfixed *params ) */
   5078 static void
   5079 android_glGetFixedv__I_3II
   5080   (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
   5081     jint _exception = 0;
   5082     const char * _exceptionType = NULL;
   5083     const char * _exceptionMessage = NULL;
   5084     GLfixed *params_base = (GLfixed *) 0;
   5085     jint _remaining;
   5086     GLfixed *params = (GLfixed *) 0;
   5087 
   5088     if (!params_ref) {
   5089         _exception = 1;
   5090         _exceptionType = "java/lang/IllegalArgumentException";
   5091         _exceptionMessage = "params == null";
   5092         goto exit;
   5093     }
   5094     if (offset < 0) {
   5095         _exception = 1;
   5096         _exceptionType = "java/lang/IllegalArgumentException";
   5097         _exceptionMessage = "offset < 0";
   5098         goto exit;
   5099     }
   5100     _remaining = _env->GetArrayLength(params_ref) - offset;
   5101     params_base = (GLfixed *)
   5102         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   5103     params = params_base + offset;
   5104 
   5105     glGetFixedv(
   5106         (GLenum)pname,
   5107         (GLfixed *)params
   5108     );
   5109 
   5110 exit:
   5111     if (params_base) {
   5112         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   5113             _exception ? JNI_ABORT: 0);
   5114     }
   5115     if (_exception) {
   5116         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5117     }
   5118 }
   5119 
   5120 /* void glGetFixedv ( GLenum pname, GLfixed *params ) */
   5121 static void
   5122 android_glGetFixedv__ILjava_nio_IntBuffer_2
   5123   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
   5124     jint _exception = 0;
   5125     const char * _exceptionType = NULL;
   5126     const char * _exceptionMessage = NULL;
   5127     jintArray _array = (jintArray) 0;
   5128     jint _bufferOffset = (jint) 0;
   5129     jint _remaining;
   5130     GLfixed *params = (GLfixed *) 0;
   5131 
   5132     if (!params_buf) {
   5133         _exception = 1;
   5134         _exceptionType = "java/lang/IllegalArgumentException";
   5135         _exceptionMessage = "params == null";
   5136         goto exit;
   5137     }
   5138     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   5139     if (params == NULL) {
   5140         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   5141         params = (GLfixed *) (_paramsBase + _bufferOffset);
   5142     }
   5143     glGetFixedv(
   5144         (GLenum)pname,
   5145         (GLfixed *)params
   5146     );
   5147 
   5148 exit:
   5149     if (_array) {
   5150         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   5151     }
   5152     if (_exception) {
   5153         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5154     }
   5155 }
   5156 
   5157 /* void glGetFloatv ( GLenum pname, GLfloat *params ) */
   5158 static void
   5159 android_glGetFloatv__I_3FI
   5160   (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
   5161     jint _exception = 0;
   5162     const char * _exceptionType = NULL;
   5163     const char * _exceptionMessage = NULL;
   5164     GLfloat *params_base = (GLfloat *) 0;
   5165     jint _remaining;
   5166     GLfloat *params = (GLfloat *) 0;
   5167 
   5168     if (!params_ref) {
   5169         _exception = 1;
   5170         _exceptionType = "java/lang/IllegalArgumentException";
   5171         _exceptionMessage = "params == null";
   5172         goto exit;
   5173     }
   5174     if (offset < 0) {
   5175         _exception = 1;
   5176         _exceptionType = "java/lang/IllegalArgumentException";
   5177         _exceptionMessage = "offset < 0";
   5178         goto exit;
   5179     }
   5180     _remaining = _env->GetArrayLength(params_ref) - offset;
   5181     params_base = (GLfloat *)
   5182         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
   5183     params = params_base + offset;
   5184 
   5185     glGetFloatv(
   5186         (GLenum)pname,
   5187         (GLfloat *)params
   5188     );
   5189 
   5190 exit:
   5191     if (params_base) {
   5192         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
   5193             _exception ? JNI_ABORT: 0);
   5194     }
   5195     if (_exception) {
   5196         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5197     }
   5198 }
   5199 
   5200 /* void glGetFloatv ( GLenum pname, GLfloat *params ) */
   5201 static void
   5202 android_glGetFloatv__ILjava_nio_FloatBuffer_2
   5203   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
   5204     jint _exception = 0;
   5205     const char * _exceptionType = NULL;
   5206     const char * _exceptionMessage = NULL;
   5207     jfloatArray _array = (jfloatArray) 0;
   5208     jint _bufferOffset = (jint) 0;
   5209     jint _remaining;
   5210     GLfloat *params = (GLfloat *) 0;
   5211 
   5212     if (!params_buf) {
   5213         _exception = 1;
   5214         _exceptionType = "java/lang/IllegalArgumentException";
   5215         _exceptionMessage = "params == null";
   5216         goto exit;
   5217     }
   5218     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   5219     if (params == NULL) {
   5220         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   5221         params = (GLfloat *) (_paramsBase + _bufferOffset);
   5222     }
   5223     glGetFloatv(
   5224         (GLenum)pname,
   5225         (GLfloat *)params
   5226     );
   5227 
   5228 exit:
   5229     if (_array) {
   5230         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, _exception ? JNI_ABORT : 0);
   5231     }
   5232     if (_exception) {
   5233         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5234     }
   5235 }
   5236 
   5237 /* void glGetLightfv ( GLenum light, GLenum pname, GLfloat *params ) */
   5238 static void
   5239 android_glGetLightfv__II_3FI
   5240   (JNIEnv *_env, jobject _this, jint light, jint pname, jfloatArray params_ref, jint offset) {
   5241     jint _exception = 0;
   5242     const char * _exceptionType = NULL;
   5243     const char * _exceptionMessage = NULL;
   5244     GLfloat *params_base = (GLfloat *) 0;
   5245     jint _remaining;
   5246     GLfloat *params = (GLfloat *) 0;
   5247 
   5248     if (!params_ref) {
   5249         _exception = 1;
   5250         _exceptionType = "java/lang/IllegalArgumentException";
   5251         _exceptionMessage = "params == null";
   5252         goto exit;
   5253     }
   5254     if (offset < 0) {
   5255         _exception = 1;
   5256         _exceptionType = "java/lang/IllegalArgumentException";
   5257         _exceptionMessage = "offset < 0";
   5258         goto exit;
   5259     }
   5260     _remaining = _env->GetArrayLength(params_ref) - offset;
   5261     int _needed;
   5262     switch (pname) {
   5263 #if defined(GL_SPOT_EXPONENT)
   5264         case GL_SPOT_EXPONENT:
   5265 #endif // defined(GL_SPOT_EXPONENT)
   5266 #if defined(GL_SPOT_CUTOFF)
   5267         case GL_SPOT_CUTOFF:
   5268 #endif // defined(GL_SPOT_CUTOFF)
   5269 #if defined(GL_CONSTANT_ATTENUATION)
   5270         case GL_CONSTANT_ATTENUATION:
   5271 #endif // defined(GL_CONSTANT_ATTENUATION)
   5272 #if defined(GL_LINEAR_ATTENUATION)
   5273         case GL_LINEAR_ATTENUATION:
   5274 #endif // defined(GL_LINEAR_ATTENUATION)
   5275 #if defined(GL_QUADRATIC_ATTENUATION)
   5276         case GL_QUADRATIC_ATTENUATION:
   5277 #endif // defined(GL_QUADRATIC_ATTENUATION)
   5278             _needed = 1;
   5279             break;
   5280 #if defined(GL_SPOT_DIRECTION)
   5281         case GL_SPOT_DIRECTION:
   5282 #endif // defined(GL_SPOT_DIRECTION)
   5283             _needed = 3;
   5284             break;
   5285 #if defined(GL_AMBIENT)
   5286         case GL_AMBIENT:
   5287 #endif // defined(GL_AMBIENT)
   5288 #if defined(GL_DIFFUSE)
   5289         case GL_DIFFUSE:
   5290 #endif // defined(GL_DIFFUSE)
   5291 #if defined(GL_SPECULAR)
   5292         case GL_SPECULAR:
   5293 #endif // defined(GL_SPECULAR)
   5294 #if defined(GL_EMISSION)
   5295         case GL_EMISSION:
   5296 #endif // defined(GL_EMISSION)
   5297             _needed = 4;
   5298             break;
   5299         default:
   5300             _needed = 1;
   5301             break;
   5302     }
   5303     if (_remaining < _needed) {
   5304         _exception = 1;
   5305         _exceptionType = "java/lang/IllegalArgumentException";
   5306         _exceptionMessage = "length - offset < needed";
   5307         goto exit;
   5308     }
   5309     params_base = (GLfloat *)
   5310         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
   5311     params = params_base + offset;
   5312 
   5313     glGetLightfv(
   5314         (GLenum)light,
   5315         (GLenum)pname,
   5316         (GLfloat *)params
   5317     );
   5318 
   5319 exit:
   5320     if (params_base) {
   5321         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
   5322             _exception ? JNI_ABORT: 0);
   5323     }
   5324     if (_exception) {
   5325         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5326     }
   5327 }
   5328 
   5329 /* void glGetLightfv ( GLenum light, GLenum pname, GLfloat *params ) */
   5330 static void
   5331 android_glGetLightfv__IILjava_nio_FloatBuffer_2
   5332   (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
   5333     jint _exception = 0;
   5334     const char * _exceptionType = NULL;
   5335     const char * _exceptionMessage = NULL;
   5336     jfloatArray _array = (jfloatArray) 0;
   5337     jint _bufferOffset = (jint) 0;
   5338     jint _remaining;
   5339     GLfloat *params = (GLfloat *) 0;
   5340 
   5341     if (!params_buf) {
   5342         _exception = 1;
   5343         _exceptionType = "java/lang/IllegalArgumentException";
   5344         _exceptionMessage = "params == null";
   5345         goto exit;
   5346     }
   5347     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   5348     int _needed;
   5349     switch (pname) {
   5350 #if defined(GL_SPOT_EXPONENT)
   5351         case GL_SPOT_EXPONENT:
   5352 #endif // defined(GL_SPOT_EXPONENT)
   5353 #if defined(GL_SPOT_CUTOFF)
   5354         case GL_SPOT_CUTOFF:
   5355 #endif // defined(GL_SPOT_CUTOFF)
   5356 #if defined(GL_CONSTANT_ATTENUATION)
   5357         case GL_CONSTANT_ATTENUATION:
   5358 #endif // defined(GL_CONSTANT_ATTENUATION)
   5359 #if defined(GL_LINEAR_ATTENUATION)
   5360         case GL_LINEAR_ATTENUATION:
   5361 #endif // defined(GL_LINEAR_ATTENUATION)
   5362 #if defined(GL_QUADRATIC_ATTENUATION)
   5363         case GL_QUADRATIC_ATTENUATION:
   5364 #endif // defined(GL_QUADRATIC_ATTENUATION)
   5365             _needed = 1;
   5366             break;
   5367 #if defined(GL_SPOT_DIRECTION)
   5368         case GL_SPOT_DIRECTION:
   5369 #endif // defined(GL_SPOT_DIRECTION)
   5370             _needed = 3;
   5371             break;
   5372 #if defined(GL_AMBIENT)
   5373         case GL_AMBIENT:
   5374 #endif // defined(GL_AMBIENT)
   5375 #if defined(GL_DIFFUSE)
   5376         case GL_DIFFUSE:
   5377 #endif // defined(GL_DIFFUSE)
   5378 #if defined(GL_SPECULAR)
   5379         case GL_SPECULAR:
   5380 #endif // defined(GL_SPECULAR)
   5381 #if defined(GL_EMISSION)
   5382         case GL_EMISSION:
   5383 #endif // defined(GL_EMISSION)
   5384             _needed = 4;
   5385             break;
   5386         default:
   5387             _needed = 1;
   5388             break;
   5389     }
   5390     if (_remaining < _needed) {
   5391         _exception = 1;
   5392         _exceptionType = "java/lang/IllegalArgumentException";
   5393         _exceptionMessage = "remaining() < needed";
   5394         goto exit;
   5395     }
   5396     if (params == NULL) {
   5397         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   5398         params = (GLfloat *) (_paramsBase + _bufferOffset);
   5399     }
   5400     glGetLightfv(
   5401         (GLenum)light,
   5402         (GLenum)pname,
   5403         (GLfloat *)params
   5404     );
   5405 
   5406 exit:
   5407     if (_array) {
   5408         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, _exception ? JNI_ABORT : 0);
   5409     }
   5410     if (_exception) {
   5411         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5412     }
   5413 }
   5414 
   5415 /* void glGetLightxv ( GLenum light, GLenum pname, GLfixed *params ) */
   5416 static void
   5417 android_glGetLightxv__II_3II
   5418   (JNIEnv *_env, jobject _this, jint light, jint pname, jintArray params_ref, jint offset) {
   5419     jint _exception = 0;
   5420     const char * _exceptionType = NULL;
   5421     const char * _exceptionMessage = NULL;
   5422     GLfixed *params_base = (GLfixed *) 0;
   5423     jint _remaining;
   5424     GLfixed *params = (GLfixed *) 0;
   5425 
   5426     if (!params_ref) {
   5427         _exception = 1;
   5428         _exceptionType = "java/lang/IllegalArgumentException";
   5429         _exceptionMessage = "params == null";
   5430         goto exit;
   5431     }
   5432     if (offset < 0) {
   5433         _exception = 1;
   5434         _exceptionType = "java/lang/IllegalArgumentException";
   5435         _exceptionMessage = "offset < 0";
   5436         goto exit;
   5437     }
   5438     _remaining = _env->GetArrayLength(params_ref) - offset;
   5439     int _needed;
   5440     switch (pname) {
   5441 #if defined(GL_SPOT_EXPONENT)
   5442         case GL_SPOT_EXPONENT:
   5443 #endif // defined(GL_SPOT_EXPONENT)
   5444 #if defined(GL_SPOT_CUTOFF)
   5445         case GL_SPOT_CUTOFF:
   5446 #endif // defined(GL_SPOT_CUTOFF)
   5447 #if defined(GL_CONSTANT_ATTENUATION)
   5448         case GL_CONSTANT_ATTENUATION:
   5449 #endif // defined(GL_CONSTANT_ATTENUATION)
   5450 #if defined(GL_LINEAR_ATTENUATION)
   5451         case GL_LINEAR_ATTENUATION:
   5452 #endif // defined(GL_LINEAR_ATTENUATION)
   5453 #if defined(GL_QUADRATIC_ATTENUATION)
   5454         case GL_QUADRATIC_ATTENUATION:
   5455 #endif // defined(GL_QUADRATIC_ATTENUATION)
   5456             _needed = 1;
   5457             break;
   5458 #if defined(GL_SPOT_DIRECTION)
   5459         case GL_SPOT_DIRECTION:
   5460 #endif // defined(GL_SPOT_DIRECTION)
   5461             _needed = 3;
   5462             break;
   5463 #if defined(GL_AMBIENT)
   5464         case GL_AMBIENT:
   5465 #endif // defined(GL_AMBIENT)
   5466 #if defined(GL_DIFFUSE)
   5467         case GL_DIFFUSE:
   5468 #endif // defined(GL_DIFFUSE)
   5469 #if defined(GL_SPECULAR)
   5470         case GL_SPECULAR:
   5471 #endif // defined(GL_SPECULAR)
   5472 #if defined(GL_EMISSION)
   5473         case GL_EMISSION:
   5474 #endif // defined(GL_EMISSION)
   5475             _needed = 4;
   5476             break;
   5477         default:
   5478             _needed = 1;
   5479             break;
   5480     }
   5481     if (_remaining < _needed) {
   5482         _exception = 1;
   5483         _exceptionType = "java/lang/IllegalArgumentException";
   5484         _exceptionMessage = "length - offset < needed";
   5485         goto exit;
   5486     }
   5487     params_base = (GLfixed *)
   5488         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   5489     params = params_base + offset;
   5490 
   5491     glGetLightxv(
   5492         (GLenum)light,
   5493         (GLenum)pname,
   5494         (GLfixed *)params
   5495     );
   5496 
   5497 exit:
   5498     if (params_base) {
   5499         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   5500             _exception ? JNI_ABORT: 0);
   5501     }
   5502     if (_exception) {
   5503         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5504     }
   5505 }
   5506 
   5507 /* void glGetLightxv ( GLenum light, GLenum pname, GLfixed *params ) */
   5508 static void
   5509 android_glGetLightxv__IILjava_nio_IntBuffer_2
   5510   (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
   5511     jint _exception = 0;
   5512     const char * _exceptionType = NULL;
   5513     const char * _exceptionMessage = NULL;
   5514     jintArray _array = (jintArray) 0;
   5515     jint _bufferOffset = (jint) 0;
   5516     jint _remaining;
   5517     GLfixed *params = (GLfixed *) 0;
   5518 
   5519     if (!params_buf) {
   5520         _exception = 1;
   5521         _exceptionType = "java/lang/IllegalArgumentException";
   5522         _exceptionMessage = "params == null";
   5523         goto exit;
   5524     }
   5525     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   5526     int _needed;
   5527     switch (pname) {
   5528 #if defined(GL_SPOT_EXPONENT)
   5529         case GL_SPOT_EXPONENT:
   5530 #endif // defined(GL_SPOT_EXPONENT)
   5531 #if defined(GL_SPOT_CUTOFF)
   5532         case GL_SPOT_CUTOFF:
   5533 #endif // defined(GL_SPOT_CUTOFF)
   5534 #if defined(GL_CONSTANT_ATTENUATION)
   5535         case GL_CONSTANT_ATTENUATION:
   5536 #endif // defined(GL_CONSTANT_ATTENUATION)
   5537 #if defined(GL_LINEAR_ATTENUATION)
   5538         case GL_LINEAR_ATTENUATION:
   5539 #endif // defined(GL_LINEAR_ATTENUATION)
   5540 #if defined(GL_QUADRATIC_ATTENUATION)
   5541         case GL_QUADRATIC_ATTENUATION:
   5542 #endif // defined(GL_QUADRATIC_ATTENUATION)
   5543             _needed = 1;
   5544             break;
   5545 #if defined(GL_SPOT_DIRECTION)
   5546         case GL_SPOT_DIRECTION:
   5547 #endif // defined(GL_SPOT_DIRECTION)
   5548             _needed = 3;
   5549             break;
   5550 #if defined(GL_AMBIENT)
   5551         case GL_AMBIENT:
   5552 #endif // defined(GL_AMBIENT)
   5553 #if defined(GL_DIFFUSE)
   5554         case GL_DIFFUSE:
   5555 #endif // defined(GL_DIFFUSE)
   5556 #if defined(GL_SPECULAR)
   5557         case GL_SPECULAR:
   5558 #endif // defined(GL_SPECULAR)
   5559 #if defined(GL_EMISSION)
   5560         case GL_EMISSION:
   5561 #endif // defined(GL_EMISSION)
   5562             _needed = 4;
   5563             break;
   5564         default:
   5565             _needed = 1;
   5566             break;
   5567     }
   5568     if (_remaining < _needed) {
   5569         _exception = 1;
   5570         _exceptionType = "java/lang/IllegalArgumentException";
   5571         _exceptionMessage = "remaining() < needed";
   5572         goto exit;
   5573     }
   5574     if (params == NULL) {
   5575         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   5576         params = (GLfixed *) (_paramsBase + _bufferOffset);
   5577     }
   5578     glGetLightxv(
   5579         (GLenum)light,
   5580         (GLenum)pname,
   5581         (GLfixed *)params
   5582     );
   5583 
   5584 exit:
   5585     if (_array) {
   5586         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   5587     }
   5588     if (_exception) {
   5589         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5590     }
   5591 }
   5592 
   5593 /* void glGetMaterialfv ( GLenum face, GLenum pname, GLfloat *params ) */
   5594 static void
   5595 android_glGetMaterialfv__II_3FI
   5596   (JNIEnv *_env, jobject _this, jint face, jint pname, jfloatArray params_ref, jint offset) {
   5597     jint _exception = 0;
   5598     const char * _exceptionType = NULL;
   5599     const char * _exceptionMessage = NULL;
   5600     GLfloat *params_base = (GLfloat *) 0;
   5601     jint _remaining;
   5602     GLfloat *params = (GLfloat *) 0;
   5603 
   5604     if (!params_ref) {
   5605         _exception = 1;
   5606         _exceptionType = "java/lang/IllegalArgumentException";
   5607         _exceptionMessage = "params == null";
   5608         goto exit;
   5609     }
   5610     if (offset < 0) {
   5611         _exception = 1;
   5612         _exceptionType = "java/lang/IllegalArgumentException";
   5613         _exceptionMessage = "offset < 0";
   5614         goto exit;
   5615     }
   5616     _remaining = _env->GetArrayLength(params_ref) - offset;
   5617     int _needed;
   5618     switch (pname) {
   5619 #if defined(GL_SHININESS)
   5620         case GL_SHININESS:
   5621 #endif // defined(GL_SHININESS)
   5622             _needed = 1;
   5623             break;
   5624 #if defined(GL_AMBIENT)
   5625         case GL_AMBIENT:
   5626 #endif // defined(GL_AMBIENT)
   5627 #if defined(GL_DIFFUSE)
   5628         case GL_DIFFUSE:
   5629 #endif // defined(GL_DIFFUSE)
   5630 #if defined(GL_SPECULAR)
   5631         case GL_SPECULAR:
   5632 #endif // defined(GL_SPECULAR)
   5633 #if defined(GL_EMISSION)
   5634         case GL_EMISSION:
   5635 #endif // defined(GL_EMISSION)
   5636 #if defined(GL_AMBIENT_AND_DIFFUSE)
   5637         case GL_AMBIENT_AND_DIFFUSE:
   5638 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
   5639             _needed = 4;
   5640             break;
   5641         default:
   5642             _needed = 1;
   5643             break;
   5644     }
   5645     if (_remaining < _needed) {
   5646         _exception = 1;
   5647         _exceptionType = "java/lang/IllegalArgumentException";
   5648         _exceptionMessage = "length - offset < needed";
   5649         goto exit;
   5650     }
   5651     params_base = (GLfloat *)
   5652         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
   5653     params = params_base + offset;
   5654 
   5655     glGetMaterialfv(
   5656         (GLenum)face,
   5657         (GLenum)pname,
   5658         (GLfloat *)params
   5659     );
   5660 
   5661 exit:
   5662     if (params_base) {
   5663         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
   5664             _exception ? JNI_ABORT: 0);
   5665     }
   5666     if (_exception) {
   5667         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5668     }
   5669 }
   5670 
   5671 /* void glGetMaterialfv ( GLenum face, GLenum pname, GLfloat *params ) */
   5672 static void
   5673 android_glGetMaterialfv__IILjava_nio_FloatBuffer_2
   5674   (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
   5675     jint _exception = 0;
   5676     const char * _exceptionType = NULL;
   5677     const char * _exceptionMessage = NULL;
   5678     jfloatArray _array = (jfloatArray) 0;
   5679     jint _bufferOffset = (jint) 0;
   5680     jint _remaining;
   5681     GLfloat *params = (GLfloat *) 0;
   5682 
   5683     if (!params_buf) {
   5684         _exception = 1;
   5685         _exceptionType = "java/lang/IllegalArgumentException";
   5686         _exceptionMessage = "params == null";
   5687         goto exit;
   5688     }
   5689     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   5690     int _needed;
   5691     switch (pname) {
   5692 #if defined(GL_SHININESS)
   5693         case GL_SHININESS:
   5694 #endif // defined(GL_SHININESS)
   5695             _needed = 1;
   5696             break;
   5697 #if defined(GL_AMBIENT)
   5698         case GL_AMBIENT:
   5699 #endif // defined(GL_AMBIENT)
   5700 #if defined(GL_DIFFUSE)
   5701         case GL_DIFFUSE:
   5702 #endif // defined(GL_DIFFUSE)
   5703 #if defined(GL_SPECULAR)
   5704         case GL_SPECULAR:
   5705 #endif // defined(GL_SPECULAR)
   5706 #if defined(GL_EMISSION)
   5707         case GL_EMISSION:
   5708 #endif // defined(GL_EMISSION)
   5709 #if defined(GL_AMBIENT_AND_DIFFUSE)
   5710         case GL_AMBIENT_AND_DIFFUSE:
   5711 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
   5712             _needed = 4;
   5713             break;
   5714         default:
   5715             _needed = 1;
   5716             break;
   5717     }
   5718     if (_remaining < _needed) {
   5719         _exception = 1;
   5720         _exceptionType = "java/lang/IllegalArgumentException";
   5721         _exceptionMessage = "remaining() < needed";
   5722         goto exit;
   5723     }
   5724     if (params == NULL) {
   5725         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   5726         params = (GLfloat *) (_paramsBase + _bufferOffset);
   5727     }
   5728     glGetMaterialfv(
   5729         (GLenum)face,
   5730         (GLenum)pname,
   5731         (GLfloat *)params
   5732     );
   5733 
   5734 exit:
   5735     if (_array) {
   5736         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, _exception ? JNI_ABORT : 0);
   5737     }
   5738     if (_exception) {
   5739         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5740     }
   5741 }
   5742 
   5743 /* void glGetMaterialxv ( GLenum face, GLenum pname, GLfixed *params ) */
   5744 static void
   5745 android_glGetMaterialxv__II_3II
   5746   (JNIEnv *_env, jobject _this, jint face, jint pname, jintArray params_ref, jint offset) {
   5747     jint _exception = 0;
   5748     const char * _exceptionType = NULL;
   5749     const char * _exceptionMessage = NULL;
   5750     GLfixed *params_base = (GLfixed *) 0;
   5751     jint _remaining;
   5752     GLfixed *params = (GLfixed *) 0;
   5753 
   5754     if (!params_ref) {
   5755         _exception = 1;
   5756         _exceptionType = "java/lang/IllegalArgumentException";
   5757         _exceptionMessage = "params == null";
   5758         goto exit;
   5759     }
   5760     if (offset < 0) {
   5761         _exception = 1;
   5762         _exceptionType = "java/lang/IllegalArgumentException";
   5763         _exceptionMessage = "offset < 0";
   5764         goto exit;
   5765     }
   5766     _remaining = _env->GetArrayLength(params_ref) - offset;
   5767     int _needed;
   5768     switch (pname) {
   5769 #if defined(GL_SHININESS)
   5770         case GL_SHININESS:
   5771 #endif // defined(GL_SHININESS)
   5772             _needed = 1;
   5773             break;
   5774 #if defined(GL_AMBIENT)
   5775         case GL_AMBIENT:
   5776 #endif // defined(GL_AMBIENT)
   5777 #if defined(GL_DIFFUSE)
   5778         case GL_DIFFUSE:
   5779 #endif // defined(GL_DIFFUSE)
   5780 #if defined(GL_SPECULAR)
   5781         case GL_SPECULAR:
   5782 #endif // defined(GL_SPECULAR)
   5783 #if defined(GL_EMISSION)
   5784         case GL_EMISSION:
   5785 #endif // defined(GL_EMISSION)
   5786 #if defined(GL_AMBIENT_AND_DIFFUSE)
   5787         case GL_AMBIENT_AND_DIFFUSE:
   5788 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
   5789             _needed = 4;
   5790             break;
   5791         default:
   5792             _needed = 1;
   5793             break;
   5794     }
   5795     if (_remaining < _needed) {
   5796         _exception = 1;
   5797         _exceptionType = "java/lang/IllegalArgumentException";
   5798         _exceptionMessage = "length - offset < needed";
   5799         goto exit;
   5800     }
   5801     params_base = (GLfixed *)
   5802         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   5803     params = params_base + offset;
   5804 
   5805     glGetMaterialxv(
   5806         (GLenum)face,
   5807         (GLenum)pname,
   5808         (GLfixed *)params
   5809     );
   5810 
   5811 exit:
   5812     if (params_base) {
   5813         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   5814             _exception ? JNI_ABORT: 0);
   5815     }
   5816     if (_exception) {
   5817         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5818     }
   5819 }
   5820 
   5821 /* void glGetMaterialxv ( GLenum face, GLenum pname, GLfixed *params ) */
   5822 static void
   5823 android_glGetMaterialxv__IILjava_nio_IntBuffer_2
   5824   (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
   5825     jint _exception = 0;
   5826     const char * _exceptionType = NULL;
   5827     const char * _exceptionMessage = NULL;
   5828     jintArray _array = (jintArray) 0;
   5829     jint _bufferOffset = (jint) 0;
   5830     jint _remaining;
   5831     GLfixed *params = (GLfixed *) 0;
   5832 
   5833     if (!params_buf) {
   5834         _exception = 1;
   5835         _exceptionType = "java/lang/IllegalArgumentException";
   5836         _exceptionMessage = "params == null";
   5837         goto exit;
   5838     }
   5839     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   5840     int _needed;
   5841     switch (pname) {
   5842 #if defined(GL_SHININESS)
   5843         case GL_SHININESS:
   5844 #endif // defined(GL_SHININESS)
   5845             _needed = 1;
   5846             break;
   5847 #if defined(GL_AMBIENT)
   5848         case GL_AMBIENT:
   5849 #endif // defined(GL_AMBIENT)
   5850 #if defined(GL_DIFFUSE)
   5851         case GL_DIFFUSE:
   5852 #endif // defined(GL_DIFFUSE)
   5853 #if defined(GL_SPECULAR)
   5854         case GL_SPECULAR:
   5855 #endif // defined(GL_SPECULAR)
   5856 #if defined(GL_EMISSION)
   5857         case GL_EMISSION:
   5858 #endif // defined(GL_EMISSION)
   5859 #if defined(GL_AMBIENT_AND_DIFFUSE)
   5860         case GL_AMBIENT_AND_DIFFUSE:
   5861 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
   5862             _needed = 4;
   5863             break;
   5864         default:
   5865             _needed = 1;
   5866             break;
   5867     }
   5868     if (_remaining < _needed) {
   5869         _exception = 1;
   5870         _exceptionType = "java/lang/IllegalArgumentException";
   5871         _exceptionMessage = "remaining() < needed";
   5872         goto exit;
   5873     }
   5874     if (params == NULL) {
   5875         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   5876         params = (GLfixed *) (_paramsBase + _bufferOffset);
   5877     }
   5878     glGetMaterialxv(
   5879         (GLenum)face,
   5880         (GLenum)pname,
   5881         (GLfixed *)params
   5882     );
   5883 
   5884 exit:
   5885     if (_array) {
   5886         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   5887     }
   5888     if (_exception) {
   5889         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5890     }
   5891 }
   5892 
   5893 /* void glGetTexEnviv ( GLenum env, GLenum pname, GLint *params ) */
   5894 static void
   5895 android_glGetTexEnviv__II_3II
   5896   (JNIEnv *_env, jobject _this, jint env, jint pname, jintArray params_ref, jint offset) {
   5897     jint _exception = 0;
   5898     const char * _exceptionType = NULL;
   5899     const char * _exceptionMessage = NULL;
   5900     GLint *params_base = (GLint *) 0;
   5901     jint _remaining;
   5902     GLint *params = (GLint *) 0;
   5903 
   5904     if (!params_ref) {
   5905         _exception = 1;
   5906         _exceptionType = "java/lang/IllegalArgumentException";
   5907         _exceptionMessage = "params == null";
   5908         goto exit;
   5909     }
   5910     if (offset < 0) {
   5911         _exception = 1;
   5912         _exceptionType = "java/lang/IllegalArgumentException";
   5913         _exceptionMessage = "offset < 0";
   5914         goto exit;
   5915     }
   5916     _remaining = _env->GetArrayLength(params_ref) - offset;
   5917     int _needed;
   5918     switch (pname) {
   5919 #if defined(GL_TEXTURE_ENV_MODE)
   5920         case GL_TEXTURE_ENV_MODE:
   5921 #endif // defined(GL_TEXTURE_ENV_MODE)
   5922 #if defined(GL_COMBINE_RGB)
   5923         case GL_COMBINE_RGB:
   5924 #endif // defined(GL_COMBINE_RGB)
   5925 #if defined(GL_COMBINE_ALPHA)
   5926         case GL_COMBINE_ALPHA:
   5927 #endif // defined(GL_COMBINE_ALPHA)
   5928             _needed = 1;
   5929             break;
   5930 #if defined(GL_TEXTURE_ENV_COLOR)
   5931         case GL_TEXTURE_ENV_COLOR:
   5932 #endif // defined(GL_TEXTURE_ENV_COLOR)
   5933             _needed = 4;
   5934             break;
   5935         default:
   5936             _needed = 1;
   5937             break;
   5938     }
   5939     if (_remaining < _needed) {
   5940         _exception = 1;
   5941         _exceptionType = "java/lang/IllegalArgumentException";
   5942         _exceptionMessage = "length - offset < needed";
   5943         goto exit;
   5944     }
   5945     params_base = (GLint *)
   5946         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   5947     params = params_base + offset;
   5948 
   5949     glGetTexEnviv(
   5950         (GLenum)env,
   5951         (GLenum)pname,
   5952         (GLint *)params
   5953     );
   5954 
   5955 exit:
   5956     if (params_base) {
   5957         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   5958             _exception ? JNI_ABORT: 0);
   5959     }
   5960     if (_exception) {
   5961         jniThrowException(_env, _exceptionType, _exceptionMessage);
   5962     }
   5963 }
   5964 
   5965 /* void glGetTexEnviv ( GLenum env, GLenum pname, GLint *params ) */
   5966 static void
   5967 android_glGetTexEnviv__IILjava_nio_IntBuffer_2
   5968   (JNIEnv *_env, jobject _this, jint env, jint pname, jobject params_buf) {
   5969     jint _exception = 0;
   5970     const char * _exceptionType = NULL;
   5971     const char * _exceptionMessage = NULL;
   5972     jintArray _array = (jintArray) 0;
   5973     jint _bufferOffset = (jint) 0;
   5974     jint _remaining;
   5975     GLint *params = (GLint *) 0;
   5976 
   5977     if (!params_buf) {
   5978         _exception = 1;
   5979         _exceptionType = "java/lang/IllegalArgumentException";
   5980         _exceptionMessage = "params == null";
   5981         goto exit;
   5982     }
   5983     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   5984     int _needed;
   5985     switch (pname) {
   5986 #if defined(GL_TEXTURE_ENV_MODE)
   5987         case GL_TEXTURE_ENV_MODE:
   5988 #endif // defined(GL_TEXTURE_ENV_MODE)
   5989 #if defined(GL_COMBINE_RGB)
   5990         case GL_COMBINE_RGB:
   5991 #endif // defined(GL_COMBINE_RGB)
   5992 #if defined(GL_COMBINE_ALPHA)
   5993         case GL_COMBINE_ALPHA:
   5994 #endif // defined(GL_COMBINE_ALPHA)
   5995             _needed = 1;
   5996             break;
   5997 #if defined(GL_TEXTURE_ENV_COLOR)
   5998         case GL_TEXTURE_ENV_COLOR:
   5999 #endif // defined(GL_TEXTURE_ENV_COLOR)
   6000             _needed = 4;
   6001             break;
   6002         default:
   6003             _needed = 1;
   6004             break;
   6005     }
   6006     if (_remaining < _needed) {
   6007         _exception = 1;
   6008         _exceptionType = "java/lang/IllegalArgumentException";
   6009         _exceptionMessage = "remaining() < needed";
   6010         goto exit;
   6011     }
   6012     if (params == NULL) {
   6013         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   6014         params = (GLint *) (_paramsBase + _bufferOffset);
   6015     }
   6016     glGetTexEnviv(
   6017         (GLenum)env,
   6018         (GLenum)pname,
   6019         (GLint *)params
   6020     );
   6021 
   6022 exit:
   6023     if (_array) {
   6024         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   6025     }
   6026     if (_exception) {
   6027         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6028     }
   6029 }
   6030 
   6031 /* void glGetTexEnvxv ( GLenum env, GLenum pname, GLfixed *params ) */
   6032 static void
   6033 android_glGetTexEnvxv__II_3II
   6034   (JNIEnv *_env, jobject _this, jint env, jint pname, jintArray params_ref, jint offset) {
   6035     jint _exception = 0;
   6036     const char * _exceptionType = NULL;
   6037     const char * _exceptionMessage = NULL;
   6038     GLfixed *params_base = (GLfixed *) 0;
   6039     jint _remaining;
   6040     GLfixed *params = (GLfixed *) 0;
   6041 
   6042     if (!params_ref) {
   6043         _exception = 1;
   6044         _exceptionType = "java/lang/IllegalArgumentException";
   6045         _exceptionMessage = "params == null";
   6046         goto exit;
   6047     }
   6048     if (offset < 0) {
   6049         _exception = 1;
   6050         _exceptionType = "java/lang/IllegalArgumentException";
   6051         _exceptionMessage = "offset < 0";
   6052         goto exit;
   6053     }
   6054     _remaining = _env->GetArrayLength(params_ref) - offset;
   6055     int _needed;
   6056     switch (pname) {
   6057 #if defined(GL_TEXTURE_ENV_MODE)
   6058         case GL_TEXTURE_ENV_MODE:
   6059 #endif // defined(GL_TEXTURE_ENV_MODE)
   6060 #if defined(GL_COMBINE_RGB)
   6061         case GL_COMBINE_RGB:
   6062 #endif // defined(GL_COMBINE_RGB)
   6063 #if defined(GL_COMBINE_ALPHA)
   6064         case GL_COMBINE_ALPHA:
   6065 #endif // defined(GL_COMBINE_ALPHA)
   6066             _needed = 1;
   6067             break;
   6068 #if defined(GL_TEXTURE_ENV_COLOR)
   6069         case GL_TEXTURE_ENV_COLOR:
   6070 #endif // defined(GL_TEXTURE_ENV_COLOR)
   6071             _needed = 4;
   6072             break;
   6073         default:
   6074             _needed = 1;
   6075             break;
   6076     }
   6077     if (_remaining < _needed) {
   6078         _exception = 1;
   6079         _exceptionType = "java/lang/IllegalArgumentException";
   6080         _exceptionMessage = "length - offset < needed";
   6081         goto exit;
   6082     }
   6083     params_base = (GLfixed *)
   6084         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   6085     params = params_base + offset;
   6086 
   6087     glGetTexEnvxv(
   6088         (GLenum)env,
   6089         (GLenum)pname,
   6090         (GLfixed *)params
   6091     );
   6092 
   6093 exit:
   6094     if (params_base) {
   6095         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   6096             _exception ? JNI_ABORT: 0);
   6097     }
   6098     if (_exception) {
   6099         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6100     }
   6101 }
   6102 
   6103 /* void glGetTexEnvxv ( GLenum env, GLenum pname, GLfixed *params ) */
   6104 static void
   6105 android_glGetTexEnvxv__IILjava_nio_IntBuffer_2
   6106   (JNIEnv *_env, jobject _this, jint env, jint pname, jobject params_buf) {
   6107     jint _exception = 0;
   6108     const char * _exceptionType = NULL;
   6109     const char * _exceptionMessage = NULL;
   6110     jintArray _array = (jintArray) 0;
   6111     jint _bufferOffset = (jint) 0;
   6112     jint _remaining;
   6113     GLfixed *params = (GLfixed *) 0;
   6114 
   6115     if (!params_buf) {
   6116         _exception = 1;
   6117         _exceptionType = "java/lang/IllegalArgumentException";
   6118         _exceptionMessage = "params == null";
   6119         goto exit;
   6120     }
   6121     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   6122     int _needed;
   6123     switch (pname) {
   6124 #if defined(GL_TEXTURE_ENV_MODE)
   6125         case GL_TEXTURE_ENV_MODE:
   6126 #endif // defined(GL_TEXTURE_ENV_MODE)
   6127 #if defined(GL_COMBINE_RGB)
   6128         case GL_COMBINE_RGB:
   6129 #endif // defined(GL_COMBINE_RGB)
   6130 #if defined(GL_COMBINE_ALPHA)
   6131         case GL_COMBINE_ALPHA:
   6132 #endif // defined(GL_COMBINE_ALPHA)
   6133             _needed = 1;
   6134             break;
   6135 #if defined(GL_TEXTURE_ENV_COLOR)
   6136         case GL_TEXTURE_ENV_COLOR:
   6137 #endif // defined(GL_TEXTURE_ENV_COLOR)
   6138             _needed = 4;
   6139             break;
   6140         default:
   6141             _needed = 1;
   6142             break;
   6143     }
   6144     if (_remaining < _needed) {
   6145         _exception = 1;
   6146         _exceptionType = "java/lang/IllegalArgumentException";
   6147         _exceptionMessage = "remaining() < needed";
   6148         goto exit;
   6149     }
   6150     if (params == NULL) {
   6151         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   6152         params = (GLfixed *) (_paramsBase + _bufferOffset);
   6153     }
   6154     glGetTexEnvxv(
   6155         (GLenum)env,
   6156         (GLenum)pname,
   6157         (GLfixed *)params
   6158     );
   6159 
   6160 exit:
   6161     if (_array) {
   6162         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   6163     }
   6164     if (_exception) {
   6165         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6166     }
   6167 }
   6168 
   6169 /* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
   6170 static void
   6171 android_glGetTexParameterfv__II_3FI
   6172   (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
   6173     jint _exception = 0;
   6174     const char * _exceptionType = NULL;
   6175     const char * _exceptionMessage = NULL;
   6176     GLfloat *params_base = (GLfloat *) 0;
   6177     jint _remaining;
   6178     GLfloat *params = (GLfloat *) 0;
   6179 
   6180     if (!params_ref) {
   6181         _exception = 1;
   6182         _exceptionType = "java/lang/IllegalArgumentException";
   6183         _exceptionMessage = "params == null";
   6184         goto exit;
   6185     }
   6186     if (offset < 0) {
   6187         _exception = 1;
   6188         _exceptionType = "java/lang/IllegalArgumentException";
   6189         _exceptionMessage = "offset < 0";
   6190         goto exit;
   6191     }
   6192     _remaining = _env->GetArrayLength(params_ref) - offset;
   6193     if (_remaining < 1) {
   6194         _exception = 1;
   6195         _exceptionType = "java/lang/IllegalArgumentException";
   6196         _exceptionMessage = "length - offset < 1 < needed";
   6197         goto exit;
   6198     }
   6199     params_base = (GLfloat *)
   6200         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
   6201     params = params_base + offset;
   6202 
   6203     glGetTexParameterfv(
   6204         (GLenum)target,
   6205         (GLenum)pname,
   6206         (GLfloat *)params
   6207     );
   6208 
   6209 exit:
   6210     if (params_base) {
   6211         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
   6212             _exception ? JNI_ABORT: 0);
   6213     }
   6214     if (_exception) {
   6215         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6216     }
   6217 }
   6218 
   6219 /* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
   6220 static void
   6221 android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2
   6222   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
   6223     jint _exception = 0;
   6224     const char * _exceptionType = NULL;
   6225     const char * _exceptionMessage = NULL;
   6226     jfloatArray _array = (jfloatArray) 0;
   6227     jint _bufferOffset = (jint) 0;
   6228     jint _remaining;
   6229     GLfloat *params = (GLfloat *) 0;
   6230 
   6231     if (!params_buf) {
   6232         _exception = 1;
   6233         _exceptionType = "java/lang/IllegalArgumentException";
   6234         _exceptionMessage = "params == null";
   6235         goto exit;
   6236     }
   6237     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   6238     if (_remaining < 1) {
   6239         _exception = 1;
   6240         _exceptionType = "java/lang/IllegalArgumentException";
   6241         _exceptionMessage = "remaining() < 1 < needed";
   6242         goto exit;
   6243     }
   6244     if (params == NULL) {
   6245         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   6246         params = (GLfloat *) (_paramsBase + _bufferOffset);
   6247     }
   6248     glGetTexParameterfv(
   6249         (GLenum)target,
   6250         (GLenum)pname,
   6251         (GLfloat *)params
   6252     );
   6253 
   6254 exit:
   6255     if (_array) {
   6256         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, _exception ? JNI_ABORT : 0);
   6257     }
   6258     if (_exception) {
   6259         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6260     }
   6261 }
   6262 
   6263 /* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
   6264 static void
   6265 android_glGetTexParameteriv__II_3II
   6266   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
   6267     jint _exception = 0;
   6268     const char * _exceptionType = NULL;
   6269     const char * _exceptionMessage = NULL;
   6270     GLint *params_base = (GLint *) 0;
   6271     jint _remaining;
   6272     GLint *params = (GLint *) 0;
   6273 
   6274     if (!params_ref) {
   6275         _exception = 1;
   6276         _exceptionType = "java/lang/IllegalArgumentException";
   6277         _exceptionMessage = "params == null";
   6278         goto exit;
   6279     }
   6280     if (offset < 0) {
   6281         _exception = 1;
   6282         _exceptionType = "java/lang/IllegalArgumentException";
   6283         _exceptionMessage = "offset < 0";
   6284         goto exit;
   6285     }
   6286     _remaining = _env->GetArrayLength(params_ref) - offset;
   6287     if (_remaining < 1) {
   6288         _exception = 1;
   6289         _exceptionType = "java/lang/IllegalArgumentException";
   6290         _exceptionMessage = "length - offset < 1 < needed";
   6291         goto exit;
   6292     }
   6293     params_base = (GLint *)
   6294         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   6295     params = params_base + offset;
   6296 
   6297     glGetTexParameteriv(
   6298         (GLenum)target,
   6299         (GLenum)pname,
   6300         (GLint *)params
   6301     );
   6302 
   6303 exit:
   6304     if (params_base) {
   6305         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   6306             _exception ? JNI_ABORT: 0);
   6307     }
   6308     if (_exception) {
   6309         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6310     }
   6311 }
   6312 
   6313 /* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
   6314 static void
   6315 android_glGetTexParameteriv__IILjava_nio_IntBuffer_2
   6316   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
   6317     jint _exception = 0;
   6318     const char * _exceptionType = NULL;
   6319     const char * _exceptionMessage = NULL;
   6320     jintArray _array = (jintArray) 0;
   6321     jint _bufferOffset = (jint) 0;
   6322     jint _remaining;
   6323     GLint *params = (GLint *) 0;
   6324 
   6325     if (!params_buf) {
   6326         _exception = 1;
   6327         _exceptionType = "java/lang/IllegalArgumentException";
   6328         _exceptionMessage = "params == null";
   6329         goto exit;
   6330     }
   6331     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   6332     if (_remaining < 1) {
   6333         _exception = 1;
   6334         _exceptionType = "java/lang/IllegalArgumentException";
   6335         _exceptionMessage = "remaining() < 1 < needed";
   6336         goto exit;
   6337     }
   6338     if (params == NULL) {
   6339         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   6340         params = (GLint *) (_paramsBase + _bufferOffset);
   6341     }
   6342     glGetTexParameteriv(
   6343         (GLenum)target,
   6344         (GLenum)pname,
   6345         (GLint *)params
   6346     );
   6347 
   6348 exit:
   6349     if (_array) {
   6350         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   6351     }
   6352     if (_exception) {
   6353         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6354     }
   6355 }
   6356 
   6357 /* void glGetTexParameterxv ( GLenum target, GLenum pname, GLfixed *params ) */
   6358 static void
   6359 android_glGetTexParameterxv__II_3II
   6360   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
   6361     jint _exception = 0;
   6362     const char * _exceptionType = NULL;
   6363     const char * _exceptionMessage = NULL;
   6364     GLfixed *params_base = (GLfixed *) 0;
   6365     jint _remaining;
   6366     GLfixed *params = (GLfixed *) 0;
   6367 
   6368     if (!params_ref) {
   6369         _exception = 1;
   6370         _exceptionType = "java/lang/IllegalArgumentException";
   6371         _exceptionMessage = "params == null";
   6372         goto exit;
   6373     }
   6374     if (offset < 0) {
   6375         _exception = 1;
   6376         _exceptionType = "java/lang/IllegalArgumentException";
   6377         _exceptionMessage = "offset < 0";
   6378         goto exit;
   6379     }
   6380     _remaining = _env->GetArrayLength(params_ref) - offset;
   6381     if (_remaining < 1) {
   6382         _exception = 1;
   6383         _exceptionType = "java/lang/IllegalArgumentException";
   6384         _exceptionMessage = "length - offset < 1 < needed";
   6385         goto exit;
   6386     }
   6387     params_base = (GLfixed *)
   6388         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   6389     params = params_base + offset;
   6390 
   6391     glGetTexParameterxv(
   6392         (GLenum)target,
   6393         (GLenum)pname,
   6394         (GLfixed *)params
   6395     );
   6396 
   6397 exit:
   6398     if (params_base) {
   6399         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   6400             _exception ? JNI_ABORT: 0);
   6401     }
   6402     if (_exception) {
   6403         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6404     }
   6405 }
   6406 
   6407 /* void glGetTexParameterxv ( GLenum target, GLenum pname, GLfixed *params ) */
   6408 static void
   6409 android_glGetTexParameterxv__IILjava_nio_IntBuffer_2
   6410   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
   6411     jint _exception = 0;
   6412     const char * _exceptionType = NULL;
   6413     const char * _exceptionMessage = NULL;
   6414     jintArray _array = (jintArray) 0;
   6415     jint _bufferOffset = (jint) 0;
   6416     jint _remaining;
   6417     GLfixed *params = (GLfixed *) 0;
   6418 
   6419     if (!params_buf) {
   6420         _exception = 1;
   6421         _exceptionType = "java/lang/IllegalArgumentException";
   6422         _exceptionMessage = "params == null";
   6423         goto exit;
   6424     }
   6425     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   6426     if (_remaining < 1) {
   6427         _exception = 1;
   6428         _exceptionType = "java/lang/IllegalArgumentException";
   6429         _exceptionMessage = "remaining() < 1 < needed";
   6430         goto exit;
   6431     }
   6432     if (params == NULL) {
   6433         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   6434         params = (GLfixed *) (_paramsBase + _bufferOffset);
   6435     }
   6436     glGetTexParameterxv(
   6437         (GLenum)target,
   6438         (GLenum)pname,
   6439         (GLfixed *)params
   6440     );
   6441 
   6442 exit:
   6443     if (_array) {
   6444         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   6445     }
   6446     if (_exception) {
   6447         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6448     }
   6449 }
   6450 
   6451 /* GLboolean glIsBuffer ( GLuint buffer ) */
   6452 static jboolean
   6453 android_glIsBuffer__I
   6454   (JNIEnv *_env, jobject _this, jint buffer) {
   6455     GLboolean _returnValue;
   6456     _returnValue = glIsBuffer(
   6457         (GLuint)buffer
   6458     );
   6459     return (jboolean)_returnValue;
   6460 }
   6461 
   6462 /* GLboolean glIsEnabled ( GLenum cap ) */
   6463 static jboolean
   6464 android_glIsEnabled__I
   6465   (JNIEnv *_env, jobject _this, jint cap) {
   6466     GLboolean _returnValue;
   6467     _returnValue = glIsEnabled(
   6468         (GLenum)cap
   6469     );
   6470     return (jboolean)_returnValue;
   6471 }
   6472 
   6473 /* GLboolean glIsTexture ( GLuint texture ) */
   6474 static jboolean
   6475 android_glIsTexture__I
   6476   (JNIEnv *_env, jobject _this, jint texture) {
   6477     GLboolean _returnValue;
   6478     _returnValue = glIsTexture(
   6479         (GLuint)texture
   6480     );
   6481     return (jboolean)_returnValue;
   6482 }
   6483 
   6484 /* void glNormalPointer ( GLenum type, GLsizei stride, GLint offset ) */
   6485 static void
   6486 android_glNormalPointer__III
   6487   (JNIEnv *_env, jobject _this, jint type, jint stride, jint offset) {
   6488     glNormalPointer(
   6489         (GLenum)type,
   6490         (GLsizei)stride,
   6491         reinterpret_cast<GLvoid *>(offset)
   6492     );
   6493 }
   6494 
   6495 /* void glPointParameterf ( GLenum pname, GLfloat param ) */
   6496 static void
   6497 android_glPointParameterf__IF
   6498   (JNIEnv *_env, jobject _this, jint pname, jfloat param) {
   6499     glPointParameterf(
   6500         (GLenum)pname,
   6501         (GLfloat)param
   6502     );
   6503 }
   6504 
   6505 /* void glPointParameterfv ( GLenum pname, const GLfloat *params ) */
   6506 static void
   6507 android_glPointParameterfv__I_3FI
   6508   (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
   6509     jint _exception = 0;
   6510     const char * _exceptionType = NULL;
   6511     const char * _exceptionMessage = NULL;
   6512     GLfloat *params_base = (GLfloat *) 0;
   6513     jint _remaining;
   6514     GLfloat *params = (GLfloat *) 0;
   6515 
   6516     if (!params_ref) {
   6517         _exception = 1;
   6518         _exceptionType = "java/lang/IllegalArgumentException";
   6519         _exceptionMessage = "params == null";
   6520         goto exit;
   6521     }
   6522     if (offset < 0) {
   6523         _exception = 1;
   6524         _exceptionType = "java/lang/IllegalArgumentException";
   6525         _exceptionMessage = "offset < 0";
   6526         goto exit;
   6527     }
   6528     _remaining = _env->GetArrayLength(params_ref) - offset;
   6529     if (_remaining < 1) {
   6530         _exception = 1;
   6531         _exceptionType = "java/lang/IllegalArgumentException";
   6532         _exceptionMessage = "length - offset < 1 < needed";
   6533         goto exit;
   6534     }
   6535     params_base = (GLfloat *)
   6536         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
   6537     params = params_base + offset;
   6538 
   6539     glPointParameterfv(
   6540         (GLenum)pname,
   6541         (GLfloat *)params
   6542     );
   6543 
   6544 exit:
   6545     if (params_base) {
   6546         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
   6547             JNI_ABORT);
   6548     }
   6549     if (_exception) {
   6550         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6551     }
   6552 }
   6553 
   6554 /* void glPointParameterfv ( GLenum pname, const GLfloat *params ) */
   6555 static void
   6556 android_glPointParameterfv__ILjava_nio_FloatBuffer_2
   6557   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
   6558     jint _exception = 0;
   6559     const char * _exceptionType = NULL;
   6560     const char * _exceptionMessage = NULL;
   6561     jfloatArray _array = (jfloatArray) 0;
   6562     jint _bufferOffset = (jint) 0;
   6563     jint _remaining;
   6564     GLfloat *params = (GLfloat *) 0;
   6565 
   6566     if (!params_buf) {
   6567         _exception = 1;
   6568         _exceptionType = "java/lang/IllegalArgumentException";
   6569         _exceptionMessage = "params == null";
   6570         goto exit;
   6571     }
   6572     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   6573     if (_remaining < 1) {
   6574         _exception = 1;
   6575         _exceptionType = "java/lang/IllegalArgumentException";
   6576         _exceptionMessage = "remaining() < 1 < needed";
   6577         goto exit;
   6578     }
   6579     if (params == NULL) {
   6580         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   6581         params = (GLfloat *) (_paramsBase + _bufferOffset);
   6582     }
   6583     glPointParameterfv(
   6584         (GLenum)pname,
   6585         (GLfloat *)params
   6586     );
   6587 
   6588 exit:
   6589     if (_array) {
   6590         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
   6591     }
   6592     if (_exception) {
   6593         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6594     }
   6595 }
   6596 
   6597 /* void glPointParameterx ( GLenum pname, GLfixed param ) */
   6598 static void
   6599 android_glPointParameterx__II
   6600   (JNIEnv *_env, jobject _this, jint pname, jint param) {
   6601     glPointParameterx(
   6602         (GLenum)pname,
   6603         (GLfixed)param
   6604     );
   6605 }
   6606 
   6607 /* void glPointParameterxv ( GLenum pname, const GLfixed *params ) */
   6608 static void
   6609 android_glPointParameterxv__I_3II
   6610   (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
   6611     jint _exception = 0;
   6612     const char * _exceptionType = NULL;
   6613     const char * _exceptionMessage = NULL;
   6614     GLfixed *params_base = (GLfixed *) 0;
   6615     jint _remaining;
   6616     GLfixed *params = (GLfixed *) 0;
   6617 
   6618     if (!params_ref) {
   6619         _exception = 1;
   6620         _exceptionType = "java/lang/IllegalArgumentException";
   6621         _exceptionMessage = "params == null";
   6622         goto exit;
   6623     }
   6624     if (offset < 0) {
   6625         _exception = 1;
   6626         _exceptionType = "java/lang/IllegalArgumentException";
   6627         _exceptionMessage = "offset < 0";
   6628         goto exit;
   6629     }
   6630     _remaining = _env->GetArrayLength(params_ref) - offset;
   6631     if (_remaining < 1) {
   6632         _exception = 1;
   6633         _exceptionType = "java/lang/IllegalArgumentException";
   6634         _exceptionMessage = "length - offset < 1 < needed";
   6635         goto exit;
   6636     }
   6637     params_base = (GLfixed *)
   6638         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   6639     params = params_base + offset;
   6640 
   6641     glPointParameterxv(
   6642         (GLenum)pname,
   6643         (GLfixed *)params
   6644     );
   6645 
   6646 exit:
   6647     if (params_base) {
   6648         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   6649             JNI_ABORT);
   6650     }
   6651     if (_exception) {
   6652         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6653     }
   6654 }
   6655 
   6656 /* void glPointParameterxv ( GLenum pname, const GLfixed *params ) */
   6657 static void
   6658 android_glPointParameterxv__ILjava_nio_IntBuffer_2
   6659   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
   6660     jint _exception = 0;
   6661     const char * _exceptionType = NULL;
   6662     const char * _exceptionMessage = NULL;
   6663     jintArray _array = (jintArray) 0;
   6664     jint _bufferOffset = (jint) 0;
   6665     jint _remaining;
   6666     GLfixed *params = (GLfixed *) 0;
   6667 
   6668     if (!params_buf) {
   6669         _exception = 1;
   6670         _exceptionType = "java/lang/IllegalArgumentException";
   6671         _exceptionMessage = "params == null";
   6672         goto exit;
   6673     }
   6674     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   6675     if (_remaining < 1) {
   6676         _exception = 1;
   6677         _exceptionType = "java/lang/IllegalArgumentException";
   6678         _exceptionMessage = "remaining() < 1 < needed";
   6679         goto exit;
   6680     }
   6681     if (params == NULL) {
   6682         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   6683         params = (GLfixed *) (_paramsBase + _bufferOffset);
   6684     }
   6685     glPointParameterxv(
   6686         (GLenum)pname,
   6687         (GLfixed *)params
   6688     );
   6689 
   6690 exit:
   6691     if (_array) {
   6692         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
   6693     }
   6694     if (_exception) {
   6695         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6696     }
   6697 }
   6698 
   6699 /* void glPointSizePointerOES ( GLenum type, GLsizei stride, const GLvoid *pointer ) */
   6700 static void
   6701 android_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I
   6702   (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) {
   6703     jint _exception = 0;
   6704     const char * _exceptionType = NULL;
   6705     const char * _exceptionMessage = NULL;
   6706     jarray _array = (jarray) 0;
   6707     jint _bufferOffset = (jint) 0;
   6708     jint _remaining;
   6709     GLvoid *pointer = (GLvoid *) 0;
   6710 
   6711     if (pointer_buf) {
   6712         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
   6713         if ( ! pointer ) {
   6714             return;
   6715         }
   6716     }
   6717     glPointSizePointerOESBounds(
   6718         (GLenum)type,
   6719         (GLsizei)stride,
   6720         (GLvoid *)pointer,
   6721         (GLsizei)remaining
   6722     );
   6723     if (_exception) {
   6724         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6725     }
   6726 }
   6727 
   6728 /* void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
   6729 static void
   6730 android_glTexCoordPointer__IIII
   6731   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) {
   6732     glTexCoordPointer(
   6733         (GLint)size,
   6734         (GLenum)type,
   6735         (GLsizei)stride,
   6736         reinterpret_cast<GLvoid *>(offset)
   6737     );
   6738 }
   6739 
   6740 /* void glTexEnvi ( GLenum target, GLenum pname, GLint param ) */
   6741 static void
   6742 android_glTexEnvi__III
   6743   (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
   6744     glTexEnvi(
   6745         (GLenum)target,
   6746         (GLenum)pname,
   6747         (GLint)param
   6748     );
   6749 }
   6750 
   6751 /* void glTexEnviv ( GLenum target, GLenum pname, const GLint *params ) */
   6752 static void
   6753 android_glTexEnviv__II_3II
   6754   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
   6755     jint _exception = 0;
   6756     const char * _exceptionType = NULL;
   6757     const char * _exceptionMessage = NULL;
   6758     GLint *params_base = (GLint *) 0;
   6759     jint _remaining;
   6760     GLint *params = (GLint *) 0;
   6761 
   6762     if (!params_ref) {
   6763         _exception = 1;
   6764         _exceptionType = "java/lang/IllegalArgumentException";
   6765         _exceptionMessage = "params == null";
   6766         goto exit;
   6767     }
   6768     if (offset < 0) {
   6769         _exception = 1;
   6770         _exceptionType = "java/lang/IllegalArgumentException";
   6771         _exceptionMessage = "offset < 0";
   6772         goto exit;
   6773     }
   6774     _remaining = _env->GetArrayLength(params_ref) - offset;
   6775     int _needed;
   6776     switch (pname) {
   6777 #if defined(GL_TEXTURE_ENV_MODE)
   6778         case GL_TEXTURE_ENV_MODE:
   6779 #endif // defined(GL_TEXTURE_ENV_MODE)
   6780 #if defined(GL_COMBINE_RGB)
   6781         case GL_COMBINE_RGB:
   6782 #endif // defined(GL_COMBINE_RGB)
   6783 #if defined(GL_COMBINE_ALPHA)
   6784         case GL_COMBINE_ALPHA:
   6785 #endif // defined(GL_COMBINE_ALPHA)
   6786             _needed = 1;
   6787             break;
   6788 #if defined(GL_TEXTURE_ENV_COLOR)
   6789         case GL_TEXTURE_ENV_COLOR:
   6790 #endif // defined(GL_TEXTURE_ENV_COLOR)
   6791             _needed = 4;
   6792             break;
   6793         default:
   6794             _needed = 1;
   6795             break;
   6796     }
   6797     if (_remaining < _needed) {
   6798         _exception = 1;
   6799         _exceptionType = "java/lang/IllegalArgumentException";
   6800         _exceptionMessage = "length - offset < needed";
   6801         goto exit;
   6802     }
   6803     params_base = (GLint *)
   6804         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   6805     params = params_base + offset;
   6806 
   6807     glTexEnviv(
   6808         (GLenum)target,
   6809         (GLenum)pname,
   6810         (GLint *)params
   6811     );
   6812 
   6813 exit:
   6814     if (params_base) {
   6815         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   6816             JNI_ABORT);
   6817     }
   6818     if (_exception) {
   6819         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6820     }
   6821 }
   6822 
   6823 /* void glTexEnviv ( GLenum target, GLenum pname, const GLint *params ) */
   6824 static void
   6825 android_glTexEnviv__IILjava_nio_IntBuffer_2
   6826   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
   6827     jint _exception = 0;
   6828     const char * _exceptionType = NULL;
   6829     const char * _exceptionMessage = NULL;
   6830     jintArray _array = (jintArray) 0;
   6831     jint _bufferOffset = (jint) 0;
   6832     jint _remaining;
   6833     GLint *params = (GLint *) 0;
   6834 
   6835     if (!params_buf) {
   6836         _exception = 1;
   6837         _exceptionType = "java/lang/IllegalArgumentException";
   6838         _exceptionMessage = "params == null";
   6839         goto exit;
   6840     }
   6841     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   6842     int _needed;
   6843     switch (pname) {
   6844 #if defined(GL_TEXTURE_ENV_MODE)
   6845         case GL_TEXTURE_ENV_MODE:
   6846 #endif // defined(GL_TEXTURE_ENV_MODE)
   6847 #if defined(GL_COMBINE_RGB)
   6848         case GL_COMBINE_RGB:
   6849 #endif // defined(GL_COMBINE_RGB)
   6850 #if defined(GL_COMBINE_ALPHA)
   6851         case GL_COMBINE_ALPHA:
   6852 #endif // defined(GL_COMBINE_ALPHA)
   6853             _needed = 1;
   6854             break;
   6855 #if defined(GL_TEXTURE_ENV_COLOR)
   6856         case GL_TEXTURE_ENV_COLOR:
   6857 #endif // defined(GL_TEXTURE_ENV_COLOR)
   6858             _needed = 4;
   6859             break;
   6860         default:
   6861             _needed = 1;
   6862             break;
   6863     }
   6864     if (_remaining < _needed) {
   6865         _exception = 1;
   6866         _exceptionType = "java/lang/IllegalArgumentException";
   6867         _exceptionMessage = "remaining() < needed";
   6868         goto exit;
   6869     }
   6870     if (params == NULL) {
   6871         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   6872         params = (GLint *) (_paramsBase + _bufferOffset);
   6873     }
   6874     glTexEnviv(
   6875         (GLenum)target,
   6876         (GLenum)pname,
   6877         (GLint *)params
   6878     );
   6879 
   6880 exit:
   6881     if (_array) {
   6882         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
   6883     }
   6884     if (_exception) {
   6885         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6886     }
   6887 }
   6888 
   6889 /* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
   6890 static void
   6891 android_glTexParameterfv__II_3FI
   6892   (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
   6893     jint _exception = 0;
   6894     const char * _exceptionType = NULL;
   6895     const char * _exceptionMessage = NULL;
   6896     GLfloat *params_base = (GLfloat *) 0;
   6897     jint _remaining;
   6898     GLfloat *params = (GLfloat *) 0;
   6899 
   6900     if (!params_ref) {
   6901         _exception = 1;
   6902         _exceptionType = "java/lang/IllegalArgumentException";
   6903         _exceptionMessage = "params == null";
   6904         goto exit;
   6905     }
   6906     if (offset < 0) {
   6907         _exception = 1;
   6908         _exceptionType = "java/lang/IllegalArgumentException";
   6909         _exceptionMessage = "offset < 0";
   6910         goto exit;
   6911     }
   6912     _remaining = _env->GetArrayLength(params_ref) - offset;
   6913     if (_remaining < 1) {
   6914         _exception = 1;
   6915         _exceptionType = "java/lang/IllegalArgumentException";
   6916         _exceptionMessage = "length - offset < 1 < needed";
   6917         goto exit;
   6918     }
   6919     params_base = (GLfloat *)
   6920         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
   6921     params = params_base + offset;
   6922 
   6923     glTexParameterfv(
   6924         (GLenum)target,
   6925         (GLenum)pname,
   6926         (GLfloat *)params
   6927     );
   6928 
   6929 exit:
   6930     if (params_base) {
   6931         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
   6932             JNI_ABORT);
   6933     }
   6934     if (_exception) {
   6935         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6936     }
   6937 }
   6938 
   6939 /* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
   6940 static void
   6941 android_glTexParameterfv__IILjava_nio_FloatBuffer_2
   6942   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
   6943     jint _exception = 0;
   6944     const char * _exceptionType = NULL;
   6945     const char * _exceptionMessage = NULL;
   6946     jfloatArray _array = (jfloatArray) 0;
   6947     jint _bufferOffset = (jint) 0;
   6948     jint _remaining;
   6949     GLfloat *params = (GLfloat *) 0;
   6950 
   6951     if (!params_buf) {
   6952         _exception = 1;
   6953         _exceptionType = "java/lang/IllegalArgumentException";
   6954         _exceptionMessage = "params == null";
   6955         goto exit;
   6956     }
   6957     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   6958     if (_remaining < 1) {
   6959         _exception = 1;
   6960         _exceptionType = "java/lang/IllegalArgumentException";
   6961         _exceptionMessage = "remaining() < 1 < needed";
   6962         goto exit;
   6963     }
   6964     if (params == NULL) {
   6965         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   6966         params = (GLfloat *) (_paramsBase + _bufferOffset);
   6967     }
   6968     glTexParameterfv(
   6969         (GLenum)target,
   6970         (GLenum)pname,
   6971         (GLfloat *)params
   6972     );
   6973 
   6974 exit:
   6975     if (_array) {
   6976         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
   6977     }
   6978     if (_exception) {
   6979         jniThrowException(_env, _exceptionType, _exceptionMessage);
   6980     }
   6981 }
   6982 
   6983 /* void glTexParameteri ( GLenum target, GLenum pname, GLint param ) */
   6984 static void
   6985 android_glTexParameteri__III
   6986   (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
   6987     glTexParameteri(
   6988         (GLenum)target,
   6989         (GLenum)pname,
   6990         (GLint)param
   6991     );
   6992 }
   6993 
   6994 /* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
   6995 static void
   6996 android_glTexParameteriv__II_3II
   6997   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
   6998     jint _exception = 0;
   6999     const char * _exceptionType = NULL;
   7000     const char * _exceptionMessage = NULL;
   7001     GLint *params_base = (GLint *) 0;
   7002     jint _remaining;
   7003     GLint *params = (GLint *) 0;
   7004 
   7005     if (!params_ref) {
   7006         _exception = 1;
   7007         _exceptionType = "java/lang/IllegalArgumentException";
   7008         _exceptionMessage = "params == null";
   7009         goto exit;
   7010     }
   7011     if (offset < 0) {
   7012         _exception = 1;
   7013         _exceptionType = "java/lang/IllegalArgumentException";
   7014         _exceptionMessage = "offset < 0";
   7015         goto exit;
   7016     }
   7017     _remaining = _env->GetArrayLength(params_ref) - offset;
   7018     if (_remaining < 1) {
   7019         _exception = 1;
   7020         _exceptionType = "java/lang/IllegalArgumentException";
   7021         _exceptionMessage = "length - offset < 1 < needed";
   7022         goto exit;
   7023     }
   7024     params_base = (GLint *)
   7025         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   7026     params = params_base + offset;
   7027 
   7028     glTexParameteriv(
   7029         (GLenum)target,
   7030         (GLenum)pname,
   7031         (GLint *)params
   7032     );
   7033 
   7034 exit:
   7035     if (params_base) {
   7036         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   7037             JNI_ABORT);
   7038     }
   7039     if (_exception) {
   7040         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7041     }
   7042 }
   7043 
   7044 /* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
   7045 static void
   7046 android_glTexParameteriv__IILjava_nio_IntBuffer_2
   7047   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
   7048     jint _exception = 0;
   7049     const char * _exceptionType = NULL;
   7050     const char * _exceptionMessage = NULL;
   7051     jintArray _array = (jintArray) 0;
   7052     jint _bufferOffset = (jint) 0;
   7053     jint _remaining;
   7054     GLint *params = (GLint *) 0;
   7055 
   7056     if (!params_buf) {
   7057         _exception = 1;
   7058         _exceptionType = "java/lang/IllegalArgumentException";
   7059         _exceptionMessage = "params == null";
   7060         goto exit;
   7061     }
   7062     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   7063     if (_remaining < 1) {
   7064         _exception = 1;
   7065         _exceptionType = "java/lang/IllegalArgumentException";
   7066         _exceptionMessage = "remaining() < 1 < needed";
   7067         goto exit;
   7068     }
   7069     if (params == NULL) {
   7070         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   7071         params = (GLint *) (_paramsBase + _bufferOffset);
   7072     }
   7073     glTexParameteriv(
   7074         (GLenum)target,
   7075         (GLenum)pname,
   7076         (GLint *)params
   7077     );
   7078 
   7079 exit:
   7080     if (_array) {
   7081         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
   7082     }
   7083     if (_exception) {
   7084         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7085     }
   7086 }
   7087 
   7088 /* void glTexParameterxv ( GLenum target, GLenum pname, const GLfixed *params ) */
   7089 static void
   7090 android_glTexParameterxv__II_3II
   7091   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
   7092     jint _exception = 0;
   7093     const char * _exceptionType = NULL;
   7094     const char * _exceptionMessage = NULL;
   7095     GLfixed *params_base = (GLfixed *) 0;
   7096     jint _remaining;
   7097     GLfixed *params = (GLfixed *) 0;
   7098 
   7099     if (!params_ref) {
   7100         _exception = 1;
   7101         _exceptionType = "java/lang/IllegalArgumentException";
   7102         _exceptionMessage = "params == null";
   7103         goto exit;
   7104     }
   7105     if (offset < 0) {
   7106         _exception = 1;
   7107         _exceptionType = "java/lang/IllegalArgumentException";
   7108         _exceptionMessage = "offset < 0";
   7109         goto exit;
   7110     }
   7111     _remaining = _env->GetArrayLength(params_ref) - offset;
   7112     if (_remaining < 1) {
   7113         _exception = 1;
   7114         _exceptionType = "java/lang/IllegalArgumentException";
   7115         _exceptionMessage = "length - offset < 1 < needed";
   7116         goto exit;
   7117     }
   7118     params_base = (GLfixed *)
   7119         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   7120     params = params_base + offset;
   7121 
   7122     glTexParameterxv(
   7123         (GLenum)target,
   7124         (GLenum)pname,
   7125         (GLfixed *)params
   7126     );
   7127 
   7128 exit:
   7129     if (params_base) {
   7130         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   7131             JNI_ABORT);
   7132     }
   7133     if (_exception) {
   7134         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7135     }
   7136 }
   7137 
   7138 /* void glTexParameterxv ( GLenum target, GLenum pname, const GLfixed *params ) */
   7139 static void
   7140 android_glTexParameterxv__IILjava_nio_IntBuffer_2
   7141   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
   7142     jint _exception = 0;
   7143     const char * _exceptionType = NULL;
   7144     const char * _exceptionMessage = NULL;
   7145     jintArray _array = (jintArray) 0;
   7146     jint _bufferOffset = (jint) 0;
   7147     jint _remaining;
   7148     GLfixed *params = (GLfixed *) 0;
   7149 
   7150     if (!params_buf) {
   7151         _exception = 1;
   7152         _exceptionType = "java/lang/IllegalArgumentException";
   7153         _exceptionMessage = "params == null";
   7154         goto exit;
   7155     }
   7156     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   7157     if (_remaining < 1) {
   7158         _exception = 1;
   7159         _exceptionType = "java/lang/IllegalArgumentException";
   7160         _exceptionMessage = "remaining() < 1 < needed";
   7161         goto exit;
   7162     }
   7163     if (params == NULL) {
   7164         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   7165         params = (GLfixed *) (_paramsBase + _bufferOffset);
   7166     }
   7167     glTexParameterxv(
   7168         (GLenum)target,
   7169         (GLenum)pname,
   7170         (GLfixed *)params
   7171     );
   7172 
   7173 exit:
   7174     if (_array) {
   7175         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
   7176     }
   7177     if (_exception) {
   7178         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7179     }
   7180 }
   7181 
   7182 /* void glVertexPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
   7183 static void
   7184 android_glVertexPointer__IIII
   7185   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) {
   7186     glVertexPointer(
   7187         (GLint)size,
   7188         (GLenum)type,
   7189         (GLsizei)stride,
   7190         reinterpret_cast<GLvoid *>(offset)
   7191     );
   7192 }
   7193 
   7194 /* void glCurrentPaletteMatrixOES ( GLuint matrixpaletteindex ) */
   7195 static void
   7196 android_glCurrentPaletteMatrixOES__I
   7197   (JNIEnv *_env, jobject _this, jint matrixpaletteindex) {
   7198     glCurrentPaletteMatrixOES(
   7199         (GLuint)matrixpaletteindex
   7200     );
   7201 }
   7202 
   7203 /* void glDrawTexfOES ( GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height ) */
   7204 static void
   7205 android_glDrawTexfOES__FFFFF
   7206   (JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z, jfloat width, jfloat height) {
   7207     glDrawTexfOES(
   7208         (GLfloat)x,
   7209         (GLfloat)y,
   7210         (GLfloat)z,
   7211         (GLfloat)width,
   7212         (GLfloat)height
   7213     );
   7214 }
   7215 
   7216 /* void glDrawTexfvOES ( const GLfloat *coords ) */
   7217 static void
   7218 android_glDrawTexfvOES___3FI
   7219   (JNIEnv *_env, jobject _this, jfloatArray coords_ref, jint offset) {
   7220     jint _exception = 0;
   7221     const char * _exceptionType = NULL;
   7222     const char * _exceptionMessage = NULL;
   7223     GLfloat *coords_base = (GLfloat *) 0;
   7224     jint _remaining;
   7225     GLfloat *coords = (GLfloat *) 0;
   7226 
   7227     if (!coords_ref) {
   7228         _exception = 1;
   7229         _exceptionType = "java/lang/IllegalArgumentException";
   7230         _exceptionMessage = "coords == null";
   7231         goto exit;
   7232     }
   7233     if (offset < 0) {
   7234         _exception = 1;
   7235         _exceptionType = "java/lang/IllegalArgumentException";
   7236         _exceptionMessage = "offset < 0";
   7237         goto exit;
   7238     }
   7239     _remaining = _env->GetArrayLength(coords_ref) - offset;
   7240     if (_remaining < 5) {
   7241         _exception = 1;
   7242         _exceptionType = "java/lang/IllegalArgumentException";
   7243         _exceptionMessage = "length - offset < 5 < needed";
   7244         goto exit;
   7245     }
   7246     coords_base = (GLfloat *)
   7247         _env->GetFloatArrayElements(coords_ref, (jboolean *)0);
   7248     coords = coords_base + offset;
   7249 
   7250     glDrawTexfvOES(
   7251         (GLfloat *)coords
   7252     );
   7253 
   7254 exit:
   7255     if (coords_base) {
   7256         _env->ReleaseFloatArrayElements(coords_ref, (jfloat*)coords_base,
   7257             JNI_ABORT);
   7258     }
   7259     if (_exception) {
   7260         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7261     }
   7262 }
   7263 
   7264 /* void glDrawTexfvOES ( const GLfloat *coords ) */
   7265 static void
   7266 android_glDrawTexfvOES__Ljava_nio_FloatBuffer_2
   7267   (JNIEnv *_env, jobject _this, jobject coords_buf) {
   7268     jint _exception = 0;
   7269     const char * _exceptionType = NULL;
   7270     const char * _exceptionMessage = NULL;
   7271     jfloatArray _array = (jfloatArray) 0;
   7272     jint _bufferOffset = (jint) 0;
   7273     jint _remaining;
   7274     GLfloat *coords = (GLfloat *) 0;
   7275 
   7276     if (!coords_buf) {
   7277         _exception = 1;
   7278         _exceptionType = "java/lang/IllegalArgumentException";
   7279         _exceptionMessage = "coords == null";
   7280         goto exit;
   7281     }
   7282     coords = (GLfloat *)getPointer(_env, coords_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   7283     if (_remaining < 5) {
   7284         _exception = 1;
   7285         _exceptionType = "java/lang/IllegalArgumentException";
   7286         _exceptionMessage = "remaining() < 5 < needed";
   7287         goto exit;
   7288     }
   7289     if (coords == NULL) {
   7290         char * _coordsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   7291         coords = (GLfloat *) (_coordsBase + _bufferOffset);
   7292     }
   7293     glDrawTexfvOES(
   7294         (GLfloat *)coords
   7295     );
   7296 
   7297 exit:
   7298     if (_array) {
   7299         _env->ReleaseFloatArrayElements(_array, (jfloat*)coords, JNI_ABORT);
   7300     }
   7301     if (_exception) {
   7302         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7303     }
   7304 }
   7305 
   7306 /* void glDrawTexiOES ( GLint x, GLint y, GLint z, GLint width, GLint height ) */
   7307 static void
   7308 android_glDrawTexiOES__IIIII
   7309   (JNIEnv *_env, jobject _this, jint x, jint y, jint z, jint width, jint height) {
   7310     glDrawTexiOES(
   7311         (GLint)x,
   7312         (GLint)y,
   7313         (GLint)z,
   7314         (GLint)width,
   7315         (GLint)height
   7316     );
   7317 }
   7318 
   7319 /* void glDrawTexivOES ( const GLint *coords ) */
   7320 static void
   7321 android_glDrawTexivOES___3II
   7322   (JNIEnv *_env, jobject _this, jintArray coords_ref, jint offset) {
   7323     jint _exception = 0;
   7324     const char * _exceptionType = NULL;
   7325     const char * _exceptionMessage = NULL;
   7326     GLint *coords_base = (GLint *) 0;
   7327     jint _remaining;
   7328     GLint *coords = (GLint *) 0;
   7329 
   7330     if (!coords_ref) {
   7331         _exception = 1;
   7332         _exceptionType = "java/lang/IllegalArgumentException";
   7333         _exceptionMessage = "coords == null";
   7334         goto exit;
   7335     }
   7336     if (offset < 0) {
   7337         _exception = 1;
   7338         _exceptionType = "java/lang/IllegalArgumentException";
   7339         _exceptionMessage = "offset < 0";
   7340         goto exit;
   7341     }
   7342     _remaining = _env->GetArrayLength(coords_ref) - offset;
   7343     if (_remaining < 5) {
   7344         _exception = 1;
   7345         _exceptionType = "java/lang/IllegalArgumentException";
   7346         _exceptionMessage = "length - offset < 5 < needed";
   7347         goto exit;
   7348     }
   7349     coords_base = (GLint *)
   7350         _env->GetIntArrayElements(coords_ref, (jboolean *)0);
   7351     coords = coords_base + offset;
   7352 
   7353     glDrawTexivOES(
   7354         (GLint *)coords
   7355     );
   7356 
   7357 exit:
   7358     if (coords_base) {
   7359         _env->ReleaseIntArrayElements(coords_ref, (jint*)coords_base,
   7360             JNI_ABORT);
   7361     }
   7362     if (_exception) {
   7363         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7364     }
   7365 }
   7366 
   7367 /* void glDrawTexivOES ( const GLint *coords ) */
   7368 static void
   7369 android_glDrawTexivOES__Ljava_nio_IntBuffer_2
   7370   (JNIEnv *_env, jobject _this, jobject coords_buf) {
   7371     jint _exception = 0;
   7372     const char * _exceptionType = NULL;
   7373     const char * _exceptionMessage = NULL;
   7374     jintArray _array = (jintArray) 0;
   7375     jint _bufferOffset = (jint) 0;
   7376     jint _remaining;
   7377     GLint *coords = (GLint *) 0;
   7378 
   7379     if (!coords_buf) {
   7380         _exception = 1;
   7381         _exceptionType = "java/lang/IllegalArgumentException";
   7382         _exceptionMessage = "coords == null";
   7383         goto exit;
   7384     }
   7385     coords = (GLint *)getPointer(_env, coords_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   7386     if (_remaining < 5) {
   7387         _exception = 1;
   7388         _exceptionType = "java/lang/IllegalArgumentException";
   7389         _exceptionMessage = "remaining() < 5 < needed";
   7390         goto exit;
   7391     }
   7392     if (coords == NULL) {
   7393         char * _coordsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   7394         coords = (GLint *) (_coordsBase + _bufferOffset);
   7395     }
   7396     glDrawTexivOES(
   7397         (GLint *)coords
   7398     );
   7399 
   7400 exit:
   7401     if (_array) {
   7402         _env->ReleaseIntArrayElements(_array, (jint*)coords, JNI_ABORT);
   7403     }
   7404     if (_exception) {
   7405         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7406     }
   7407 }
   7408 
   7409 /* void glDrawTexsOES ( GLshort x, GLshort y, GLshort z, GLshort width, GLshort height ) */
   7410 static void
   7411 android_glDrawTexsOES__SSSSS
   7412   (JNIEnv *_env, jobject _this, jshort x, jshort y, jshort z, jshort width, jshort height) {
   7413     glDrawTexsOES(
   7414         (GLshort)x,
   7415         (GLshort)y,
   7416         (GLshort)z,
   7417         (GLshort)width,
   7418         (GLshort)height
   7419     );
   7420 }
   7421 
   7422 /* void glDrawTexsvOES ( const GLshort *coords ) */
   7423 static void
   7424 android_glDrawTexsvOES___3SI
   7425   (JNIEnv *_env, jobject _this, jshortArray coords_ref, jint offset) {
   7426     jint _exception = 0;
   7427     const char * _exceptionType = NULL;
   7428     const char * _exceptionMessage = NULL;
   7429     GLshort *coords_base = (GLshort *) 0;
   7430     jint _remaining;
   7431     GLshort *coords = (GLshort *) 0;
   7432 
   7433     if (!coords_ref) {
   7434         _exception = 1;
   7435         _exceptionType = "java/lang/IllegalArgumentException";
   7436         _exceptionMessage = "coords == null";
   7437         goto exit;
   7438     }
   7439     if (offset < 0) {
   7440         _exception = 1;
   7441         _exceptionType = "java/lang/IllegalArgumentException";
   7442         _exceptionMessage = "offset < 0";
   7443         goto exit;
   7444     }
   7445     _remaining = _env->GetArrayLength(coords_ref) - offset;
   7446     if (_remaining < 5) {
   7447         _exception = 1;
   7448         _exceptionType = "java/lang/IllegalArgumentException";
   7449         _exceptionMessage = "length - offset < 5 < needed";
   7450         goto exit;
   7451     }
   7452     coords_base = (GLshort *)
   7453         _env->GetShortArrayElements(coords_ref, (jboolean *)0);
   7454     coords = coords_base + offset;
   7455 
   7456     glDrawTexsvOES(
   7457         (GLshort *)coords
   7458     );
   7459 
   7460 exit:
   7461     if (coords_base) {
   7462         _env->ReleaseShortArrayElements(coords_ref, (jshort*)coords_base,
   7463             JNI_ABORT);
   7464     }
   7465     if (_exception) {
   7466         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7467     }
   7468 }
   7469 
   7470 /* void glDrawTexsvOES ( const GLshort *coords ) */
   7471 static void
   7472 android_glDrawTexsvOES__Ljava_nio_ShortBuffer_2
   7473   (JNIEnv *_env, jobject _this, jobject coords_buf) {
   7474     jint _exception = 0;
   7475     const char * _exceptionType = NULL;
   7476     const char * _exceptionMessage = NULL;
   7477     jshortArray _array = (jshortArray) 0;
   7478     jint _bufferOffset = (jint) 0;
   7479     jint _remaining;
   7480     GLshort *coords = (GLshort *) 0;
   7481 
   7482     if (!coords_buf) {
   7483         _exception = 1;
   7484         _exceptionType = "java/lang/IllegalArgumentException";
   7485         _exceptionMessage = "coords == null";
   7486         goto exit;
   7487     }
   7488     coords = (GLshort *)getPointer(_env, coords_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   7489     if (_remaining < 5) {
   7490         _exception = 1;
   7491         _exceptionType = "java/lang/IllegalArgumentException";
   7492         _exceptionMessage = "remaining() < 5 < needed";
   7493         goto exit;
   7494     }
   7495     if (coords == NULL) {
   7496         char * _coordsBase = (char *)_env->GetShortArrayElements(_array, (jboolean *) 0);
   7497         coords = (GLshort *) (_coordsBase + _bufferOffset);
   7498     }
   7499     glDrawTexsvOES(
   7500         (GLshort *)coords
   7501     );
   7502 
   7503 exit:
   7504     if (_array) {
   7505         _env->ReleaseShortArrayElements(_array, (jshort*)coords, JNI_ABORT);
   7506     }
   7507     if (_exception) {
   7508         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7509     }
   7510 }
   7511 
   7512 /* void glDrawTexxOES ( GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height ) */
   7513 static void
   7514 android_glDrawTexxOES__IIIII
   7515   (JNIEnv *_env, jobject _this, jint x, jint y, jint z, jint width, jint height) {
   7516     glDrawTexxOES(
   7517         (GLfixed)x,
   7518         (GLfixed)y,
   7519         (GLfixed)z,
   7520         (GLfixed)width,
   7521         (GLfixed)height
   7522     );
   7523 }
   7524 
   7525 /* void glDrawTexxvOES ( const GLfixed *coords ) */
   7526 static void
   7527 android_glDrawTexxvOES___3II
   7528   (JNIEnv *_env, jobject _this, jintArray coords_ref, jint offset) {
   7529     jint _exception = 0;
   7530     const char * _exceptionType = NULL;
   7531     const char * _exceptionMessage = NULL;
   7532     GLfixed *coords_base = (GLfixed *) 0;
   7533     jint _remaining;
   7534     GLfixed *coords = (GLfixed *) 0;
   7535 
   7536     if (!coords_ref) {
   7537         _exception = 1;
   7538         _exceptionType = "java/lang/IllegalArgumentException";
   7539         _exceptionMessage = "coords == null";
   7540         goto exit;
   7541     }
   7542     if (offset < 0) {
   7543         _exception = 1;
   7544         _exceptionType = "java/lang/IllegalArgumentException";
   7545         _exceptionMessage = "offset < 0";
   7546         goto exit;
   7547     }
   7548     _remaining = _env->GetArrayLength(coords_ref) - offset;
   7549     if (_remaining < 5) {
   7550         _exception = 1;
   7551         _exceptionType = "java/lang/IllegalArgumentException";
   7552         _exceptionMessage = "length - offset < 5 < needed";
   7553         goto exit;
   7554     }
   7555     coords_base = (GLfixed *)
   7556         _env->GetIntArrayElements(coords_ref, (jboolean *)0);
   7557     coords = coords_base + offset;
   7558 
   7559     glDrawTexxvOES(
   7560         (GLfixed *)coords
   7561     );
   7562 
   7563 exit:
   7564     if (coords_base) {
   7565         _env->ReleaseIntArrayElements(coords_ref, (jint*)coords_base,
   7566             JNI_ABORT);
   7567     }
   7568     if (_exception) {
   7569         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7570     }
   7571 }
   7572 
   7573 /* void glDrawTexxvOES ( const GLfixed *coords ) */
   7574 static void
   7575 android_glDrawTexxvOES__Ljava_nio_IntBuffer_2
   7576   (JNIEnv *_env, jobject _this, jobject coords_buf) {
   7577     jint _exception = 0;
   7578     const char * _exceptionType = NULL;
   7579     const char * _exceptionMessage = NULL;
   7580     jintArray _array = (jintArray) 0;
   7581     jint _bufferOffset = (jint) 0;
   7582     jint _remaining;
   7583     GLfixed *coords = (GLfixed *) 0;
   7584 
   7585     if (!coords_buf) {
   7586         _exception = 1;
   7587         _exceptionType = "java/lang/IllegalArgumentException";
   7588         _exceptionMessage = "coords == null";
   7589         goto exit;
   7590     }
   7591     coords = (GLfixed *)getPointer(_env, coords_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   7592     if (_remaining < 5) {
   7593         _exception = 1;
   7594         _exceptionType = "java/lang/IllegalArgumentException";
   7595         _exceptionMessage = "remaining() < 5 < needed";
   7596         goto exit;
   7597     }
   7598     if (coords == NULL) {
   7599         char * _coordsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   7600         coords = (GLfixed *) (_coordsBase + _bufferOffset);
   7601     }
   7602     glDrawTexxvOES(
   7603         (GLfixed *)coords
   7604     );
   7605 
   7606 exit:
   7607     if (_array) {
   7608         _env->ReleaseIntArrayElements(_array, (jint*)coords, JNI_ABORT);
   7609     }
   7610     if (_exception) {
   7611         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7612     }
   7613 }
   7614 
   7615 /* void glLoadPaletteFromModelViewMatrixOES ( void ) */
   7616 static void
   7617 android_glLoadPaletteFromModelViewMatrixOES__
   7618   (JNIEnv *_env, jobject _this) {
   7619     glLoadPaletteFromModelViewMatrixOES();
   7620 }
   7621 
   7622 /* void glMatrixIndexPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
   7623 static void
   7624 android_glMatrixIndexPointerOESBounds__IIILjava_nio_Buffer_2I
   7625   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
   7626     jint _exception = 0;
   7627     const char * _exceptionType = NULL;
   7628     const char * _exceptionMessage = NULL;
   7629     jarray _array = (jarray) 0;
   7630     jint _bufferOffset = (jint) 0;
   7631     jint _remaining;
   7632     GLvoid *pointer = (GLvoid *) 0;
   7633 
   7634     if (pointer_buf) {
   7635         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
   7636         if ( ! pointer ) {
   7637             return;
   7638         }
   7639     }
   7640     glMatrixIndexPointerOESBounds(
   7641         (GLint)size,
   7642         (GLenum)type,
   7643         (GLsizei)stride,
   7644         (GLvoid *)pointer,
   7645         (GLsizei)remaining
   7646     );
   7647     if (_exception) {
   7648         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7649     }
   7650 }
   7651 
   7652 /* void glMatrixIndexPointerOES ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
   7653 static void
   7654 android_glMatrixIndexPointerOES__IIII
   7655   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) {
   7656     glMatrixIndexPointerOES(
   7657         (GLint)size,
   7658         (GLenum)type,
   7659         (GLsizei)stride,
   7660         reinterpret_cast<GLvoid *>(offset)
   7661     );
   7662 }
   7663 
   7664 /* void glWeightPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
   7665 static void
   7666 android_glWeightPointerOESBounds__IIILjava_nio_Buffer_2I
   7667   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
   7668     jint _exception = 0;
   7669     const char * _exceptionType = NULL;
   7670     const char * _exceptionMessage = NULL;
   7671     jarray _array = (jarray) 0;
   7672     jint _bufferOffset = (jint) 0;
   7673     jint _remaining;
   7674     GLvoid *pointer = (GLvoid *) 0;
   7675 
   7676     if (pointer_buf) {
   7677         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
   7678         if ( ! pointer ) {
   7679             return;
   7680         }
   7681     }
   7682     glWeightPointerOESBounds(
   7683         (GLint)size,
   7684         (GLenum)type,
   7685         (GLsizei)stride,
   7686         (GLvoid *)pointer,
   7687         (GLsizei)remaining
   7688     );
   7689     if (_exception) {
   7690         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7691     }
   7692 }
   7693 
   7694 /* void glWeightPointerOES ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
   7695 static void
   7696 android_glWeightPointerOES__IIII
   7697   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) {
   7698     glWeightPointerOES(
   7699         (GLint)size,
   7700         (GLenum)type,
   7701         (GLsizei)stride,
   7702         reinterpret_cast<GLvoid *>(offset)
   7703     );
   7704 }
   7705 
   7706 /* void glBindFramebufferOES ( GLint target, GLint framebuffer ) */
   7707 static void
   7708 android_glBindFramebufferOES__II
   7709   (JNIEnv *_env, jobject _this, jint target, jint framebuffer) {
   7710     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   7711         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   7712             "glBindFramebufferOES");
   7713             return;
   7714     }
   7715     glBindFramebufferOES(
   7716         (GLint)target,
   7717         (GLint)framebuffer
   7718     );
   7719 }
   7720 
   7721 /* void glBindRenderbufferOES ( GLint target, GLint renderbuffer ) */
   7722 static void
   7723 android_glBindRenderbufferOES__II
   7724   (JNIEnv *_env, jobject _this, jint target, jint renderbuffer) {
   7725     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   7726         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   7727             "glBindRenderbufferOES");
   7728             return;
   7729     }
   7730     glBindRenderbufferOES(
   7731         (GLint)target,
   7732         (GLint)renderbuffer
   7733     );
   7734 }
   7735 
   7736 /* void glBlendEquation ( GLint mode ) */
   7737 static void
   7738 android_glBlendEquation__I
   7739   (JNIEnv *_env, jobject _this, jint mode) {
   7740     if (! supportsExtension(_env, _this, have_OES_blend_subtractID)) {
   7741         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   7742             "glBlendEquation");
   7743             return;
   7744     }
   7745     glBlendEquation(
   7746         (GLint)mode
   7747     );
   7748 }
   7749 
   7750 /* void glBlendEquationSeparate ( GLint modeRGB, GLint modeAlpha ) */
   7751 static void
   7752 android_glBlendEquationSeparate__II
   7753   (JNIEnv *_env, jobject _this, jint modeRGB, jint modeAlpha) {
   7754     if (! supportsExtension(_env, _this, have_OES_blend_equation_separateID)) {
   7755         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   7756             "glBlendEquationSeparate");
   7757             return;
   7758     }
   7759     glBlendEquationSeparate(
   7760         (GLint)modeRGB,
   7761         (GLint)modeAlpha
   7762     );
   7763 }
   7764 
   7765 /* void glBlendFuncSeparate ( GLint srcRGB, GLint dstRGB, GLint srcAlpha, GLint dstAlpha ) */
   7766 static void
   7767 android_glBlendFuncSeparate__IIII
   7768   (JNIEnv *_env, jobject _this, jint srcRGB, jint dstRGB, jint srcAlpha, jint dstAlpha) {
   7769     if (! supportsExtension(_env, _this, have_OES_blend_equation_separateID)) {
   7770         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   7771             "glBlendFuncSeparate");
   7772             return;
   7773     }
   7774     glBlendFuncSeparate(
   7775         (GLint)srcRGB,
   7776         (GLint)dstRGB,
   7777         (GLint)srcAlpha,
   7778         (GLint)dstAlpha
   7779     );
   7780 }
   7781 
   7782 /* GLint glCheckFramebufferStatusOES ( GLint target ) */
   7783 static jint
   7784 android_glCheckFramebufferStatusOES__I
   7785   (JNIEnv *_env, jobject _this, jint target) {
   7786     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   7787         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   7788             "glCheckFramebufferStatusOES");
   7789     return 0;
   7790     }
   7791     GLint _returnValue = 0;
   7792     _returnValue = glCheckFramebufferStatusOES(
   7793         (GLint)target
   7794     );
   7795     return (jint)_returnValue;
   7796 }
   7797 
   7798 /* void glDeleteFramebuffersOES ( GLint n, GLuint *framebuffers ) */
   7799 static void
   7800 android_glDeleteFramebuffersOES__I_3II
   7801   (JNIEnv *_env, jobject _this, jint n, jintArray framebuffers_ref, jint offset) {
   7802     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   7803         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   7804             "glDeleteFramebuffersOES");
   7805             return;
   7806     }
   7807     jint _exception = 0;
   7808     const char * _exceptionType = NULL;
   7809     const char * _exceptionMessage = NULL;
   7810     GLuint *framebuffers_base = (GLuint *) 0;
   7811     jint _remaining;
   7812     GLuint *framebuffers = (GLuint *) 0;
   7813 
   7814     if (!framebuffers_ref) {
   7815         _exception = 1;
   7816         _exceptionType = "java/lang/IllegalArgumentException";
   7817         _exceptionMessage = "framebuffers == null";
   7818         goto exit;
   7819     }
   7820     if (offset < 0) {
   7821         _exception = 1;
   7822         _exceptionType = "java/lang/IllegalArgumentException";
   7823         _exceptionMessage = "offset < 0";
   7824         goto exit;
   7825     }
   7826     _remaining = _env->GetArrayLength(framebuffers_ref) - offset;
   7827     if (_remaining < n) {
   7828         _exception = 1;
   7829         _exceptionType = "java/lang/IllegalArgumentException";
   7830         _exceptionMessage = "length - offset < n < needed";
   7831         goto exit;
   7832     }
   7833     framebuffers_base = (GLuint *)
   7834         _env->GetIntArrayElements(framebuffers_ref, (jboolean *)0);
   7835     framebuffers = framebuffers_base + offset;
   7836 
   7837     glDeleteFramebuffersOES(
   7838         (GLint)n,
   7839         (GLuint *)framebuffers
   7840     );
   7841 
   7842 exit:
   7843     if (framebuffers_base) {
   7844         _env->ReleaseIntArrayElements(framebuffers_ref, (jint*)framebuffers_base,
   7845             _exception ? JNI_ABORT: 0);
   7846     }
   7847     if (_exception) {
   7848         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7849     }
   7850 }
   7851 
   7852 /* void glDeleteFramebuffersOES ( GLint n, GLuint *framebuffers ) */
   7853 static void
   7854 android_glDeleteFramebuffersOES__ILjava_nio_IntBuffer_2
   7855   (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) {
   7856     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   7857         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   7858             "glDeleteFramebuffersOES");
   7859             return;
   7860     }
   7861     jint _exception = 0;
   7862     const char * _exceptionType = NULL;
   7863     const char * _exceptionMessage = NULL;
   7864     jintArray _array = (jintArray) 0;
   7865     jint _bufferOffset = (jint) 0;
   7866     jint _remaining;
   7867     GLuint *framebuffers = (GLuint *) 0;
   7868 
   7869     if (!framebuffers_buf) {
   7870         _exception = 1;
   7871         _exceptionType = "java/lang/IllegalArgumentException";
   7872         _exceptionMessage = "framebuffers == null";
   7873         goto exit;
   7874     }
   7875     framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   7876     if (_remaining < n) {
   7877         _exception = 1;
   7878         _exceptionType = "java/lang/IllegalArgumentException";
   7879         _exceptionMessage = "remaining() < n < needed";
   7880         goto exit;
   7881     }
   7882     if (framebuffers == NULL) {
   7883         char * _framebuffersBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   7884         framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset);
   7885     }
   7886     glDeleteFramebuffersOES(
   7887         (GLint)n,
   7888         (GLuint *)framebuffers
   7889     );
   7890 
   7891 exit:
   7892     if (_array) {
   7893         _env->ReleaseIntArrayElements(_array, (jint*)framebuffers, _exception ? JNI_ABORT : 0);
   7894     }
   7895     if (_exception) {
   7896         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7897     }
   7898 }
   7899 
   7900 /* void glDeleteRenderbuffersOES ( GLint n, GLuint *renderbuffers ) */
   7901 static void
   7902 android_glDeleteRenderbuffersOES__I_3II
   7903   (JNIEnv *_env, jobject _this, jint n, jintArray renderbuffers_ref, jint offset) {
   7904     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   7905         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   7906             "glDeleteRenderbuffersOES");
   7907             return;
   7908     }
   7909     jint _exception = 0;
   7910     const char * _exceptionType = NULL;
   7911     const char * _exceptionMessage = NULL;
   7912     GLuint *renderbuffers_base = (GLuint *) 0;
   7913     jint _remaining;
   7914     GLuint *renderbuffers = (GLuint *) 0;
   7915 
   7916     if (!renderbuffers_ref) {
   7917         _exception = 1;
   7918         _exceptionType = "java/lang/IllegalArgumentException";
   7919         _exceptionMessage = "renderbuffers == null";
   7920         goto exit;
   7921     }
   7922     if (offset < 0) {
   7923         _exception = 1;
   7924         _exceptionType = "java/lang/IllegalArgumentException";
   7925         _exceptionMessage = "offset < 0";
   7926         goto exit;
   7927     }
   7928     _remaining = _env->GetArrayLength(renderbuffers_ref) - offset;
   7929     if (_remaining < n) {
   7930         _exception = 1;
   7931         _exceptionType = "java/lang/IllegalArgumentException";
   7932         _exceptionMessage = "length - offset < n < needed";
   7933         goto exit;
   7934     }
   7935     renderbuffers_base = (GLuint *)
   7936         _env->GetIntArrayElements(renderbuffers_ref, (jboolean *)0);
   7937     renderbuffers = renderbuffers_base + offset;
   7938 
   7939     glDeleteRenderbuffersOES(
   7940         (GLint)n,
   7941         (GLuint *)renderbuffers
   7942     );
   7943 
   7944 exit:
   7945     if (renderbuffers_base) {
   7946         _env->ReleaseIntArrayElements(renderbuffers_ref, (jint*)renderbuffers_base,
   7947             _exception ? JNI_ABORT: 0);
   7948     }
   7949     if (_exception) {
   7950         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7951     }
   7952 }
   7953 
   7954 /* void glDeleteRenderbuffersOES ( GLint n, GLuint *renderbuffers ) */
   7955 static void
   7956 android_glDeleteRenderbuffersOES__ILjava_nio_IntBuffer_2
   7957   (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) {
   7958     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   7959         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   7960             "glDeleteRenderbuffersOES");
   7961             return;
   7962     }
   7963     jint _exception = 0;
   7964     const char * _exceptionType = NULL;
   7965     const char * _exceptionMessage = NULL;
   7966     jintArray _array = (jintArray) 0;
   7967     jint _bufferOffset = (jint) 0;
   7968     jint _remaining;
   7969     GLuint *renderbuffers = (GLuint *) 0;
   7970 
   7971     if (!renderbuffers_buf) {
   7972         _exception = 1;
   7973         _exceptionType = "java/lang/IllegalArgumentException";
   7974         _exceptionMessage = "renderbuffers == null";
   7975         goto exit;
   7976     }
   7977     renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   7978     if (_remaining < n) {
   7979         _exception = 1;
   7980         _exceptionType = "java/lang/IllegalArgumentException";
   7981         _exceptionMessage = "remaining() < n < needed";
   7982         goto exit;
   7983     }
   7984     if (renderbuffers == NULL) {
   7985         char * _renderbuffersBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   7986         renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset);
   7987     }
   7988     glDeleteRenderbuffersOES(
   7989         (GLint)n,
   7990         (GLuint *)renderbuffers
   7991     );
   7992 
   7993 exit:
   7994     if (_array) {
   7995         _env->ReleaseIntArrayElements(_array, (jint*)renderbuffers, _exception ? JNI_ABORT : 0);
   7996     }
   7997     if (_exception) {
   7998         jniThrowException(_env, _exceptionType, _exceptionMessage);
   7999     }
   8000 }
   8001 
   8002 /* void glFramebufferRenderbufferOES ( GLint target, GLint attachment, GLint renderbuffertarget, GLint renderbuffer ) */
   8003 static void
   8004 android_glFramebufferRenderbufferOES__IIII
   8005   (JNIEnv *_env, jobject _this, jint target, jint attachment, jint renderbuffertarget, jint renderbuffer) {
   8006     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8007         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8008             "glFramebufferRenderbufferOES");
   8009             return;
   8010     }
   8011     glFramebufferRenderbufferOES(
   8012         (GLint)target,
   8013         (GLint)attachment,
   8014         (GLint)renderbuffertarget,
   8015         (GLint)renderbuffer
   8016     );
   8017 }
   8018 
   8019 /* void glFramebufferTexture2DOES ( GLint target, GLint attachment, GLint textarget, GLint texture, GLint level ) */
   8020 static void
   8021 android_glFramebufferTexture2DOES__IIIII
   8022   (JNIEnv *_env, jobject _this, jint target, jint attachment, jint textarget, jint texture, jint level) {
   8023     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8024         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8025             "glFramebufferTexture2DOES");
   8026             return;
   8027     }
   8028     glFramebufferTexture2DOES(
   8029         (GLint)target,
   8030         (GLint)attachment,
   8031         (GLint)textarget,
   8032         (GLint)texture,
   8033         (GLint)level
   8034     );
   8035 }
   8036 
   8037 /* void glGenerateMipmapOES ( GLint target ) */
   8038 static void
   8039 android_glGenerateMipmapOES__I
   8040   (JNIEnv *_env, jobject _this, jint target) {
   8041     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8042         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8043             "glGenerateMipmapOES");
   8044             return;
   8045     }
   8046     glGenerateMipmapOES(
   8047         (GLint)target
   8048     );
   8049 }
   8050 
   8051 /* void glGenFramebuffersOES ( GLint n, GLuint *framebuffers ) */
   8052 static void
   8053 android_glGenFramebuffersOES__I_3II
   8054   (JNIEnv *_env, jobject _this, jint n, jintArray framebuffers_ref, jint offset) {
   8055     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8056         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8057             "glGenFramebuffersOES");
   8058             return;
   8059     }
   8060     jint _exception = 0;
   8061     const char * _exceptionType = NULL;
   8062     const char * _exceptionMessage = NULL;
   8063     GLuint *framebuffers_base = (GLuint *) 0;
   8064     jint _remaining;
   8065     GLuint *framebuffers = (GLuint *) 0;
   8066 
   8067     if (!framebuffers_ref) {
   8068         _exception = 1;
   8069         _exceptionType = "java/lang/IllegalArgumentException";
   8070         _exceptionMessage = "framebuffers == null";
   8071         goto exit;
   8072     }
   8073     if (offset < 0) {
   8074         _exception = 1;
   8075         _exceptionType = "java/lang/IllegalArgumentException";
   8076         _exceptionMessage = "offset < 0";
   8077         goto exit;
   8078     }
   8079     _remaining = _env->GetArrayLength(framebuffers_ref) - offset;
   8080     if (_remaining < n) {
   8081         _exception = 1;
   8082         _exceptionType = "java/lang/IllegalArgumentException";
   8083         _exceptionMessage = "length - offset < n < needed";
   8084         goto exit;
   8085     }
   8086     framebuffers_base = (GLuint *)
   8087         _env->GetIntArrayElements(framebuffers_ref, (jboolean *)0);
   8088     framebuffers = framebuffers_base + offset;
   8089 
   8090     glGenFramebuffersOES(
   8091         (GLint)n,
   8092         (GLuint *)framebuffers
   8093     );
   8094 
   8095 exit:
   8096     if (framebuffers_base) {
   8097         _env->ReleaseIntArrayElements(framebuffers_ref, (jint*)framebuffers_base,
   8098             _exception ? JNI_ABORT: 0);
   8099     }
   8100     if (_exception) {
   8101         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8102     }
   8103 }
   8104 
   8105 /* void glGenFramebuffersOES ( GLint n, GLuint *framebuffers ) */
   8106 static void
   8107 android_glGenFramebuffersOES__ILjava_nio_IntBuffer_2
   8108   (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) {
   8109     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8110         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8111             "glGenFramebuffersOES");
   8112             return;
   8113     }
   8114     jint _exception = 0;
   8115     const char * _exceptionType = NULL;
   8116     const char * _exceptionMessage = NULL;
   8117     jintArray _array = (jintArray) 0;
   8118     jint _bufferOffset = (jint) 0;
   8119     jint _remaining;
   8120     GLuint *framebuffers = (GLuint *) 0;
   8121 
   8122     if (!framebuffers_buf) {
   8123         _exception = 1;
   8124         _exceptionType = "java/lang/IllegalArgumentException";
   8125         _exceptionMessage = "framebuffers == null";
   8126         goto exit;
   8127     }
   8128     framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   8129     if (_remaining < n) {
   8130         _exception = 1;
   8131         _exceptionType = "java/lang/IllegalArgumentException";
   8132         _exceptionMessage = "remaining() < n < needed";
   8133         goto exit;
   8134     }
   8135     if (framebuffers == NULL) {
   8136         char * _framebuffersBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   8137         framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset);
   8138     }
   8139     glGenFramebuffersOES(
   8140         (GLint)n,
   8141         (GLuint *)framebuffers
   8142     );
   8143 
   8144 exit:
   8145     if (_array) {
   8146         _env->ReleaseIntArrayElements(_array, (jint*)framebuffers, _exception ? JNI_ABORT : 0);
   8147     }
   8148     if (_exception) {
   8149         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8150     }
   8151 }
   8152 
   8153 /* void glGenRenderbuffersOES ( GLint n, GLuint *renderbuffers ) */
   8154 static void
   8155 android_glGenRenderbuffersOES__I_3II
   8156   (JNIEnv *_env, jobject _this, jint n, jintArray renderbuffers_ref, jint offset) {
   8157     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8158         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8159             "glGenRenderbuffersOES");
   8160             return;
   8161     }
   8162     jint _exception = 0;
   8163     const char * _exceptionType = NULL;
   8164     const char * _exceptionMessage = NULL;
   8165     GLuint *renderbuffers_base = (GLuint *) 0;
   8166     jint _remaining;
   8167     GLuint *renderbuffers = (GLuint *) 0;
   8168 
   8169     if (!renderbuffers_ref) {
   8170         _exception = 1;
   8171         _exceptionType = "java/lang/IllegalArgumentException";
   8172         _exceptionMessage = "renderbuffers == null";
   8173         goto exit;
   8174     }
   8175     if (offset < 0) {
   8176         _exception = 1;
   8177         _exceptionType = "java/lang/IllegalArgumentException";
   8178         _exceptionMessage = "offset < 0";
   8179         goto exit;
   8180     }
   8181     _remaining = _env->GetArrayLength(renderbuffers_ref) - offset;
   8182     if (_remaining < n) {
   8183         _exception = 1;
   8184         _exceptionType = "java/lang/IllegalArgumentException";
   8185         _exceptionMessage = "length - offset < n < needed";
   8186         goto exit;
   8187     }
   8188     renderbuffers_base = (GLuint *)
   8189         _env->GetIntArrayElements(renderbuffers_ref, (jboolean *)0);
   8190     renderbuffers = renderbuffers_base + offset;
   8191 
   8192     glGenRenderbuffersOES(
   8193         (GLint)n,
   8194         (GLuint *)renderbuffers
   8195     );
   8196 
   8197 exit:
   8198     if (renderbuffers_base) {
   8199         _env->ReleaseIntArrayElements(renderbuffers_ref, (jint*)renderbuffers_base,
   8200             _exception ? JNI_ABORT: 0);
   8201     }
   8202     if (_exception) {
   8203         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8204     }
   8205 }
   8206 
   8207 /* void glGenRenderbuffersOES ( GLint n, GLuint *renderbuffers ) */
   8208 static void
   8209 android_glGenRenderbuffersOES__ILjava_nio_IntBuffer_2
   8210   (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) {
   8211     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8212         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8213             "glGenRenderbuffersOES");
   8214             return;
   8215     }
   8216     jint _exception = 0;
   8217     const char * _exceptionType = NULL;
   8218     const char * _exceptionMessage = NULL;
   8219     jintArray _array = (jintArray) 0;
   8220     jint _bufferOffset = (jint) 0;
   8221     jint _remaining;
   8222     GLuint *renderbuffers = (GLuint *) 0;
   8223 
   8224     if (!renderbuffers_buf) {
   8225         _exception = 1;
   8226         _exceptionType = "java/lang/IllegalArgumentException";
   8227         _exceptionMessage = "renderbuffers == null";
   8228         goto exit;
   8229     }
   8230     renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   8231     if (_remaining < n) {
   8232         _exception = 1;
   8233         _exceptionType = "java/lang/IllegalArgumentException";
   8234         _exceptionMessage = "remaining() < n < needed";
   8235         goto exit;
   8236     }
   8237     if (renderbuffers == NULL) {
   8238         char * _renderbuffersBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   8239         renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset);
   8240     }
   8241     glGenRenderbuffersOES(
   8242         (GLint)n,
   8243         (GLuint *)renderbuffers
   8244     );
   8245 
   8246 exit:
   8247     if (_array) {
   8248         _env->ReleaseIntArrayElements(_array, (jint*)renderbuffers, _exception ? JNI_ABORT : 0);
   8249     }
   8250     if (_exception) {
   8251         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8252     }
   8253 }
   8254 
   8255 /* void glGetFramebufferAttachmentParameterivOES ( GLint target, GLint attachment, GLint pname, GLint *params ) */
   8256 static void
   8257 android_glGetFramebufferAttachmentParameterivOES__III_3II
   8258   (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jintArray params_ref, jint offset) {
   8259     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8260         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8261             "glGetFramebufferAttachmentParameterivOES");
   8262             return;
   8263     }
   8264     jint _exception = 0;
   8265     const char * _exceptionType = NULL;
   8266     const char * _exceptionMessage = NULL;
   8267     GLint *params_base = (GLint *) 0;
   8268     jint _remaining;
   8269     GLint *params = (GLint *) 0;
   8270 
   8271     if (!params_ref) {
   8272         _exception = 1;
   8273         _exceptionType = "java/lang/IllegalArgumentException";
   8274         _exceptionMessage = "params == null";
   8275         goto exit;
   8276     }
   8277     if (offset < 0) {
   8278         _exception = 1;
   8279         _exceptionType = "java/lang/IllegalArgumentException";
   8280         _exceptionMessage = "offset < 0";
   8281         goto exit;
   8282     }
   8283     _remaining = _env->GetArrayLength(params_ref) - offset;
   8284     params_base = (GLint *)
   8285         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   8286     params = params_base + offset;
   8287 
   8288     glGetFramebufferAttachmentParameterivOES(
   8289         (GLint)target,
   8290         (GLint)attachment,
   8291         (GLint)pname,
   8292         (GLint *)params
   8293     );
   8294 
   8295 exit:
   8296     if (params_base) {
   8297         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   8298             _exception ? JNI_ABORT: 0);
   8299     }
   8300     if (_exception) {
   8301         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8302     }
   8303 }
   8304 
   8305 /* void glGetFramebufferAttachmentParameterivOES ( GLint target, GLint attachment, GLint pname, GLint *params ) */
   8306 static void
   8307 android_glGetFramebufferAttachmentParameterivOES__IIILjava_nio_IntBuffer_2
   8308   (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jobject params_buf) {
   8309     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8310         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8311             "glGetFramebufferAttachmentParameterivOES");
   8312             return;
   8313     }
   8314     jint _exception = 0;
   8315     const char * _exceptionType = NULL;
   8316     const char * _exceptionMessage = NULL;
   8317     jintArray _array = (jintArray) 0;
   8318     jint _bufferOffset = (jint) 0;
   8319     jint _remaining;
   8320     GLint *params = (GLint *) 0;
   8321 
   8322     if (!params_buf) {
   8323         _exception = 1;
   8324         _exceptionType = "java/lang/IllegalArgumentException";
   8325         _exceptionMessage = "params == null";
   8326         goto exit;
   8327     }
   8328     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   8329     if (params == NULL) {
   8330         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   8331         params = (GLint *) (_paramsBase + _bufferOffset);
   8332     }
   8333     glGetFramebufferAttachmentParameterivOES(
   8334         (GLint)target,
   8335         (GLint)attachment,
   8336         (GLint)pname,
   8337         (GLint *)params
   8338     );
   8339 
   8340 exit:
   8341     if (_array) {
   8342         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   8343     }
   8344     if (_exception) {
   8345         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8346     }
   8347 }
   8348 
   8349 /* void glGetRenderbufferParameterivOES ( GLint target, GLint pname, GLint *params ) */
   8350 static void
   8351 android_glGetRenderbufferParameterivOES__II_3II
   8352   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
   8353     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8354         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8355             "glGetRenderbufferParameterivOES");
   8356             return;
   8357     }
   8358     jint _exception = 0;
   8359     const char * _exceptionType = NULL;
   8360     const char * _exceptionMessage = NULL;
   8361     GLint *params_base = (GLint *) 0;
   8362     jint _remaining;
   8363     GLint *params = (GLint *) 0;
   8364 
   8365     if (!params_ref) {
   8366         _exception = 1;
   8367         _exceptionType = "java/lang/IllegalArgumentException";
   8368         _exceptionMessage = "params == null";
   8369         goto exit;
   8370     }
   8371     if (offset < 0) {
   8372         _exception = 1;
   8373         _exceptionType = "java/lang/IllegalArgumentException";
   8374         _exceptionMessage = "offset < 0";
   8375         goto exit;
   8376     }
   8377     _remaining = _env->GetArrayLength(params_ref) - offset;
   8378     params_base = (GLint *)
   8379         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   8380     params = params_base + offset;
   8381 
   8382     glGetRenderbufferParameterivOES(
   8383         (GLint)target,
   8384         (GLint)pname,
   8385         (GLint *)params
   8386     );
   8387 
   8388 exit:
   8389     if (params_base) {
   8390         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   8391             _exception ? JNI_ABORT: 0);
   8392     }
   8393     if (_exception) {
   8394         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8395     }
   8396 }
   8397 
   8398 /* void glGetRenderbufferParameterivOES ( GLint target, GLint pname, GLint *params ) */
   8399 static void
   8400 android_glGetRenderbufferParameterivOES__IILjava_nio_IntBuffer_2
   8401   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
   8402     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8403         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8404             "glGetRenderbufferParameterivOES");
   8405             return;
   8406     }
   8407     jint _exception = 0;
   8408     const char * _exceptionType = NULL;
   8409     const char * _exceptionMessage = NULL;
   8410     jintArray _array = (jintArray) 0;
   8411     jint _bufferOffset = (jint) 0;
   8412     jint _remaining;
   8413     GLint *params = (GLint *) 0;
   8414 
   8415     if (!params_buf) {
   8416         _exception = 1;
   8417         _exceptionType = "java/lang/IllegalArgumentException";
   8418         _exceptionMessage = "params == null";
   8419         goto exit;
   8420     }
   8421     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   8422     if (params == NULL) {
   8423         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   8424         params = (GLint *) (_paramsBase + _bufferOffset);
   8425     }
   8426     glGetRenderbufferParameterivOES(
   8427         (GLint)target,
   8428         (GLint)pname,
   8429         (GLint *)params
   8430     );
   8431 
   8432 exit:
   8433     if (_array) {
   8434         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   8435     }
   8436     if (_exception) {
   8437         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8438     }
   8439 }
   8440 
   8441 /* void glGetTexGenfv ( GLint coord, GLint pname, GLfloat *params ) */
   8442 static void
   8443 android_glGetTexGenfv__II_3FI
   8444   (JNIEnv *_env, jobject _this, jint coord, jint pname, jfloatArray params_ref, jint offset) {
   8445     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   8446         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8447             "glGetTexGenfv");
   8448             return;
   8449     }
   8450     jint _exception = 0;
   8451     const char * _exceptionType = NULL;
   8452     const char * _exceptionMessage = NULL;
   8453     GLfloat *params_base = (GLfloat *) 0;
   8454     jint _remaining;
   8455     GLfloat *params = (GLfloat *) 0;
   8456 
   8457     if (!params_ref) {
   8458         _exception = 1;
   8459         _exceptionType = "java/lang/IllegalArgumentException";
   8460         _exceptionMessage = "params == null";
   8461         goto exit;
   8462     }
   8463     if (offset < 0) {
   8464         _exception = 1;
   8465         _exceptionType = "java/lang/IllegalArgumentException";
   8466         _exceptionMessage = "offset < 0";
   8467         goto exit;
   8468     }
   8469     _remaining = _env->GetArrayLength(params_ref) - offset;
   8470     params_base = (GLfloat *)
   8471         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
   8472     params = params_base + offset;
   8473 
   8474     glGetTexGenfv(
   8475         (GLint)coord,
   8476         (GLint)pname,
   8477         (GLfloat *)params
   8478     );
   8479 
   8480 exit:
   8481     if (params_base) {
   8482         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
   8483             _exception ? JNI_ABORT: 0);
   8484     }
   8485     if (_exception) {
   8486         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8487     }
   8488 }
   8489 
   8490 /* void glGetTexGenfv ( GLint coord, GLint pname, GLfloat *params ) */
   8491 static void
   8492 android_glGetTexGenfv__IILjava_nio_FloatBuffer_2
   8493   (JNIEnv *_env, jobject _this, jint coord, jint pname, jobject params_buf) {
   8494     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   8495         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8496             "glGetTexGenfv");
   8497             return;
   8498     }
   8499     jint _exception = 0;
   8500     const char * _exceptionType = NULL;
   8501     const char * _exceptionMessage = NULL;
   8502     jfloatArray _array = (jfloatArray) 0;
   8503     jint _bufferOffset = (jint) 0;
   8504     jint _remaining;
   8505     GLfloat *params = (GLfloat *) 0;
   8506 
   8507     if (!params_buf) {
   8508         _exception = 1;
   8509         _exceptionType = "java/lang/IllegalArgumentException";
   8510         _exceptionMessage = "params == null";
   8511         goto exit;
   8512     }
   8513     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   8514     if (params == NULL) {
   8515         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   8516         params = (GLfloat *) (_paramsBase + _bufferOffset);
   8517     }
   8518     glGetTexGenfv(
   8519         (GLint)coord,
   8520         (GLint)pname,
   8521         (GLfloat *)params
   8522     );
   8523 
   8524 exit:
   8525     if (_array) {
   8526         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, _exception ? JNI_ABORT : 0);
   8527     }
   8528     if (_exception) {
   8529         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8530     }
   8531 }
   8532 
   8533 /* void glGetTexGeniv ( GLint coord, GLint pname, GLint *params ) */
   8534 static void
   8535 android_glGetTexGeniv__II_3II
   8536   (JNIEnv *_env, jobject _this, jint coord, jint pname, jintArray params_ref, jint offset) {
   8537     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   8538         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8539             "glGetTexGeniv");
   8540             return;
   8541     }
   8542     jint _exception = 0;
   8543     const char * _exceptionType = NULL;
   8544     const char * _exceptionMessage = NULL;
   8545     GLint *params_base = (GLint *) 0;
   8546     jint _remaining;
   8547     GLint *params = (GLint *) 0;
   8548 
   8549     if (!params_ref) {
   8550         _exception = 1;
   8551         _exceptionType = "java/lang/IllegalArgumentException";
   8552         _exceptionMessage = "params == null";
   8553         goto exit;
   8554     }
   8555     if (offset < 0) {
   8556         _exception = 1;
   8557         _exceptionType = "java/lang/IllegalArgumentException";
   8558         _exceptionMessage = "offset < 0";
   8559         goto exit;
   8560     }
   8561     _remaining = _env->GetArrayLength(params_ref) - offset;
   8562     params_base = (GLint *)
   8563         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   8564     params = params_base + offset;
   8565 
   8566     glGetTexGeniv(
   8567         (GLint)coord,
   8568         (GLint)pname,
   8569         (GLint *)params
   8570     );
   8571 
   8572 exit:
   8573     if (params_base) {
   8574         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   8575             _exception ? JNI_ABORT: 0);
   8576     }
   8577     if (_exception) {
   8578         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8579     }
   8580 }
   8581 
   8582 /* void glGetTexGeniv ( GLint coord, GLint pname, GLint *params ) */
   8583 static void
   8584 android_glGetTexGeniv__IILjava_nio_IntBuffer_2
   8585   (JNIEnv *_env, jobject _this, jint coord, jint pname, jobject params_buf) {
   8586     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   8587         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8588             "glGetTexGeniv");
   8589             return;
   8590     }
   8591     jint _exception = 0;
   8592     const char * _exceptionType = NULL;
   8593     const char * _exceptionMessage = NULL;
   8594     jintArray _array = (jintArray) 0;
   8595     jint _bufferOffset = (jint) 0;
   8596     jint _remaining;
   8597     GLint *params = (GLint *) 0;
   8598 
   8599     if (!params_buf) {
   8600         _exception = 1;
   8601         _exceptionType = "java/lang/IllegalArgumentException";
   8602         _exceptionMessage = "params == null";
   8603         goto exit;
   8604     }
   8605     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   8606     if (params == NULL) {
   8607         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   8608         params = (GLint *) (_paramsBase + _bufferOffset);
   8609     }
   8610     glGetTexGeniv(
   8611         (GLint)coord,
   8612         (GLint)pname,
   8613         (GLint *)params
   8614     );
   8615 
   8616 exit:
   8617     if (_array) {
   8618         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   8619     }
   8620     if (_exception) {
   8621         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8622     }
   8623 }
   8624 
   8625 /* void glGetTexGenxv ( GLint coord, GLint pname, GLint *params ) */
   8626 static void
   8627 android_glGetTexGenxv__II_3II
   8628   (JNIEnv *_env, jobject _this, jint coord, jint pname, jintArray params_ref, jint offset) {
   8629     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   8630         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8631             "glGetTexGenxv");
   8632             return;
   8633     }
   8634     jint _exception = 0;
   8635     const char * _exceptionType = NULL;
   8636     const char * _exceptionMessage = NULL;
   8637     GLint *params_base = (GLint *) 0;
   8638     jint _remaining;
   8639     GLint *params = (GLint *) 0;
   8640 
   8641     if (!params_ref) {
   8642         _exception = 1;
   8643         _exceptionType = "java/lang/IllegalArgumentException";
   8644         _exceptionMessage = "params == null";
   8645         goto exit;
   8646     }
   8647     if (offset < 0) {
   8648         _exception = 1;
   8649         _exceptionType = "java/lang/IllegalArgumentException";
   8650         _exceptionMessage = "offset < 0";
   8651         goto exit;
   8652     }
   8653     _remaining = _env->GetArrayLength(params_ref) - offset;
   8654     params_base = (GLint *)
   8655         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   8656     params = params_base + offset;
   8657 
   8658     glGetTexGenxv(
   8659         (GLint)coord,
   8660         (GLint)pname,
   8661         (GLint *)params
   8662     );
   8663 
   8664 exit:
   8665     if (params_base) {
   8666         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   8667             _exception ? JNI_ABORT: 0);
   8668     }
   8669     if (_exception) {
   8670         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8671     }
   8672 }
   8673 
   8674 /* void glGetTexGenxv ( GLint coord, GLint pname, GLint *params ) */
   8675 static void
   8676 android_glGetTexGenxv__IILjava_nio_IntBuffer_2
   8677   (JNIEnv *_env, jobject _this, jint coord, jint pname, jobject params_buf) {
   8678     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   8679         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8680             "glGetTexGenxv");
   8681             return;
   8682     }
   8683     jint _exception = 0;
   8684     const char * _exceptionType = NULL;
   8685     const char * _exceptionMessage = NULL;
   8686     jintArray _array = (jintArray) 0;
   8687     jint _bufferOffset = (jint) 0;
   8688     jint _remaining;
   8689     GLint *params = (GLint *) 0;
   8690 
   8691     if (!params_buf) {
   8692         _exception = 1;
   8693         _exceptionType = "java/lang/IllegalArgumentException";
   8694         _exceptionMessage = "params == null";
   8695         goto exit;
   8696     }
   8697     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   8698     if (params == NULL) {
   8699         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   8700         params = (GLint *) (_paramsBase + _bufferOffset);
   8701     }
   8702     glGetTexGenxv(
   8703         (GLint)coord,
   8704         (GLint)pname,
   8705         (GLint *)params
   8706     );
   8707 
   8708 exit:
   8709     if (_array) {
   8710         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   8711     }
   8712     if (_exception) {
   8713         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8714     }
   8715 }
   8716 
   8717 /* GLboolean glIsFramebufferOES ( GLint framebuffer ) */
   8718 static jboolean
   8719 android_glIsFramebufferOES__I
   8720   (JNIEnv *_env, jobject _this, jint framebuffer) {
   8721     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8722         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8723             "glIsFramebufferOES");
   8724     return JNI_FALSE;
   8725     }
   8726     GLboolean _returnValue = JNI_FALSE;
   8727     _returnValue = glIsFramebufferOES(
   8728         (GLint)framebuffer
   8729     );
   8730     return (jboolean)_returnValue;
   8731 }
   8732 
   8733 /* GLboolean glIsRenderbufferOES ( GLint renderbuffer ) */
   8734 static jboolean
   8735 android_glIsRenderbufferOES__I
   8736   (JNIEnv *_env, jobject _this, jint renderbuffer) {
   8737     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8738         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8739             "glIsRenderbufferOES");
   8740     return JNI_FALSE;
   8741     }
   8742     GLboolean _returnValue = JNI_FALSE;
   8743     _returnValue = glIsRenderbufferOES(
   8744         (GLint)renderbuffer
   8745     );
   8746     return (jboolean)_returnValue;
   8747 }
   8748 
   8749 /* void glRenderbufferStorageOES ( GLint target, GLint internalformat, GLint width, GLint height ) */
   8750 static void
   8751 android_glRenderbufferStorageOES__IIII
   8752   (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint width, jint height) {
   8753     if (! supportsExtension(_env, _this, have_OES_framebuffer_objectID)) {
   8754         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8755             "glRenderbufferStorageOES");
   8756             return;
   8757     }
   8758     glRenderbufferStorageOES(
   8759         (GLint)target,
   8760         (GLint)internalformat,
   8761         (GLint)width,
   8762         (GLint)height
   8763     );
   8764 }
   8765 
   8766 /* void glTexGenf ( GLint coord, GLint pname, GLfloat param ) */
   8767 static void
   8768 android_glTexGenf__IIF
   8769   (JNIEnv *_env, jobject _this, jint coord, jint pname, jfloat param) {
   8770     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   8771         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8772             "glTexGenf");
   8773             return;
   8774     }
   8775     glTexGenf(
   8776         (GLint)coord,
   8777         (GLint)pname,
   8778         (GLfloat)param
   8779     );
   8780 }
   8781 
   8782 /* void glTexGenfv ( GLint coord, GLint pname, GLfloat *params ) */
   8783 static void
   8784 android_glTexGenfv__II_3FI
   8785   (JNIEnv *_env, jobject _this, jint coord, jint pname, jfloatArray params_ref, jint offset) {
   8786     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   8787         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8788             "glTexGenfv");
   8789             return;
   8790     }
   8791     jint _exception = 0;
   8792     const char * _exceptionType = NULL;
   8793     const char * _exceptionMessage = NULL;
   8794     GLfloat *params_base = (GLfloat *) 0;
   8795     jint _remaining;
   8796     GLfloat *params = (GLfloat *) 0;
   8797 
   8798     if (!params_ref) {
   8799         _exception = 1;
   8800         _exceptionType = "java/lang/IllegalArgumentException";
   8801         _exceptionMessage = "params == null";
   8802         goto exit;
   8803     }
   8804     if (offset < 0) {
   8805         _exception = 1;
   8806         _exceptionType = "java/lang/IllegalArgumentException";
   8807         _exceptionMessage = "offset < 0";
   8808         goto exit;
   8809     }
   8810     _remaining = _env->GetArrayLength(params_ref) - offset;
   8811     params_base = (GLfloat *)
   8812         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
   8813     params = params_base + offset;
   8814 
   8815     glTexGenfv(
   8816         (GLint)coord,
   8817         (GLint)pname,
   8818         (GLfloat *)params
   8819     );
   8820 
   8821 exit:
   8822     if (params_base) {
   8823         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
   8824             _exception ? JNI_ABORT: 0);
   8825     }
   8826     if (_exception) {
   8827         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8828     }
   8829 }
   8830 
   8831 /* void glTexGenfv ( GLint coord, GLint pname, GLfloat *params ) */
   8832 static void
   8833 android_glTexGenfv__IILjava_nio_FloatBuffer_2
   8834   (JNIEnv *_env, jobject _this, jint coord, jint pname, jobject params_buf) {
   8835     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   8836         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8837             "glTexGenfv");
   8838             return;
   8839     }
   8840     jint _exception = 0;
   8841     const char * _exceptionType = NULL;
   8842     const char * _exceptionMessage = NULL;
   8843     jfloatArray _array = (jfloatArray) 0;
   8844     jint _bufferOffset = (jint) 0;
   8845     jint _remaining;
   8846     GLfloat *params = (GLfloat *) 0;
   8847 
   8848     if (!params_buf) {
   8849         _exception = 1;
   8850         _exceptionType = "java/lang/IllegalArgumentException";
   8851         _exceptionMessage = "params == null";
   8852         goto exit;
   8853     }
   8854     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   8855     if (params == NULL) {
   8856         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
   8857         params = (GLfloat *) (_paramsBase + _bufferOffset);
   8858     }
   8859     glTexGenfv(
   8860         (GLint)coord,
   8861         (GLint)pname,
   8862         (GLfloat *)params
   8863     );
   8864 
   8865 exit:
   8866     if (_array) {
   8867         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, _exception ? JNI_ABORT : 0);
   8868     }
   8869     if (_exception) {
   8870         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8871     }
   8872 }
   8873 
   8874 /* void glTexGeni ( GLint coord, GLint pname, GLint param ) */
   8875 static void
   8876 android_glTexGeni__III
   8877   (JNIEnv *_env, jobject _this, jint coord, jint pname, jint param) {
   8878     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   8879         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8880             "glTexGeni");
   8881             return;
   8882     }
   8883     glTexGeni(
   8884         (GLint)coord,
   8885         (GLint)pname,
   8886         (GLint)param
   8887     );
   8888 }
   8889 
   8890 /* void glTexGeniv ( GLint coord, GLint pname, GLint *params ) */
   8891 static void
   8892 android_glTexGeniv__II_3II
   8893   (JNIEnv *_env, jobject _this, jint coord, jint pname, jintArray params_ref, jint offset) {
   8894     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   8895         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8896             "glTexGeniv");
   8897             return;
   8898     }
   8899     jint _exception = 0;
   8900     const char * _exceptionType = NULL;
   8901     const char * _exceptionMessage = NULL;
   8902     GLint *params_base = (GLint *) 0;
   8903     jint _remaining;
   8904     GLint *params = (GLint *) 0;
   8905 
   8906     if (!params_ref) {
   8907         _exception = 1;
   8908         _exceptionType = "java/lang/IllegalArgumentException";
   8909         _exceptionMessage = "params == null";
   8910         goto exit;
   8911     }
   8912     if (offset < 0) {
   8913         _exception = 1;
   8914         _exceptionType = "java/lang/IllegalArgumentException";
   8915         _exceptionMessage = "offset < 0";
   8916         goto exit;
   8917     }
   8918     _remaining = _env->GetArrayLength(params_ref) - offset;
   8919     params_base = (GLint *)
   8920         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   8921     params = params_base + offset;
   8922 
   8923     glTexGeniv(
   8924         (GLint)coord,
   8925         (GLint)pname,
   8926         (GLint *)params
   8927     );
   8928 
   8929 exit:
   8930     if (params_base) {
   8931         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   8932             _exception ? JNI_ABORT: 0);
   8933     }
   8934     if (_exception) {
   8935         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8936     }
   8937 }
   8938 
   8939 /* void glTexGeniv ( GLint coord, GLint pname, GLint *params ) */
   8940 static void
   8941 android_glTexGeniv__IILjava_nio_IntBuffer_2
   8942   (JNIEnv *_env, jobject _this, jint coord, jint pname, jobject params_buf) {
   8943     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   8944         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8945             "glTexGeniv");
   8946             return;
   8947     }
   8948     jint _exception = 0;
   8949     const char * _exceptionType = NULL;
   8950     const char * _exceptionMessage = NULL;
   8951     jintArray _array = (jintArray) 0;
   8952     jint _bufferOffset = (jint) 0;
   8953     jint _remaining;
   8954     GLint *params = (GLint *) 0;
   8955 
   8956     if (!params_buf) {
   8957         _exception = 1;
   8958         _exceptionType = "java/lang/IllegalArgumentException";
   8959         _exceptionMessage = "params == null";
   8960         goto exit;
   8961     }
   8962     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   8963     if (params == NULL) {
   8964         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   8965         params = (GLint *) (_paramsBase + _bufferOffset);
   8966     }
   8967     glTexGeniv(
   8968         (GLint)coord,
   8969         (GLint)pname,
   8970         (GLint *)params
   8971     );
   8972 
   8973 exit:
   8974     if (_array) {
   8975         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   8976     }
   8977     if (_exception) {
   8978         jniThrowException(_env, _exceptionType, _exceptionMessage);
   8979     }
   8980 }
   8981 
   8982 /* void glTexGenx ( GLint coord, GLint pname, GLint param ) */
   8983 static void
   8984 android_glTexGenx__III
   8985   (JNIEnv *_env, jobject _this, jint coord, jint pname, jint param) {
   8986     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   8987         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   8988             "glTexGenx");
   8989             return;
   8990     }
   8991     glTexGenx(
   8992         (GLint)coord,
   8993         (GLint)pname,
   8994         (GLint)param
   8995     );
   8996 }
   8997 
   8998 /* void glTexGenxv ( GLint coord, GLint pname, GLint *params ) */
   8999 static void
   9000 android_glTexGenxv__II_3II
   9001   (JNIEnv *_env, jobject _this, jint coord, jint pname, jintArray params_ref, jint offset) {
   9002     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   9003         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   9004             "glTexGenxv");
   9005             return;
   9006     }
   9007     jint _exception = 0;
   9008     const char * _exceptionType = NULL;
   9009     const char * _exceptionMessage = NULL;
   9010     GLint *params_base = (GLint *) 0;
   9011     jint _remaining;
   9012     GLint *params = (GLint *) 0;
   9013 
   9014     if (!params_ref) {
   9015         _exception = 1;
   9016         _exceptionType = "java/lang/IllegalArgumentException";
   9017         _exceptionMessage = "params == null";
   9018         goto exit;
   9019     }
   9020     if (offset < 0) {
   9021         _exception = 1;
   9022         _exceptionType = "java/lang/IllegalArgumentException";
   9023         _exceptionMessage = "offset < 0";
   9024         goto exit;
   9025     }
   9026     _remaining = _env->GetArrayLength(params_ref) - offset;
   9027     params_base = (GLint *)
   9028         _env->GetIntArrayElements(params_ref, (jboolean *)0);
   9029     params = params_base + offset;
   9030 
   9031     glTexGenxv(
   9032         (GLint)coord,
   9033         (GLint)pname,
   9034         (GLint *)params
   9035     );
   9036 
   9037 exit:
   9038     if (params_base) {
   9039         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
   9040             _exception ? JNI_ABORT: 0);
   9041     }
   9042     if (_exception) {
   9043         jniThrowException(_env, _exceptionType, _exceptionMessage);
   9044     }
   9045 }
   9046 
   9047 /* void glTexGenxv ( GLint coord, GLint pname, GLint *params ) */
   9048 static void
   9049 android_glTexGenxv__IILjava_nio_IntBuffer_2
   9050   (JNIEnv *_env, jobject _this, jint coord, jint pname, jobject params_buf) {
   9051     if (! supportsExtension(_env, _this, have_OES_texture_cube_mapID)) {
   9052         jniThrowException(_env, "java/lang/UnsupportedOperationException",
   9053             "glTexGenxv");
   9054             return;
   9055     }
   9056     jint _exception = 0;
   9057     const char * _exceptionType = NULL;
   9058     const char * _exceptionMessage = NULL;
   9059     jintArray _array = (jintArray) 0;
   9060     jint _bufferOffset = (jint) 0;
   9061     jint _remaining;
   9062     GLint *params = (GLint *) 0;
   9063 
   9064     if (!params_buf) {
   9065         _exception = 1;
   9066         _exceptionType = "java/lang/IllegalArgumentException";
   9067         _exceptionMessage = "params == null";
   9068         goto exit;
   9069     }
   9070     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
   9071     if (params == NULL) {
   9072         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
   9073         params = (GLint *) (_paramsBase + _bufferOffset);
   9074     }
   9075     glTexGenxv(
   9076         (GLint)coord,
   9077         (GLint)pname,
   9078         (GLint *)params
   9079     );
   9080 
   9081 exit:
   9082     if (_array) {
   9083         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
   9084     }
   9085     if (_exception) {
   9086         jniThrowException(_env, _exceptionType, _exceptionMessage);
   9087     }
   9088 }
   9089 
   9090 static const char *classPathName = "com/google/android/gles_jni/GLImpl";
   9091 
   9092 static const JNINativeMethod methods[] = {
   9093 {"_nativeClassInit", "()V", (void*)nativeClassInit },
   9094 {"glActiveTexture", "(I)V", (void *) android_glActiveTexture__I },
   9095 {"glAlphaFunc", "(IF)V", (void *) android_glAlphaFunc__IF },
   9096 {"glAlphaFuncx", "(II)V", (void *) android_glAlphaFuncx__II },
   9097 {"glBindTexture", "(II)V", (void *) android_glBindTexture__II },
   9098 {"glBlendFunc", "(II)V", (void *) android_glBlendFunc__II },
   9099 {"glClear", "(I)V", (void *) android_glClear__I },
   9100 {"glClearColor", "(FFFF)V", (void *) android_glClearColor__FFFF },
   9101 {"glClearColorx", "(IIII)V", (void *) android_glClearColorx__IIII },
   9102 {"glClearDepthf", "(F)V", (void *) android_glClearDepthf__F },
   9103 {"glClearDepthx", "(I)V", (void *) android_glClearDepthx__I },
   9104 {"glClearStencil", "(I)V", (void *) android_glClearStencil__I },
   9105 {"glClientActiveTexture", "(I)V", (void *) android_glClientActiveTexture__I },
   9106 {"glColor4f", "(FFFF)V", (void *) android_glColor4f__FFFF },
   9107 {"glColor4x", "(IIII)V", (void *) android_glColor4x__IIII },
   9108 {"glColorMask", "(ZZZZ)V", (void *) android_glColorMask__ZZZZ },
   9109 {"glColorPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glColorPointerBounds__IIILjava_nio_Buffer_2I },
   9110 {"glCompressedTexImage2D", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 },
   9111 {"glCompressedTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
   9112 {"glCopyTexImage2D", "(IIIIIIII)V", (void *) android_glCopyTexImage2D__IIIIIIII },
   9113 {"glCopyTexSubImage2D", "(IIIIIIII)V", (void *) android_glCopyTexSubImage2D__IIIIIIII },
   9114 {"glCullFace", "(I)V", (void *) android_glCullFace__I },
   9115 {"glDeleteTextures", "(I[II)V", (void *) android_glDeleteTextures__I_3II },
   9116 {"glDeleteTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTextures__ILjava_nio_IntBuffer_2 },
   9117 {"glDepthFunc", "(I)V", (void *) android_glDepthFunc__I },
   9118 {"glDepthMask", "(Z)V", (void *) android_glDepthMask__Z },
   9119 {"glDepthRangef", "(FF)V", (void *) android_glDepthRangef__FF },
   9120 {"glDepthRangex", "(II)V", (void *) android_glDepthRangex__II },
   9121 {"glDisable", "(I)V", (void *) android_glDisable__I },
   9122 {"glDisableClientState", "(I)V", (void *) android_glDisableClientState__I },
   9123 {"glDrawArrays", "(III)V", (void *) android_glDrawArrays__III },
   9124 {"glDrawElements", "(IIILjava/nio/Buffer;)V", (void *) android_glDrawElements__IIILjava_nio_Buffer_2 },
   9125 {"glEnable", "(I)V", (void *) android_glEnable__I },
   9126 {"glEnableClientState", "(I)V", (void *) android_glEnableClientState__I },
   9127 {"glFinish", "()V", (void *) android_glFinish__ },
   9128 {"glFlush", "()V", (void *) android_glFlush__ },
   9129 {"glFogf", "(IF)V", (void *) android_glFogf__IF },
   9130 {"glFogfv", "(I[FI)V", (void *) android_glFogfv__I_3FI },
   9131 {"glFogfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glFogfv__ILjava_nio_FloatBuffer_2 },
   9132 {"glFogx", "(II)V", (void *) android_glFogx__II },
   9133 {"glFogxv", "(I[II)V", (void *) android_glFogxv__I_3II },
   9134 {"glFogxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glFogxv__ILjava_nio_IntBuffer_2 },
   9135 {"glFrontFace", "(I)V", (void *) android_glFrontFace__I },
   9136 {"glFrustumf", "(FFFFFF)V", (void *) android_glFrustumf__FFFFFF },
   9137 {"glFrustumx", "(IIIIII)V", (void *) android_glFrustumx__IIIIII },
   9138 {"glGenTextures", "(I[II)V", (void *) android_glGenTextures__I_3II },
   9139 {"glGenTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTextures__ILjava_nio_IntBuffer_2 },
   9140 {"glGetError", "()I", (void *) android_glGetError__ },
   9141 {"glGetIntegerv", "(I[II)V", (void *) android_glGetIntegerv__I_3II },
   9142 {"glGetIntegerv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetIntegerv__ILjava_nio_IntBuffer_2 },
   9143 {"_glGetString", "(I)Ljava/lang/String;", (void *) android_glGetString },
   9144 {"glHint", "(II)V", (void *) android_glHint__II },
   9145 {"glLightModelf", "(IF)V", (void *) android_glLightModelf__IF },
   9146 {"glLightModelfv", "(I[FI)V", (void *) android_glLightModelfv__I_3FI },
   9147 {"glLightModelfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glLightModelfv__ILjava_nio_FloatBuffer_2 },
   9148 {"glLightModelx", "(II)V", (void *) android_glLightModelx__II },
   9149 {"glLightModelxv", "(I[II)V", (void *) android_glLightModelxv__I_3II },
   9150 {"glLightModelxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glLightModelxv__ILjava_nio_IntBuffer_2 },
   9151 {"glLightf", "(IIF)V", (void *) android_glLightf__IIF },
   9152 {"glLightfv", "(II[FI)V", (void *) android_glLightfv__II_3FI },
   9153 {"glLightfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glLightfv__IILjava_nio_FloatBuffer_2 },
   9154 {"glLightx", "(III)V", (void *) android_glLightx__III },
   9155 {"glLightxv", "(II[II)V", (void *) android_glLightxv__II_3II },
   9156 {"glLightxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glLightxv__IILjava_nio_IntBuffer_2 },
   9157 {"glLineWidth", "(F)V", (void *) android_glLineWidth__F },
   9158 {"glLineWidthx", "(I)V", (void *) android_glLineWidthx__I },
   9159 {"glLoadIdentity", "()V", (void *) android_glLoadIdentity__ },
   9160 {"glLoadMatrixf", "([FI)V", (void *) android_glLoadMatrixf___3FI },
   9161 {"glLoadMatrixf", "(Ljava/nio/FloatBuffer;)V", (void *) android_glLoadMatrixf__Ljava_nio_FloatBuffer_2 },
   9162 {"glLoadMatrixx", "([II)V", (void *) android_glLoadMatrixx___3II },
   9163 {"glLoadMatrixx", "(Ljava/nio/IntBuffer;)V", (void *) android_glLoadMatrixx__Ljava_nio_IntBuffer_2 },
   9164 {"glLogicOp", "(I)V", (void *) android_glLogicOp__I },
   9165 {"glMaterialf", "(IIF)V", (void *) android_glMaterialf__IIF },
   9166 {"glMaterialfv", "(II[FI)V", (void *) android_glMaterialfv__II_3FI },
   9167 {"glMaterialfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glMaterialfv__IILjava_nio_FloatBuffer_2 },
   9168 {"glMaterialx", "(III)V", (void *) android_glMaterialx__III },
   9169 {"glMaterialxv", "(II[II)V", (void *) android_glMaterialxv__II_3II },
   9170 {"glMaterialxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glMaterialxv__IILjava_nio_IntBuffer_2 },
   9171 {"glMatrixMode", "(I)V", (void *) android_glMatrixMode__I },
   9172 {"glMultMatrixf", "([FI)V", (void *) android_glMultMatrixf___3FI },
   9173 {"glMultMatrixf", "(Ljava/nio/FloatBuffer;)V", (void *) android_glMultMatrixf__Ljava_nio_FloatBuffer_2 },
   9174 {"glMultMatrixx", "([II)V", (void *) android_glMultMatrixx___3II },
   9175 {"glMultMatrixx", "(Ljava/nio/IntBuffer;)V", (void *) android_glMultMatrixx__Ljava_nio_IntBuffer_2 },
   9176 {"glMultiTexCoord4f", "(IFFFF)V", (void *) android_glMultiTexCoord4f__IFFFF },
   9177 {"glMultiTexCoord4x", "(IIIII)V", (void *) android_glMultiTexCoord4x__IIIII },
   9178 {"glNormal3f", "(FFF)V", (void *) android_glNormal3f__FFF },
   9179 {"glNormal3x", "(III)V", (void *) android_glNormal3x__III },
   9180 {"glNormalPointerBounds", "(IILjava/nio/Buffer;I)V", (void *) android_glNormalPointerBounds__IILjava_nio_Buffer_2I },
   9181 {"glOrthof", "(FFFFFF)V", (void *) android_glOrthof__FFFFFF },
   9182 {"glOrthox", "(IIIIII)V", (void *) android_glOrthox__IIIIII },
   9183 {"glPixelStorei", "(II)V", (void *) android_glPixelStorei__II },
   9184 {"glPointSize", "(F)V", (void *) android_glPointSize__F },
   9185 {"glPointSizex", "(I)V", (void *) android_glPointSizex__I },
   9186 {"glPolygonOffset", "(FF)V", (void *) android_glPolygonOffset__FF },
   9187 {"glPolygonOffsetx", "(II)V", (void *) android_glPolygonOffsetx__II },
   9188 {"glPopMatrix", "()V", (void *) android_glPopMatrix__ },
   9189 {"glPushMatrix", "()V", (void *) android_glPushMatrix__ },
   9190 {"glReadPixels", "(IIIIIILjava/nio/Buffer;)V", (void *) android_glReadPixels__IIIIIILjava_nio_Buffer_2 },
   9191 {"glRotatef", "(FFFF)V", (void *) android_glRotatef__FFFF },
   9192 {"glRotatex", "(IIII)V", (void *) android_glRotatex__IIII },
   9193 {"glSampleCoverage", "(FZ)V", (void *) android_glSampleCoverage__FZ },
   9194 {"glSampleCoveragex", "(IZ)V", (void *) android_glSampleCoveragex__IZ },
   9195 {"glScalef", "(FFF)V", (void *) android_glScalef__FFF },
   9196 {"glScalex", "(III)V", (void *) android_glScalex__III },
   9197 {"glScissor", "(IIII)V", (void *) android_glScissor__IIII },
   9198 {"glShadeModel", "(I)V", (void *) android_glShadeModel__I },
   9199 {"glStencilFunc", "(III)V", (void *) android_glStencilFunc__III },
   9200 {"glStencilMask", "(I)V", (void *) android_glStencilMask__I },
   9201 {"glStencilOp", "(III)V", (void *) android_glStencilOp__III },
   9202 {"glTexCoordPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I },
   9203 {"glTexEnvf", "(IIF)V", (void *) android_glTexEnvf__IIF },
   9204 {"glTexEnvfv", "(II[FI)V", (void *) android_glTexEnvfv__II_3FI },
   9205 {"glTexEnvfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexEnvfv__IILjava_nio_FloatBuffer_2 },
   9206 {"glTexEnvx", "(III)V", (void *) android_glTexEnvx__III },
   9207 {"glTexEnvxv", "(II[II)V", (void *) android_glTexEnvxv__II_3II },
   9208 {"glTexEnvxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexEnvxv__IILjava_nio_IntBuffer_2 },
   9209 {"glTexImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 },
   9210 {"glTexParameterf", "(IIF)V", (void *) android_glTexParameterf__IIF },
   9211 {"glTexParameterx", "(III)V", (void *) android_glTexParameterx__III },
   9212 {"glTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
   9213 {"glTranslatef", "(FFF)V", (void *) android_glTranslatef__FFF },
   9214 {"glTranslatex", "(III)V", (void *) android_glTranslatex__III },
   9215 {"glVertexPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glVertexPointerBounds__IIILjava_nio_Buffer_2I },
   9216 {"glViewport", "(IIII)V", (void *) android_glViewport__IIII },
   9217 {"glQueryMatrixxOES", "([II[II)I", (void *) android_glQueryMatrixxOES___3II_3II },
   9218 {"glQueryMatrixxOES", "(Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)I", (void *) android_glQueryMatrixxOES__Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
   9219 {"glBindBuffer", "(II)V", (void *) android_glBindBuffer__II },
   9220 {"glBufferData", "(IILjava/nio/Buffer;I)V", (void *) android_glBufferData__IILjava_nio_Buffer_2I },
   9221 {"glBufferSubData", "(IIILjava/nio/Buffer;)V", (void *) android_glBufferSubData__IIILjava_nio_Buffer_2 },
   9222 {"glClipPlanef", "(I[FI)V", (void *) android_glClipPlanef__I_3FI },
   9223 {"glClipPlanef", "(ILjava/nio/FloatBuffer;)V", (void *) android_glClipPlanef__ILjava_nio_FloatBuffer_2 },
   9224 {"glClipPlanex", "(I[II)V", (void *) android_glClipPlanex__I_3II },
   9225 {"glClipPlanex", "(ILjava/nio/IntBuffer;)V", (void *) android_glClipPlanex__ILjava_nio_IntBuffer_2 },
   9226 {"glColor4ub", "(BBBB)V", (void *) android_glColor4ub__BBBB },
   9227 {"glColorPointer", "(IIII)V", (void *) android_glColorPointer__IIII },
   9228 {"glDeleteBuffers", "(I[II)V", (void *) android_glDeleteBuffers__I_3II },
   9229 {"glDeleteBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteBuffers__ILjava_nio_IntBuffer_2 },
   9230 {"glDrawElements", "(IIII)V", (void *) android_glDrawElements__IIII },
   9231 {"glGenBuffers", "(I[II)V", (void *) android_glGenBuffers__I_3II },
   9232 {"glGenBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenBuffers__ILjava_nio_IntBuffer_2 },
   9233 {"glGetBooleanv", "(I[ZI)V", (void *) android_glGetBooleanv__I_3ZI },
   9234 {"glGetBooleanv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetBooleanv__ILjava_nio_IntBuffer_2 },
   9235 {"glGetBufferParameteriv", "(II[II)V", (void *) android_glGetBufferParameteriv__II_3II },
   9236 {"glGetBufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 },
   9237 {"glGetClipPlanef", "(I[FI)V", (void *) android_glGetClipPlanef__I_3FI },
   9238 {"glGetClipPlanef", "(ILjava/nio/FloatBuffer;)V", (void *) android_glGetClipPlanef__ILjava_nio_FloatBuffer_2 },
   9239 {"glGetClipPlanex", "(I[II)V", (void *) android_glGetClipPlanex__I_3II },
   9240 {"glGetClipPlanex", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetClipPlanex__ILjava_nio_IntBuffer_2 },
   9241 {"glGetFixedv", "(I[II)V", (void *) android_glGetFixedv__I_3II },
   9242 {"glGetFixedv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetFixedv__ILjava_nio_IntBuffer_2 },
   9243 {"glGetFloatv", "(I[FI)V", (void *) android_glGetFloatv__I_3FI },
   9244 {"glGetFloatv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glGetFloatv__ILjava_nio_FloatBuffer_2 },
   9245 {"glGetLightfv", "(II[FI)V", (void *) android_glGetLightfv__II_3FI },
   9246 {"glGetLightfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetLightfv__IILjava_nio_FloatBuffer_2 },
   9247 {"glGetLightxv", "(II[II)V", (void *) android_glGetLightxv__II_3II },
   9248 {"glGetLightxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetLightxv__IILjava_nio_IntBuffer_2 },
   9249 {"glGetMaterialfv", "(II[FI)V", (void *) android_glGetMaterialfv__II_3FI },
   9250 {"glGetMaterialfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetMaterialfv__IILjava_nio_FloatBuffer_2 },
   9251 {"glGetMaterialxv", "(II[II)V", (void *) android_glGetMaterialxv__II_3II },
   9252 {"glGetMaterialxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetMaterialxv__IILjava_nio_IntBuffer_2 },
   9253 {"glGetTexEnviv", "(II[II)V", (void *) android_glGetTexEnviv__II_3II },
   9254 {"glGetTexEnviv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexEnviv__IILjava_nio_IntBuffer_2 },
   9255 {"glGetTexEnvxv", "(II[II)V", (void *) android_glGetTexEnvxv__II_3II },
   9256 {"glGetTexEnvxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexEnvxv__IILjava_nio_IntBuffer_2 },
   9257 {"glGetTexParameterfv", "(II[FI)V", (void *) android_glGetTexParameterfv__II_3FI },
   9258 {"glGetTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 },
   9259 {"glGetTexParameteriv", "(II[II)V", (void *) android_glGetTexParameteriv__II_3II },
   9260 {"glGetTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameteriv__IILjava_nio_IntBuffer_2 },
   9261 {"glGetTexParameterxv", "(II[II)V", (void *) android_glGetTexParameterxv__II_3II },
   9262 {"glGetTexParameterxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameterxv__IILjava_nio_IntBuffer_2 },
   9263 {"glIsBuffer", "(I)Z", (void *) android_glIsBuffer__I },
   9264 {"glIsEnabled", "(I)Z", (void *) android_glIsEnabled__I },
   9265 {"glIsTexture", "(I)Z", (void *) android_glIsTexture__I },
   9266 {"glNormalPointer", "(III)V", (void *) android_glNormalPointer__III },
   9267 {"glPointParameterf", "(IF)V", (void *) android_glPointParameterf__IF },
   9268 {"glPointParameterfv", "(I[FI)V", (void *) android_glPointParameterfv__I_3FI },
   9269 {"glPointParameterfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glPointParameterfv__ILjava_nio_FloatBuffer_2 },
   9270 {"glPointParameterx", "(II)V", (void *) android_glPointParameterx__II },
   9271 {"glPointParameterxv", "(I[II)V", (void *) android_glPointParameterxv__I_3II },
   9272 {"glPointParameterxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glPointParameterxv__ILjava_nio_IntBuffer_2 },
   9273 {"glPointSizePointerOESBounds", "(IILjava/nio/Buffer;I)V", (void *) android_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I },
   9274 {"glTexCoordPointer", "(IIII)V", (void *) android_glTexCoordPointer__IIII },
   9275 {"glTexEnvi", "(III)V", (void *) android_glTexEnvi__III },
   9276 {"glTexEnviv", "(II[II)V", (void *) android_glTexEnviv__II_3II },
   9277 {"glTexEnviv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexEnviv__IILjava_nio_IntBuffer_2 },
   9278 {"glTexParameterfv", "(II[FI)V", (void *) android_glTexParameterfv__II_3FI },
   9279 {"glTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexParameterfv__IILjava_nio_FloatBuffer_2 },
   9280 {"glTexParameteri", "(III)V", (void *) android_glTexParameteri__III },
   9281 {"glTexParameteriv", "(II[II)V", (void *) android_glTexParameteriv__II_3II },
   9282 {"glTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameteriv__IILjava_nio_IntBuffer_2 },
   9283 {"glTexParameterxv", "(II[II)V", (void *) android_glTexParameterxv__II_3II },
   9284 {"glTexParameterxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameterxv__IILjava_nio_IntBuffer_2 },
   9285 {"glVertexPointer", "(IIII)V", (void *) android_glVertexPointer__IIII },
   9286 {"glCurrentPaletteMatrixOES", "(I)V", (void *) android_glCurrentPaletteMatrixOES__I },
   9287 {"glDrawTexfOES", "(FFFFF)V", (void *) android_glDrawTexfOES__FFFFF },
   9288 {"glDrawTexfvOES", "([FI)V", (void *) android_glDrawTexfvOES___3FI },
   9289 {"glDrawTexfvOES", "(Ljava/nio/FloatBuffer;)V", (void *) android_glDrawTexfvOES__Ljava_nio_FloatBuffer_2 },
   9290 {"glDrawTexiOES", "(IIIII)V", (void *) android_glDrawTexiOES__IIIII },
   9291 {"glDrawTexivOES", "([II)V", (void *) android_glDrawTexivOES___3II },
   9292 {"glDrawTexivOES", "(Ljava/nio/IntBuffer;)V", (void *) android_glDrawTexivOES__Ljava_nio_IntBuffer_2 },
   9293 {"glDrawTexsOES", "(SSSSS)V", (void *) android_glDrawTexsOES__SSSSS },
   9294 {"glDrawTexsvOES", "([SI)V", (void *) android_glDrawTexsvOES___3SI },
   9295 {"glDrawTexsvOES", "(Ljava/nio/ShortBuffer;)V", (void *) android_glDrawTexsvOES__Ljava_nio_ShortBuffer_2 },
   9296 {"glDrawTexxOES", "(IIIII)V", (void *) android_glDrawTexxOES__IIIII },
   9297 {"glDrawTexxvOES", "([II)V", (void *) android_glDrawTexxvOES___3II },
   9298 {"glDrawTexxvOES", "(Ljava/nio/IntBuffer;)V", (void *) android_glDrawTexxvOES__Ljava_nio_IntBuffer_2 },
   9299 {"glLoadPaletteFromModelViewMatrixOES", "()V", (void *) android_glLoadPaletteFromModelViewMatrixOES__ },
   9300 {"glMatrixIndexPointerOESBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glMatrixIndexPointerOESBounds__IIILjava_nio_Buffer_2I },
   9301 {"glMatrixIndexPointerOES", "(IIII)V", (void *) android_glMatrixIndexPointerOES__IIII },
   9302 {"glWeightPointerOESBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glWeightPointerOESBounds__IIILjava_nio_Buffer_2I },
   9303 {"glWeightPointerOES", "(IIII)V", (void *) android_glWeightPointerOES__IIII },
   9304 {"glBindFramebufferOES", "(II)V", (void *) android_glBindFramebufferOES__II },
   9305 {"glBindRenderbufferOES", "(II)V", (void *) android_glBindRenderbufferOES__II },
   9306 {"glBlendEquation", "(I)V", (void *) android_glBlendEquation__I },
   9307 {"glBlendEquationSeparate", "(II)V", (void *) android_glBlendEquationSeparate__II },
   9308 {"glBlendFuncSeparate", "(IIII)V", (void *) android_glBlendFuncSeparate__IIII },
   9309 {"glCheckFramebufferStatusOES", "(I)I", (void *) android_glCheckFramebufferStatusOES__I },
   9310 {"glDeleteFramebuffersOES", "(I[II)V", (void *) android_glDeleteFramebuffersOES__I_3II },
   9311 {"glDeleteFramebuffersOES", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteFramebuffersOES__ILjava_nio_IntBuffer_2 },
   9312 {"glDeleteRenderbuffersOES", "(I[II)V", (void *) android_glDeleteRenderbuffersOES__I_3II },
   9313 {"glDeleteRenderbuffersOES", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteRenderbuffersOES__ILjava_nio_IntBuffer_2 },
   9314 {"glFramebufferRenderbufferOES", "(IIII)V", (void *) android_glFramebufferRenderbufferOES__IIII },
   9315 {"glFramebufferTexture2DOES", "(IIIII)V", (void *) android_glFramebufferTexture2DOES__IIIII },
   9316 {"glGenerateMipmapOES", "(I)V", (void *) android_glGenerateMipmapOES__I },
   9317 {"glGenFramebuffersOES", "(I[II)V", (void *) android_glGenFramebuffersOES__I_3II },
   9318 {"glGenFramebuffersOES", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenFramebuffersOES__ILjava_nio_IntBuffer_2 },
   9319 {"glGenRenderbuffersOES", "(I[II)V", (void *) android_glGenRenderbuffersOES__I_3II },
   9320 {"glGenRenderbuffersOES", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenRenderbuffersOES__ILjava_nio_IntBuffer_2 },
   9321 {"glGetFramebufferAttachmentParameterivOES", "(III[II)V", (void *) android_glGetFramebufferAttachmentParameterivOES__III_3II },
   9322 {"glGetFramebufferAttachmentParameterivOES", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetFramebufferAttachmentParameterivOES__IIILjava_nio_IntBuffer_2 },
   9323 {"glGetRenderbufferParameterivOES", "(II[II)V", (void *) android_glGetRenderbufferParameterivOES__II_3II },
   9324 {"glGetRenderbufferParameterivOES", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetRenderbufferParameterivOES__IILjava_nio_IntBuffer_2 },
   9325 {"glGetTexGenfv", "(II[FI)V", (void *) android_glGetTexGenfv__II_3FI },
   9326 {"glGetTexGenfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetTexGenfv__IILjava_nio_FloatBuffer_2 },
   9327 {"glGetTexGeniv", "(II[II)V", (void *) android_glGetTexGeniv__II_3II },
   9328 {"glGetTexGeniv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexGeniv__IILjava_nio_IntBuffer_2 },
   9329 {"glGetTexGenxv", "(II[II)V", (void *) android_glGetTexGenxv__II_3II },
   9330 {"glGetTexGenxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexGenxv__IILjava_nio_IntBuffer_2 },
   9331 {"glIsFramebufferOES", "(I)Z", (void *) android_glIsFramebufferOES__I },
   9332 {"glIsRenderbufferOES", "(I)Z", (void *) android_glIsRenderbufferOES__I },
   9333 {"glRenderbufferStorageOES", "(IIII)V", (void *) android_glRenderbufferStorageOES__IIII },
   9334 {"glTexGenf", "(IIF)V", (void *) android_glTexGenf__IIF },
   9335 {"glTexGenfv", "(II[FI)V", (void *) android_glTexGenfv__II_3FI },
   9336 {"glTexGenfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexGenfv__IILjava_nio_FloatBuffer_2 },
   9337 {"glTexGeni", "(III)V", (void *) android_glTexGeni__III },
   9338 {"glTexGeniv", "(II[II)V", (void *) android_glTexGeniv__II_3II },
   9339 {"glTexGeniv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexGeniv__IILjava_nio_IntBuffer_2 },
   9340 {"glTexGenx", "(III)V", (void *) android_glTexGenx__III },
   9341 {"glTexGenxv", "(II[II)V", (void *) android_glTexGenxv__II_3II },
   9342 {"glTexGenxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexGenxv__IILjava_nio_IntBuffer_2 },
   9343 };
   9344 
   9345 int register_com_google_android_gles_jni_GLImpl(JNIEnv *_env)
   9346 {
   9347     int err;
   9348     err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
   9349     return err;
   9350 }
   9351