1/*
2**
3** Copyright 2009, 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#include <android_runtime/AndroidRuntime.h>
21#include <utils/misc.h>
22
23#include <assert.h>
24#include <GLES/gl.h>
25#include <GLES/glext.h>
26
27/* special calls implemented in Android's GLES wrapper used to more
28 * efficiently bound-check passed arrays */
29extern "C" {
30GL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride,
31        const GLvoid *ptr, GLsizei count);
32GL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride,
33        const GLvoid *pointer, GLsizei count);
34GL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type,
35        GLsizei stride, const GLvoid *pointer, GLsizei count);
36GL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
37        GLsizei stride, const GLvoid *pointer, GLsizei count);
38}
39
40static int initialized = 0;
41
42static jclass nioAccessClass;
43static jclass bufferClass;
44static jclass OOMEClass;
45static jclass UOEClass;
46static jclass IAEClass;
47static jclass AIOOBEClass;
48static jmethodID getBasePointerID;
49static jmethodID getBaseArrayID;
50static jmethodID getBaseArrayOffsetID;
51static jfieldID positionID;
52static jfieldID limitID;
53static jfieldID elementSizeShiftID;
54
55/* Cache method IDs each time the class is loaded. */
56
57static void
58nativeClassInitBuffer(JNIEnv *_env)
59{
60    jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
61    nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
62
63    jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
64    bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
65
66    getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
67            "getBasePointer", "(Ljava/nio/Buffer;)J");
68    getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
69            "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
70    getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
71            "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
72
73    positionID = _env->GetFieldID(bufferClass, "position", "I");
74    limitID = _env->GetFieldID(bufferClass, "limit", "I");
75    elementSizeShiftID =
76        _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
77}
78
79static void
80nativeClassInit(JNIEnv *_env, jclass glImplClass)
81{
82    nativeClassInitBuffer(_env);
83
84    jclass IAEClassLocal =
85        _env->FindClass("java/lang/IllegalArgumentException");
86    jclass OOMEClassLocal =
87         _env->FindClass("java/lang/OutOfMemoryError");
88    jclass UOEClassLocal =
89         _env->FindClass("java/lang/UnsupportedOperationException");
90    jclass AIOOBEClassLocal =
91         _env->FindClass("java/lang/ArrayIndexOutOfBoundsException");
92
93    IAEClass = (jclass) _env->NewGlobalRef(IAEClassLocal);
94    OOMEClass = (jclass) _env->NewGlobalRef(OOMEClassLocal);
95    UOEClass = (jclass) _env->NewGlobalRef(UOEClassLocal);
96    AIOOBEClass = (jclass) _env->NewGlobalRef(AIOOBEClassLocal);
97}
98
99static void *
100getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining)
101{
102    jint position;
103    jint limit;
104    jint elementSizeShift;
105    jlong pointer;
106    jint offset;
107    void *data;
108
109    position = _env->GetIntField(buffer, positionID);
110    limit = _env->GetIntField(buffer, limitID);
111    elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
112    *remaining = (limit - position) << elementSizeShift;
113    pointer = _env->CallStaticLongMethod(nioAccessClass,
114            getBasePointerID, buffer);
115    if (pointer != 0L) {
116        *array = NULL;
117        return (void *) (jint) pointer;
118    }
119
120    *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
121            getBaseArrayID, buffer);
122    offset = _env->CallStaticIntMethod(nioAccessClass,
123            getBaseArrayOffsetID, buffer);
124    data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0);
125
126    return (void *) ((char *) data + offset);
127}
128
129static void
130releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
131{
132    _env->ReleasePrimitiveArrayCritical(array, data,
133					   commit ? 0 : JNI_ABORT);
134}
135
136static void *
137getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
138    char* buf = (char*) _env->GetDirectBufferAddress(buffer);
139    if (buf) {
140        jint position = _env->GetIntField(buffer, positionID);
141        jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
142        buf += position << elementSizeShift;
143    } else {
144        _env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
145    }
146    return (void*) buf;
147}
148
149static int
150getNumCompressedTextureFormats() {
151    int numCompressedTextureFormats = 0;
152    glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &numCompressedTextureFormats);
153    return numCompressedTextureFormats;
154}
155
156// --------------------------------------------------------------------------
157
158/* void glActiveTexture ( GLenum texture ) */
159static void
160android_glActiveTexture__I
161  (JNIEnv *_env, jobject _this, jint texture) {
162    glActiveTexture(
163        (GLenum)texture
164    );
165}
166
167/* void glAlphaFunc ( GLenum func, GLclampf ref ) */
168static void
169android_glAlphaFunc__IF
170  (JNIEnv *_env, jobject _this, jint func, jfloat ref) {
171    glAlphaFunc(
172        (GLenum)func,
173        (GLclampf)ref
174    );
175}
176
177/* void glAlphaFuncx ( GLenum func, GLclampx ref ) */
178static void
179android_glAlphaFuncx__II
180  (JNIEnv *_env, jobject _this, jint func, jint ref) {
181    glAlphaFuncx(
182        (GLenum)func,
183        (GLclampx)ref
184    );
185}
186
187/* void glBindTexture ( GLenum target, GLuint texture ) */
188static void
189android_glBindTexture__II
190  (JNIEnv *_env, jobject _this, jint target, jint texture) {
191    glBindTexture(
192        (GLenum)target,
193        (GLuint)texture
194    );
195}
196
197/* void glBlendFunc ( GLenum sfactor, GLenum dfactor ) */
198static void
199android_glBlendFunc__II
200  (JNIEnv *_env, jobject _this, jint sfactor, jint dfactor) {
201    glBlendFunc(
202        (GLenum)sfactor,
203        (GLenum)dfactor
204    );
205}
206
207/* void glClear ( GLbitfield mask ) */
208static void
209android_glClear__I
210  (JNIEnv *_env, jobject _this, jint mask) {
211    glClear(
212        (GLbitfield)mask
213    );
214}
215
216/* void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */
217static void
218android_glClearColor__FFFF
219  (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
220    glClearColor(
221        (GLclampf)red,
222        (GLclampf)green,
223        (GLclampf)blue,
224        (GLclampf)alpha
225    );
226}
227
228/* void glClearColorx ( GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha ) */
229static void
230android_glClearColorx__IIII
231  (JNIEnv *_env, jobject _this, jint red, jint green, jint blue, jint alpha) {
232    glClearColorx(
233        (GLclampx)red,
234        (GLclampx)green,
235        (GLclampx)blue,
236        (GLclampx)alpha
237    );
238}
239
240/* void glClearDepthf ( GLclampf depth ) */
241static void
242android_glClearDepthf__F
243  (JNIEnv *_env, jobject _this, jfloat depth) {
244    glClearDepthf(
245        (GLclampf)depth
246    );
247}
248
249/* void glClearDepthx ( GLclampx depth ) */
250static void
251android_glClearDepthx__I
252  (JNIEnv *_env, jobject _this, jint depth) {
253    glClearDepthx(
254        (GLclampx)depth
255    );
256}
257
258/* void glClearStencil ( GLint s ) */
259static void
260android_glClearStencil__I
261  (JNIEnv *_env, jobject _this, jint s) {
262    glClearStencil(
263        (GLint)s
264    );
265}
266
267/* void glClientActiveTexture ( GLenum texture ) */
268static void
269android_glClientActiveTexture__I
270  (JNIEnv *_env, jobject _this, jint texture) {
271    glClientActiveTexture(
272        (GLenum)texture
273    );
274}
275
276/* void glColor4f ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) */
277static void
278android_glColor4f__FFFF
279  (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
280    glColor4f(
281        (GLfloat)red,
282        (GLfloat)green,
283        (GLfloat)blue,
284        (GLfloat)alpha
285    );
286}
287
288/* void glColor4x ( GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha ) */
289static void
290android_glColor4x__IIII
291  (JNIEnv *_env, jobject _this, jint red, jint green, jint blue, jint alpha) {
292    glColor4x(
293        (GLfixed)red,
294        (GLfixed)green,
295        (GLfixed)blue,
296        (GLfixed)alpha
297    );
298}
299
300/* void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) */
301static void
302android_glColorMask__ZZZZ
303  (JNIEnv *_env, jobject _this, jboolean red, jboolean green, jboolean blue, jboolean alpha) {
304    glColorMask(
305        (GLboolean)red,
306        (GLboolean)green,
307        (GLboolean)blue,
308        (GLboolean)alpha
309    );
310}
311
312/* void glColorPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
313static void
314android_glColorPointerBounds__IIILjava_nio_Buffer_2I
315  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
316    jarray _array = (jarray) 0;
317    jint _remaining;
318    GLvoid *pointer = (GLvoid *) 0;
319
320    if (pointer_buf) {
321        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
322        if ( ! pointer ) {
323            return;
324        }
325    }
326    glColorPointerBounds(
327        (GLint)size,
328        (GLenum)type,
329        (GLsizei)stride,
330        (GLvoid *)pointer,
331        (GLsizei)remaining
332    );
333}
334
335/* void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) */
336static void
337android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2
338  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint imageSize, jobject data_buf) {
339    jarray _array = (jarray) 0;
340    jint _remaining;
341    GLvoid *data = (GLvoid *) 0;
342
343    data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining);
344    glCompressedTexImage2D(
345        (GLenum)target,
346        (GLint)level,
347        (GLenum)internalformat,
348        (GLsizei)width,
349        (GLsizei)height,
350        (GLint)border,
351        (GLsizei)imageSize,
352        (GLvoid *)data
353    );
354    if (_array) {
355        releasePointer(_env, _array, data, JNI_FALSE);
356    }
357}
358
359/* void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ) */
360static void
361android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
362  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint imageSize, jobject data_buf) {
363    jarray _array = (jarray) 0;
364    jint _remaining;
365    GLvoid *data = (GLvoid *) 0;
366
367    data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining);
368    glCompressedTexSubImage2D(
369        (GLenum)target,
370        (GLint)level,
371        (GLint)xoffset,
372        (GLint)yoffset,
373        (GLsizei)width,
374        (GLsizei)height,
375        (GLenum)format,
376        (GLsizei)imageSize,
377        (GLvoid *)data
378    );
379    if (_array) {
380        releasePointer(_env, _array, data, JNI_FALSE);
381    }
382}
383
384/* void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) */
385static void
386android_glCopyTexImage2D__IIIIIIII
387  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint x, jint y, jint width, jint height, jint border) {
388    glCopyTexImage2D(
389        (GLenum)target,
390        (GLint)level,
391        (GLenum)internalformat,
392        (GLint)x,
393        (GLint)y,
394        (GLsizei)width,
395        (GLsizei)height,
396        (GLint)border
397    );
398}
399
400/* void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */
401static void
402android_glCopyTexSubImage2D__IIIIIIII
403  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint x, jint y, jint width, jint height) {
404    glCopyTexSubImage2D(
405        (GLenum)target,
406        (GLint)level,
407        (GLint)xoffset,
408        (GLint)yoffset,
409        (GLint)x,
410        (GLint)y,
411        (GLsizei)width,
412        (GLsizei)height
413    );
414}
415
416/* void glCullFace ( GLenum mode ) */
417static void
418android_glCullFace__I
419  (JNIEnv *_env, jobject _this, jint mode) {
420    glCullFace(
421        (GLenum)mode
422    );
423}
424
425/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
426static void
427android_glDeleteTextures__I_3II
428  (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
429    GLuint *textures_base = (GLuint *) 0;
430    jint _remaining;
431    GLuint *textures = (GLuint *) 0;
432
433    if (!textures_ref) {
434        _env->ThrowNew(IAEClass, "textures == null");
435        goto exit;
436    }
437    if (offset < 0) {
438        _env->ThrowNew(IAEClass, "offset < 0");
439        goto exit;
440    }
441    _remaining = _env->GetArrayLength(textures_ref) - offset;
442    if (_remaining < n) {
443        _env->ThrowNew(IAEClass, "length - offset < n");
444        goto exit;
445    }
446    textures_base = (GLuint *)
447        _env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0);
448    textures = textures_base + offset;
449
450    glDeleteTextures(
451        (GLsizei)n,
452        (GLuint *)textures
453    );
454
455exit:
456    if (textures_base) {
457        _env->ReleasePrimitiveArrayCritical(textures_ref, textures_base,
458            JNI_ABORT);
459    }
460}
461
462/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
463static void
464android_glDeleteTextures__ILjava_nio_IntBuffer_2
465  (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
466    jarray _array = (jarray) 0;
467    jint _remaining;
468    GLuint *textures = (GLuint *) 0;
469
470    textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining);
471    if (_remaining < n) {
472        _env->ThrowNew(IAEClass, "remaining() < n");
473        goto exit;
474    }
475    glDeleteTextures(
476        (GLsizei)n,
477        (GLuint *)textures
478    );
479
480exit:
481    if (_array) {
482        releasePointer(_env, _array, textures, JNI_FALSE);
483    }
484}
485
486/* void glDepthFunc ( GLenum func ) */
487static void
488android_glDepthFunc__I
489  (JNIEnv *_env, jobject _this, jint func) {
490    glDepthFunc(
491        (GLenum)func
492    );
493}
494
495/* void glDepthMask ( GLboolean flag ) */
496static void
497android_glDepthMask__Z
498  (JNIEnv *_env, jobject _this, jboolean flag) {
499    glDepthMask(
500        (GLboolean)flag
501    );
502}
503
504/* void glDepthRangef ( GLclampf zNear, GLclampf zFar ) */
505static void
506android_glDepthRangef__FF
507  (JNIEnv *_env, jobject _this, jfloat zNear, jfloat zFar) {
508    glDepthRangef(
509        (GLclampf)zNear,
510        (GLclampf)zFar
511    );
512}
513
514/* void glDepthRangex ( GLclampx zNear, GLclampx zFar ) */
515static void
516android_glDepthRangex__II
517  (JNIEnv *_env, jobject _this, jint zNear, jint zFar) {
518    glDepthRangex(
519        (GLclampx)zNear,
520        (GLclampx)zFar
521    );
522}
523
524/* void glDisable ( GLenum cap ) */
525static void
526android_glDisable__I
527  (JNIEnv *_env, jobject _this, jint cap) {
528    glDisable(
529        (GLenum)cap
530    );
531}
532
533/* void glDisableClientState ( GLenum array ) */
534static void
535android_glDisableClientState__I
536  (JNIEnv *_env, jobject _this, jint array) {
537    glDisableClientState(
538        (GLenum)array
539    );
540}
541
542/* void glDrawArrays ( GLenum mode, GLint first, GLsizei count ) */
543static void
544android_glDrawArrays__III
545  (JNIEnv *_env, jobject _this, jint mode, jint first, jint count) {
546    glDrawArrays(
547        (GLenum)mode,
548        (GLint)first,
549        (GLsizei)count
550    );
551}
552
553/* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) */
554static void
555android_glDrawElements__IIILjava_nio_Buffer_2
556  (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf) {
557    jarray _array = (jarray) 0;
558    jint _remaining;
559    GLvoid *indices = (GLvoid *) 0;
560
561    indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining);
562    if (_remaining < count) {
563        _env->ThrowNew(AIOOBEClass, "remaining() < count");
564        goto exit;
565    }
566    glDrawElements(
567        (GLenum)mode,
568        (GLsizei)count,
569        (GLenum)type,
570        (GLvoid *)indices
571    );
572
573exit:
574    if (_array) {
575        releasePointer(_env, _array, indices, JNI_FALSE);
576    }
577}
578
579/* void glEnable ( GLenum cap ) */
580static void
581android_glEnable__I
582  (JNIEnv *_env, jobject _this, jint cap) {
583    glEnable(
584        (GLenum)cap
585    );
586}
587
588/* void glEnableClientState ( GLenum array ) */
589static void
590android_glEnableClientState__I
591  (JNIEnv *_env, jobject _this, jint array) {
592    glEnableClientState(
593        (GLenum)array
594    );
595}
596
597/* void glFinish ( void ) */
598static void
599android_glFinish__
600  (JNIEnv *_env, jobject _this) {
601    glFinish();
602}
603
604/* void glFlush ( void ) */
605static void
606android_glFlush__
607  (JNIEnv *_env, jobject _this) {
608    glFlush();
609}
610
611/* void glFogf ( GLenum pname, GLfloat param ) */
612static void
613android_glFogf__IF
614  (JNIEnv *_env, jobject _this, jint pname, jfloat param) {
615    glFogf(
616        (GLenum)pname,
617        (GLfloat)param
618    );
619}
620
621/* void glFogfv ( GLenum pname, const GLfloat *params ) */
622static void
623android_glFogfv__I_3FI
624  (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
625    GLfloat *params_base = (GLfloat *) 0;
626    jint _remaining;
627    GLfloat *params = (GLfloat *) 0;
628
629    if (!params_ref) {
630        _env->ThrowNew(IAEClass, "params == null");
631        goto exit;
632    }
633    if (offset < 0) {
634        _env->ThrowNew(IAEClass, "offset < 0");
635        goto exit;
636    }
637    _remaining = _env->GetArrayLength(params_ref) - offset;
638    int _needed;
639    switch (pname) {
640#if defined(GL_FOG_MODE)
641        case GL_FOG_MODE:
642#endif // defined(GL_FOG_MODE)
643#if defined(GL_FOG_DENSITY)
644        case GL_FOG_DENSITY:
645#endif // defined(GL_FOG_DENSITY)
646#if defined(GL_FOG_START)
647        case GL_FOG_START:
648#endif // defined(GL_FOG_START)
649#if defined(GL_FOG_END)
650        case GL_FOG_END:
651#endif // defined(GL_FOG_END)
652            _needed = 1;
653            break;
654#if defined(GL_FOG_COLOR)
655        case GL_FOG_COLOR:
656#endif // defined(GL_FOG_COLOR)
657            _needed = 4;
658            break;
659        default:
660            _needed = 0;
661            break;
662    }
663    if (_remaining < _needed) {
664        _env->ThrowNew(IAEClass, "length - offset < needed");
665        goto exit;
666    }
667    params_base = (GLfloat *)
668        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
669    params = params_base + offset;
670
671    glFogfv(
672        (GLenum)pname,
673        (GLfloat *)params
674    );
675
676exit:
677    if (params_base) {
678        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
679            JNI_ABORT);
680    }
681}
682
683/* void glFogfv ( GLenum pname, const GLfloat *params ) */
684static void
685android_glFogfv__ILjava_nio_FloatBuffer_2
686  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
687    jarray _array = (jarray) 0;
688    jint _remaining;
689    GLfloat *params = (GLfloat *) 0;
690
691    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
692    int _needed;
693    switch (pname) {
694#if defined(GL_FOG_MODE)
695        case GL_FOG_MODE:
696#endif // defined(GL_FOG_MODE)
697#if defined(GL_FOG_DENSITY)
698        case GL_FOG_DENSITY:
699#endif // defined(GL_FOG_DENSITY)
700#if defined(GL_FOG_START)
701        case GL_FOG_START:
702#endif // defined(GL_FOG_START)
703#if defined(GL_FOG_END)
704        case GL_FOG_END:
705#endif // defined(GL_FOG_END)
706            _needed = 1;
707            break;
708#if defined(GL_FOG_COLOR)
709        case GL_FOG_COLOR:
710#endif // defined(GL_FOG_COLOR)
711            _needed = 4;
712            break;
713        default:
714            _needed = 0;
715            break;
716    }
717    if (_remaining < _needed) {
718        _env->ThrowNew(IAEClass, "remaining() < needed");
719        goto exit;
720    }
721    glFogfv(
722        (GLenum)pname,
723        (GLfloat *)params
724    );
725
726exit:
727    if (_array) {
728        releasePointer(_env, _array, params, JNI_FALSE);
729    }
730}
731
732/* void glFogx ( GLenum pname, GLfixed param ) */
733static void
734android_glFogx__II
735  (JNIEnv *_env, jobject _this, jint pname, jint param) {
736    glFogx(
737        (GLenum)pname,
738        (GLfixed)param
739    );
740}
741
742/* void glFogxv ( GLenum pname, const GLfixed *params ) */
743static void
744android_glFogxv__I_3II
745  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
746    GLfixed *params_base = (GLfixed *) 0;
747    jint _remaining;
748    GLfixed *params = (GLfixed *) 0;
749
750    if (!params_ref) {
751        _env->ThrowNew(IAEClass, "params == null");
752        goto exit;
753    }
754    if (offset < 0) {
755        _env->ThrowNew(IAEClass, "offset < 0");
756        goto exit;
757    }
758    _remaining = _env->GetArrayLength(params_ref) - offset;
759    int _needed;
760    switch (pname) {
761#if defined(GL_FOG_MODE)
762        case GL_FOG_MODE:
763#endif // defined(GL_FOG_MODE)
764#if defined(GL_FOG_DENSITY)
765        case GL_FOG_DENSITY:
766#endif // defined(GL_FOG_DENSITY)
767#if defined(GL_FOG_START)
768        case GL_FOG_START:
769#endif // defined(GL_FOG_START)
770#if defined(GL_FOG_END)
771        case GL_FOG_END:
772#endif // defined(GL_FOG_END)
773            _needed = 1;
774            break;
775#if defined(GL_FOG_COLOR)
776        case GL_FOG_COLOR:
777#endif // defined(GL_FOG_COLOR)
778            _needed = 4;
779            break;
780        default:
781            _needed = 0;
782            break;
783    }
784    if (_remaining < _needed) {
785        _env->ThrowNew(IAEClass, "length - offset < needed");
786        goto exit;
787    }
788    params_base = (GLfixed *)
789        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
790    params = params_base + offset;
791
792    glFogxv(
793        (GLenum)pname,
794        (GLfixed *)params
795    );
796
797exit:
798    if (params_base) {
799        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
800            JNI_ABORT);
801    }
802}
803
804/* void glFogxv ( GLenum pname, const GLfixed *params ) */
805static void
806android_glFogxv__ILjava_nio_IntBuffer_2
807  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
808    jarray _array = (jarray) 0;
809    jint _remaining;
810    GLfixed *params = (GLfixed *) 0;
811
812    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining);
813    int _needed;
814    switch (pname) {
815#if defined(GL_FOG_MODE)
816        case GL_FOG_MODE:
817#endif // defined(GL_FOG_MODE)
818#if defined(GL_FOG_DENSITY)
819        case GL_FOG_DENSITY:
820#endif // defined(GL_FOG_DENSITY)
821#if defined(GL_FOG_START)
822        case GL_FOG_START:
823#endif // defined(GL_FOG_START)
824#if defined(GL_FOG_END)
825        case GL_FOG_END:
826#endif // defined(GL_FOG_END)
827            _needed = 1;
828            break;
829#if defined(GL_FOG_COLOR)
830        case GL_FOG_COLOR:
831#endif // defined(GL_FOG_COLOR)
832            _needed = 4;
833            break;
834        default:
835            _needed = 0;
836            break;
837    }
838    if (_remaining < _needed) {
839        _env->ThrowNew(IAEClass, "remaining() < needed");
840        goto exit;
841    }
842    glFogxv(
843        (GLenum)pname,
844        (GLfixed *)params
845    );
846
847exit:
848    if (_array) {
849        releasePointer(_env, _array, params, JNI_FALSE);
850    }
851}
852
853/* void glFrontFace ( GLenum mode ) */
854static void
855android_glFrontFace__I
856  (JNIEnv *_env, jobject _this, jint mode) {
857    glFrontFace(
858        (GLenum)mode
859    );
860}
861
862/* void glFrustumf ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */
863static void
864android_glFrustumf__FFFFFF
865  (JNIEnv *_env, jobject _this, jfloat left, jfloat right, jfloat bottom, jfloat top, jfloat zNear, jfloat zFar) {
866    glFrustumf(
867        (GLfloat)left,
868        (GLfloat)right,
869        (GLfloat)bottom,
870        (GLfloat)top,
871        (GLfloat)zNear,
872        (GLfloat)zFar
873    );
874}
875
876/* void glFrustumx ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) */
877static void
878android_glFrustumx__IIIIII
879  (JNIEnv *_env, jobject _this, jint left, jint right, jint bottom, jint top, jint zNear, jint zFar) {
880    glFrustumx(
881        (GLfixed)left,
882        (GLfixed)right,
883        (GLfixed)bottom,
884        (GLfixed)top,
885        (GLfixed)zNear,
886        (GLfixed)zFar
887    );
888}
889
890/* void glGenTextures ( GLsizei n, GLuint *textures ) */
891static void
892android_glGenTextures__I_3II
893  (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
894    jint _exception = 0;
895    GLuint *textures_base = (GLuint *) 0;
896    jint _remaining;
897    GLuint *textures = (GLuint *) 0;
898
899    if (!textures_ref) {
900        _exception = 1;
901        _env->ThrowNew(IAEClass, "textures == null");
902        goto exit;
903    }
904    if (offset < 0) {
905        _exception = 1;
906        _env->ThrowNew(IAEClass, "offset < 0");
907        goto exit;
908    }
909    _remaining = _env->GetArrayLength(textures_ref) - offset;
910    if (_remaining < n) {
911        _exception = 1;
912        _env->ThrowNew(IAEClass, "length - offset < n");
913        goto exit;
914    }
915    textures_base = (GLuint *)
916        _env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0);
917    textures = textures_base + offset;
918
919    glGenTextures(
920        (GLsizei)n,
921        (GLuint *)textures
922    );
923
924exit:
925    if (textures_base) {
926        _env->ReleasePrimitiveArrayCritical(textures_ref, textures_base,
927            _exception ? JNI_ABORT: 0);
928    }
929}
930
931/* void glGenTextures ( GLsizei n, GLuint *textures ) */
932static void
933android_glGenTextures__ILjava_nio_IntBuffer_2
934  (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
935    jint _exception = 0;
936    jarray _array = (jarray) 0;
937    jint _remaining;
938    GLuint *textures = (GLuint *) 0;
939
940    textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining);
941    if (_remaining < n) {
942        _exception = 1;
943        _env->ThrowNew(IAEClass, "remaining() < n");
944        goto exit;
945    }
946    glGenTextures(
947        (GLsizei)n,
948        (GLuint *)textures
949    );
950
951exit:
952    if (_array) {
953        releasePointer(_env, _array, textures, _exception ? JNI_FALSE : JNI_TRUE);
954    }
955}
956
957/* GLenum glGetError ( void ) */
958static jint
959android_glGetError__
960  (JNIEnv *_env, jobject _this) {
961    GLenum _returnValue;
962    _returnValue = glGetError();
963    return _returnValue;
964}
965
966/* void glGetIntegerv ( GLenum pname, GLint *params ) */
967static void
968android_glGetIntegerv__I_3II
969  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
970    jint _exception = 0;
971    GLint *params_base = (GLint *) 0;
972    jint _remaining;
973    GLint *params = (GLint *) 0;
974
975    if (!params_ref) {
976        _exception = 1;
977        _env->ThrowNew(IAEClass, "params == null");
978        goto exit;
979    }
980    if (offset < 0) {
981        _exception = 1;
982        _env->ThrowNew(IAEClass, "offset < 0");
983        goto exit;
984    }
985    _remaining = _env->GetArrayLength(params_ref) - offset;
986    int _needed;
987    switch (pname) {
988#if defined(GL_ALPHA_BITS)
989        case GL_ALPHA_BITS:
990#endif // defined(GL_ALPHA_BITS)
991#if defined(GL_ALPHA_TEST_FUNC)
992        case GL_ALPHA_TEST_FUNC:
993#endif // defined(GL_ALPHA_TEST_FUNC)
994#if defined(GL_ALPHA_TEST_REF)
995        case GL_ALPHA_TEST_REF:
996#endif // defined(GL_ALPHA_TEST_REF)
997#if defined(GL_BLEND_DST)
998        case GL_BLEND_DST:
999#endif // defined(GL_BLEND_DST)
1000#if defined(GL_BLUE_BITS)
1001        case GL_BLUE_BITS:
1002#endif // defined(GL_BLUE_BITS)
1003#if defined(GL_COLOR_ARRAY_BUFFER_BINDING)
1004        case GL_COLOR_ARRAY_BUFFER_BINDING:
1005#endif // defined(GL_COLOR_ARRAY_BUFFER_BINDING)
1006#if defined(GL_COLOR_ARRAY_SIZE)
1007        case GL_COLOR_ARRAY_SIZE:
1008#endif // defined(GL_COLOR_ARRAY_SIZE)
1009#if defined(GL_COLOR_ARRAY_STRIDE)
1010        case GL_COLOR_ARRAY_STRIDE:
1011#endif // defined(GL_COLOR_ARRAY_STRIDE)
1012#if defined(GL_COLOR_ARRAY_TYPE)
1013        case GL_COLOR_ARRAY_TYPE:
1014#endif // defined(GL_COLOR_ARRAY_TYPE)
1015#if defined(GL_CULL_FACE)
1016        case GL_CULL_FACE:
1017#endif // defined(GL_CULL_FACE)
1018#if defined(GL_DEPTH_BITS)
1019        case GL_DEPTH_BITS:
1020#endif // defined(GL_DEPTH_BITS)
1021#if defined(GL_DEPTH_CLEAR_VALUE)
1022        case GL_DEPTH_CLEAR_VALUE:
1023#endif // defined(GL_DEPTH_CLEAR_VALUE)
1024#if defined(GL_DEPTH_FUNC)
1025        case GL_DEPTH_FUNC:
1026#endif // defined(GL_DEPTH_FUNC)
1027#if defined(GL_DEPTH_WRITEMASK)
1028        case GL_DEPTH_WRITEMASK:
1029#endif // defined(GL_DEPTH_WRITEMASK)
1030#if defined(GL_FOG_DENSITY)
1031        case GL_FOG_DENSITY:
1032#endif // defined(GL_FOG_DENSITY)
1033#if defined(GL_FOG_END)
1034        case GL_FOG_END:
1035#endif // defined(GL_FOG_END)
1036#if defined(GL_FOG_MODE)
1037        case GL_FOG_MODE:
1038#endif // defined(GL_FOG_MODE)
1039#if defined(GL_FOG_START)
1040        case GL_FOG_START:
1041#endif // defined(GL_FOG_START)
1042#if defined(GL_FRONT_FACE)
1043        case GL_FRONT_FACE:
1044#endif // defined(GL_FRONT_FACE)
1045#if defined(GL_GREEN_BITS)
1046        case GL_GREEN_BITS:
1047#endif // defined(GL_GREEN_BITS)
1048#if defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
1049        case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
1050#endif // defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
1051#if defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
1052        case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
1053#endif // defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
1054#if defined(GL_LIGHT_MODEL_COLOR_CONTROL)
1055        case GL_LIGHT_MODEL_COLOR_CONTROL:
1056#endif // defined(GL_LIGHT_MODEL_COLOR_CONTROL)
1057#if defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
1058        case GL_LIGHT_MODEL_LOCAL_VIEWER:
1059#endif // defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
1060#if defined(GL_LIGHT_MODEL_TWO_SIDE)
1061        case GL_LIGHT_MODEL_TWO_SIDE:
1062#endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
1063#if defined(GL_LINE_SMOOTH_HINT)
1064        case GL_LINE_SMOOTH_HINT:
1065#endif // defined(GL_LINE_SMOOTH_HINT)
1066#if defined(GL_LINE_WIDTH)
1067        case GL_LINE_WIDTH:
1068#endif // defined(GL_LINE_WIDTH)
1069#if defined(GL_LOGIC_OP_MODE)
1070        case GL_LOGIC_OP_MODE:
1071#endif // defined(GL_LOGIC_OP_MODE)
1072#if defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
1073        case GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES:
1074#endif // defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
1075#if defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
1076        case GL_MATRIX_INDEX_ARRAY_SIZE_OES:
1077#endif // defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
1078#if defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
1079        case GL_MATRIX_INDEX_ARRAY_STRIDE_OES:
1080#endif // defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
1081#if defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
1082        case GL_MATRIX_INDEX_ARRAY_TYPE_OES:
1083#endif // defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
1084#if defined(GL_MATRIX_MODE)
1085        case GL_MATRIX_MODE:
1086#endif // defined(GL_MATRIX_MODE)
1087#if defined(GL_MAX_CLIP_PLANES)
1088        case GL_MAX_CLIP_PLANES:
1089#endif // defined(GL_MAX_CLIP_PLANES)
1090#if defined(GL_MAX_ELEMENTS_INDICES)
1091        case GL_MAX_ELEMENTS_INDICES:
1092#endif // defined(GL_MAX_ELEMENTS_INDICES)
1093#if defined(GL_MAX_ELEMENTS_VERTICES)
1094        case GL_MAX_ELEMENTS_VERTICES:
1095#endif // defined(GL_MAX_ELEMENTS_VERTICES)
1096#if defined(GL_MAX_LIGHTS)
1097        case GL_MAX_LIGHTS:
1098#endif // defined(GL_MAX_LIGHTS)
1099#if defined(GL_MAX_MODELVIEW_STACK_DEPTH)
1100        case GL_MAX_MODELVIEW_STACK_DEPTH:
1101#endif // defined(GL_MAX_MODELVIEW_STACK_DEPTH)
1102#if defined(GL_MAX_PALETTE_MATRICES_OES)
1103        case GL_MAX_PALETTE_MATRICES_OES:
1104#endif // defined(GL_MAX_PALETTE_MATRICES_OES)
1105#if defined(GL_MAX_PROJECTION_STACK_DEPTH)
1106        case GL_MAX_PROJECTION_STACK_DEPTH:
1107#endif // defined(GL_MAX_PROJECTION_STACK_DEPTH)
1108#if defined(GL_MAX_TEXTURE_SIZE)
1109        case GL_MAX_TEXTURE_SIZE:
1110#endif // defined(GL_MAX_TEXTURE_SIZE)
1111#if defined(GL_MAX_TEXTURE_STACK_DEPTH)
1112        case GL_MAX_TEXTURE_STACK_DEPTH:
1113#endif // defined(GL_MAX_TEXTURE_STACK_DEPTH)
1114#if defined(GL_MAX_TEXTURE_UNITS)
1115        case GL_MAX_TEXTURE_UNITS:
1116#endif // defined(GL_MAX_TEXTURE_UNITS)
1117#if defined(GL_MAX_VERTEX_UNITS_OES)
1118        case GL_MAX_VERTEX_UNITS_OES:
1119#endif // defined(GL_MAX_VERTEX_UNITS_OES)
1120#if defined(GL_MODELVIEW_STACK_DEPTH)
1121        case GL_MODELVIEW_STACK_DEPTH:
1122#endif // defined(GL_MODELVIEW_STACK_DEPTH)
1123#if defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
1124        case GL_NORMAL_ARRAY_BUFFER_BINDING:
1125#endif // defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
1126#if defined(GL_NORMAL_ARRAY_STRIDE)
1127        case GL_NORMAL_ARRAY_STRIDE:
1128#endif // defined(GL_NORMAL_ARRAY_STRIDE)
1129#if defined(GL_NORMAL_ARRAY_TYPE)
1130        case GL_NORMAL_ARRAY_TYPE:
1131#endif // defined(GL_NORMAL_ARRAY_TYPE)
1132#if defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
1133        case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
1134#endif // defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
1135#if defined(GL_PACK_ALIGNMENT)
1136        case GL_PACK_ALIGNMENT:
1137#endif // defined(GL_PACK_ALIGNMENT)
1138#if defined(GL_PERSPECTIVE_CORRECTION_HINT)
1139        case GL_PERSPECTIVE_CORRECTION_HINT:
1140#endif // defined(GL_PERSPECTIVE_CORRECTION_HINT)
1141#if defined(GL_POINT_SIZE)
1142        case GL_POINT_SIZE:
1143#endif // defined(GL_POINT_SIZE)
1144#if defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
1145        case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
1146#endif // defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
1147#if defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
1148        case GL_POINT_SIZE_ARRAY_STRIDE_OES:
1149#endif // defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
1150#if defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
1151        case GL_POINT_SIZE_ARRAY_TYPE_OES:
1152#endif // defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
1153#if defined(GL_POINT_SMOOTH_HINT)
1154        case GL_POINT_SMOOTH_HINT:
1155#endif // defined(GL_POINT_SMOOTH_HINT)
1156#if defined(GL_POLYGON_OFFSET_FACTOR)
1157        case GL_POLYGON_OFFSET_FACTOR:
1158#endif // defined(GL_POLYGON_OFFSET_FACTOR)
1159#if defined(GL_POLYGON_OFFSET_UNITS)
1160        case GL_POLYGON_OFFSET_UNITS:
1161#endif // defined(GL_POLYGON_OFFSET_UNITS)
1162#if defined(GL_PROJECTION_STACK_DEPTH)
1163        case GL_PROJECTION_STACK_DEPTH:
1164#endif // defined(GL_PROJECTION_STACK_DEPTH)
1165#if defined(GL_RED_BITS)
1166        case GL_RED_BITS:
1167#endif // defined(GL_RED_BITS)
1168#if defined(GL_SHADE_MODEL)
1169        case GL_SHADE_MODEL:
1170#endif // defined(GL_SHADE_MODEL)
1171#if defined(GL_STENCIL_BITS)
1172        case GL_STENCIL_BITS:
1173#endif // defined(GL_STENCIL_BITS)
1174#if defined(GL_STENCIL_CLEAR_VALUE)
1175        case GL_STENCIL_CLEAR_VALUE:
1176#endif // defined(GL_STENCIL_CLEAR_VALUE)
1177#if defined(GL_STENCIL_FAIL)
1178        case GL_STENCIL_FAIL:
1179#endif // defined(GL_STENCIL_FAIL)
1180#if defined(GL_STENCIL_FUNC)
1181        case GL_STENCIL_FUNC:
1182#endif // defined(GL_STENCIL_FUNC)
1183#if defined(GL_STENCIL_PASS_DEPTH_FAIL)
1184        case GL_STENCIL_PASS_DEPTH_FAIL:
1185#endif // defined(GL_STENCIL_PASS_DEPTH_FAIL)
1186#if defined(GL_STENCIL_PASS_DEPTH_PASS)
1187        case GL_STENCIL_PASS_DEPTH_PASS:
1188#endif // defined(GL_STENCIL_PASS_DEPTH_PASS)
1189#if defined(GL_STENCIL_REF)
1190        case GL_STENCIL_REF:
1191#endif // defined(GL_STENCIL_REF)
1192#if defined(GL_STENCIL_VALUE_MASK)
1193        case GL_STENCIL_VALUE_MASK:
1194#endif // defined(GL_STENCIL_VALUE_MASK)
1195#if defined(GL_STENCIL_WRITEMASK)
1196        case GL_STENCIL_WRITEMASK:
1197#endif // defined(GL_STENCIL_WRITEMASK)
1198#if defined(GL_SUBPIXEL_BITS)
1199        case GL_SUBPIXEL_BITS:
1200#endif // defined(GL_SUBPIXEL_BITS)
1201#if defined(GL_TEXTURE_BINDING_2D)
1202        case GL_TEXTURE_BINDING_2D:
1203#endif // defined(GL_TEXTURE_BINDING_2D)
1204#if defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
1205        case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
1206#endif // defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
1207#if defined(GL_TEXTURE_COORD_ARRAY_SIZE)
1208        case GL_TEXTURE_COORD_ARRAY_SIZE:
1209#endif // defined(GL_TEXTURE_COORD_ARRAY_SIZE)
1210#if defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
1211        case GL_TEXTURE_COORD_ARRAY_STRIDE:
1212#endif // defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
1213#if defined(GL_TEXTURE_COORD_ARRAY_TYPE)
1214        case GL_TEXTURE_COORD_ARRAY_TYPE:
1215#endif // defined(GL_TEXTURE_COORD_ARRAY_TYPE)
1216#if defined(GL_TEXTURE_STACK_DEPTH)
1217        case GL_TEXTURE_STACK_DEPTH:
1218#endif // defined(GL_TEXTURE_STACK_DEPTH)
1219#if defined(GL_UNPACK_ALIGNMENT)
1220        case GL_UNPACK_ALIGNMENT:
1221#endif // defined(GL_UNPACK_ALIGNMENT)
1222#if defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
1223        case GL_VERTEX_ARRAY_BUFFER_BINDING:
1224#endif // defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
1225#if defined(GL_VERTEX_ARRAY_SIZE)
1226        case GL_VERTEX_ARRAY_SIZE:
1227#endif // defined(GL_VERTEX_ARRAY_SIZE)
1228#if defined(GL_VERTEX_ARRAY_STRIDE)
1229        case GL_VERTEX_ARRAY_STRIDE:
1230#endif // defined(GL_VERTEX_ARRAY_STRIDE)
1231#if defined(GL_VERTEX_ARRAY_TYPE)
1232        case GL_VERTEX_ARRAY_TYPE:
1233#endif // defined(GL_VERTEX_ARRAY_TYPE)
1234#if defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
1235        case GL_WEIGHT_ARRAY_BUFFER_BINDING_OES:
1236#endif // defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
1237#if defined(GL_WEIGHT_ARRAY_SIZE_OES)
1238        case GL_WEIGHT_ARRAY_SIZE_OES:
1239#endif // defined(GL_WEIGHT_ARRAY_SIZE_OES)
1240#if defined(GL_WEIGHT_ARRAY_STRIDE_OES)
1241        case GL_WEIGHT_ARRAY_STRIDE_OES:
1242#endif // defined(GL_WEIGHT_ARRAY_STRIDE_OES)
1243#if defined(GL_WEIGHT_ARRAY_TYPE_OES)
1244        case GL_WEIGHT_ARRAY_TYPE_OES:
1245#endif // defined(GL_WEIGHT_ARRAY_TYPE_OES)
1246            _needed = 1;
1247            break;
1248#if defined(GL_ALIASED_POINT_SIZE_RANGE)
1249        case GL_ALIASED_POINT_SIZE_RANGE:
1250#endif // defined(GL_ALIASED_POINT_SIZE_RANGE)
1251#if defined(GL_ALIASED_LINE_WIDTH_RANGE)
1252        case GL_ALIASED_LINE_WIDTH_RANGE:
1253#endif // defined(GL_ALIASED_LINE_WIDTH_RANGE)
1254#if defined(GL_DEPTH_RANGE)
1255        case GL_DEPTH_RANGE:
1256#endif // defined(GL_DEPTH_RANGE)
1257#if defined(GL_MAX_VIEWPORT_DIMS)
1258        case GL_MAX_VIEWPORT_DIMS:
1259#endif // defined(GL_MAX_VIEWPORT_DIMS)
1260#if defined(GL_SMOOTH_LINE_WIDTH_RANGE)
1261        case GL_SMOOTH_LINE_WIDTH_RANGE:
1262#endif // defined(GL_SMOOTH_LINE_WIDTH_RANGE)
1263#if defined(GL_SMOOTH_POINT_SIZE_RANGE)
1264        case GL_SMOOTH_POINT_SIZE_RANGE:
1265#endif // defined(GL_SMOOTH_POINT_SIZE_RANGE)
1266            _needed = 2;
1267            break;
1268#if defined(GL_COLOR_CLEAR_VALUE)
1269        case GL_COLOR_CLEAR_VALUE:
1270#endif // defined(GL_COLOR_CLEAR_VALUE)
1271#if defined(GL_COLOR_WRITEMASK)
1272        case GL_COLOR_WRITEMASK:
1273#endif // defined(GL_COLOR_WRITEMASK)
1274#if defined(GL_FOG_COLOR)
1275        case GL_FOG_COLOR:
1276#endif // defined(GL_FOG_COLOR)
1277#if defined(GL_LIGHT_MODEL_AMBIENT)
1278        case GL_LIGHT_MODEL_AMBIENT:
1279#endif // defined(GL_LIGHT_MODEL_AMBIENT)
1280#if defined(GL_SCISSOR_BOX)
1281        case GL_SCISSOR_BOX:
1282#endif // defined(GL_SCISSOR_BOX)
1283#if defined(GL_VIEWPORT)
1284        case GL_VIEWPORT:
1285#endif // defined(GL_VIEWPORT)
1286            _needed = 4;
1287            break;
1288#if defined(GL_MODELVIEW_MATRIX)
1289        case GL_MODELVIEW_MATRIX:
1290#endif // defined(GL_MODELVIEW_MATRIX)
1291#if defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
1292        case GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES:
1293#endif // defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
1294#if defined(GL_PROJECTION_MATRIX)
1295        case GL_PROJECTION_MATRIX:
1296#endif // defined(GL_PROJECTION_MATRIX)
1297#if defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
1298        case GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES:
1299#endif // defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
1300#if defined(GL_TEXTURE_MATRIX)
1301        case GL_TEXTURE_MATRIX:
1302#endif // defined(GL_TEXTURE_MATRIX)
1303#if defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
1304        case GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES:
1305#endif // defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
1306            _needed = 16;
1307            break;
1308#if defined(GL_COMPRESSED_TEXTURE_FORMATS)
1309        case GL_COMPRESSED_TEXTURE_FORMATS:
1310#endif // defined(GL_COMPRESSED_TEXTURE_FORMATS)
1311            _needed = getNumCompressedTextureFormats();
1312            break;
1313        default:
1314            _needed = 0;
1315            break;
1316    }
1317    if (_remaining < _needed) {
1318        _exception = 1;
1319        _env->ThrowNew(IAEClass, "length - offset < needed");
1320        goto exit;
1321    }
1322    params_base = (GLint *)
1323        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
1324    params = params_base + offset;
1325
1326    glGetIntegerv(
1327        (GLenum)pname,
1328        (GLint *)params
1329    );
1330
1331exit:
1332    if (params_base) {
1333        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
1334            _exception ? JNI_ABORT: 0);
1335    }
1336}
1337
1338/* void glGetIntegerv ( GLenum pname, GLint *params ) */
1339static void
1340android_glGetIntegerv__ILjava_nio_IntBuffer_2
1341  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
1342    jint _exception = 0;
1343    jarray _array = (jarray) 0;
1344    jint _remaining;
1345    GLint *params = (GLint *) 0;
1346
1347    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining);
1348    int _needed;
1349    switch (pname) {
1350#if defined(GL_ALPHA_BITS)
1351        case GL_ALPHA_BITS:
1352#endif // defined(GL_ALPHA_BITS)
1353#if defined(GL_ALPHA_TEST_FUNC)
1354        case GL_ALPHA_TEST_FUNC:
1355#endif // defined(GL_ALPHA_TEST_FUNC)
1356#if defined(GL_ALPHA_TEST_REF)
1357        case GL_ALPHA_TEST_REF:
1358#endif // defined(GL_ALPHA_TEST_REF)
1359#if defined(GL_BLEND_DST)
1360        case GL_BLEND_DST:
1361#endif // defined(GL_BLEND_DST)
1362#if defined(GL_BLUE_BITS)
1363        case GL_BLUE_BITS:
1364#endif // defined(GL_BLUE_BITS)
1365#if defined(GL_COLOR_ARRAY_BUFFER_BINDING)
1366        case GL_COLOR_ARRAY_BUFFER_BINDING:
1367#endif // defined(GL_COLOR_ARRAY_BUFFER_BINDING)
1368#if defined(GL_COLOR_ARRAY_SIZE)
1369        case GL_COLOR_ARRAY_SIZE:
1370#endif // defined(GL_COLOR_ARRAY_SIZE)
1371#if defined(GL_COLOR_ARRAY_STRIDE)
1372        case GL_COLOR_ARRAY_STRIDE:
1373#endif // defined(GL_COLOR_ARRAY_STRIDE)
1374#if defined(GL_COLOR_ARRAY_TYPE)
1375        case GL_COLOR_ARRAY_TYPE:
1376#endif // defined(GL_COLOR_ARRAY_TYPE)
1377#if defined(GL_CULL_FACE)
1378        case GL_CULL_FACE:
1379#endif // defined(GL_CULL_FACE)
1380#if defined(GL_DEPTH_BITS)
1381        case GL_DEPTH_BITS:
1382#endif // defined(GL_DEPTH_BITS)
1383#if defined(GL_DEPTH_CLEAR_VALUE)
1384        case GL_DEPTH_CLEAR_VALUE:
1385#endif // defined(GL_DEPTH_CLEAR_VALUE)
1386#if defined(GL_DEPTH_FUNC)
1387        case GL_DEPTH_FUNC:
1388#endif // defined(GL_DEPTH_FUNC)
1389#if defined(GL_DEPTH_WRITEMASK)
1390        case GL_DEPTH_WRITEMASK:
1391#endif // defined(GL_DEPTH_WRITEMASK)
1392#if defined(GL_FOG_DENSITY)
1393        case GL_FOG_DENSITY:
1394#endif // defined(GL_FOG_DENSITY)
1395#if defined(GL_FOG_END)
1396        case GL_FOG_END:
1397#endif // defined(GL_FOG_END)
1398#if defined(GL_FOG_MODE)
1399        case GL_FOG_MODE:
1400#endif // defined(GL_FOG_MODE)
1401#if defined(GL_FOG_START)
1402        case GL_FOG_START:
1403#endif // defined(GL_FOG_START)
1404#if defined(GL_FRONT_FACE)
1405        case GL_FRONT_FACE:
1406#endif // defined(GL_FRONT_FACE)
1407#if defined(GL_GREEN_BITS)
1408        case GL_GREEN_BITS:
1409#endif // defined(GL_GREEN_BITS)
1410#if defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
1411        case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
1412#endif // defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
1413#if defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
1414        case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
1415#endif // defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
1416#if defined(GL_LIGHT_MODEL_COLOR_CONTROL)
1417        case GL_LIGHT_MODEL_COLOR_CONTROL:
1418#endif // defined(GL_LIGHT_MODEL_COLOR_CONTROL)
1419#if defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
1420        case GL_LIGHT_MODEL_LOCAL_VIEWER:
1421#endif // defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
1422#if defined(GL_LIGHT_MODEL_TWO_SIDE)
1423        case GL_LIGHT_MODEL_TWO_SIDE:
1424#endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
1425#if defined(GL_LINE_SMOOTH_HINT)
1426        case GL_LINE_SMOOTH_HINT:
1427#endif // defined(GL_LINE_SMOOTH_HINT)
1428#if defined(GL_LINE_WIDTH)
1429        case GL_LINE_WIDTH:
1430#endif // defined(GL_LINE_WIDTH)
1431#if defined(GL_LOGIC_OP_MODE)
1432        case GL_LOGIC_OP_MODE:
1433#endif // defined(GL_LOGIC_OP_MODE)
1434#if defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
1435        case GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES:
1436#endif // defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
1437#if defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
1438        case GL_MATRIX_INDEX_ARRAY_SIZE_OES:
1439#endif // defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
1440#if defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
1441        case GL_MATRIX_INDEX_ARRAY_STRIDE_OES:
1442#endif // defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
1443#if defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
1444        case GL_MATRIX_INDEX_ARRAY_TYPE_OES:
1445#endif // defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
1446#if defined(GL_MATRIX_MODE)
1447        case GL_MATRIX_MODE:
1448#endif // defined(GL_MATRIX_MODE)
1449#if defined(GL_MAX_CLIP_PLANES)
1450        case GL_MAX_CLIP_PLANES:
1451#endif // defined(GL_MAX_CLIP_PLANES)
1452#if defined(GL_MAX_ELEMENTS_INDICES)
1453        case GL_MAX_ELEMENTS_INDICES:
1454#endif // defined(GL_MAX_ELEMENTS_INDICES)
1455#if defined(GL_MAX_ELEMENTS_VERTICES)
1456        case GL_MAX_ELEMENTS_VERTICES:
1457#endif // defined(GL_MAX_ELEMENTS_VERTICES)
1458#if defined(GL_MAX_LIGHTS)
1459        case GL_MAX_LIGHTS:
1460#endif // defined(GL_MAX_LIGHTS)
1461#if defined(GL_MAX_MODELVIEW_STACK_DEPTH)
1462        case GL_MAX_MODELVIEW_STACK_DEPTH:
1463#endif // defined(GL_MAX_MODELVIEW_STACK_DEPTH)
1464#if defined(GL_MAX_PALETTE_MATRICES_OES)
1465        case GL_MAX_PALETTE_MATRICES_OES:
1466#endif // defined(GL_MAX_PALETTE_MATRICES_OES)
1467#if defined(GL_MAX_PROJECTION_STACK_DEPTH)
1468        case GL_MAX_PROJECTION_STACK_DEPTH:
1469#endif // defined(GL_MAX_PROJECTION_STACK_DEPTH)
1470#if defined(GL_MAX_TEXTURE_SIZE)
1471        case GL_MAX_TEXTURE_SIZE:
1472#endif // defined(GL_MAX_TEXTURE_SIZE)
1473#if defined(GL_MAX_TEXTURE_STACK_DEPTH)
1474        case GL_MAX_TEXTURE_STACK_DEPTH:
1475#endif // defined(GL_MAX_TEXTURE_STACK_DEPTH)
1476#if defined(GL_MAX_TEXTURE_UNITS)
1477        case GL_MAX_TEXTURE_UNITS:
1478#endif // defined(GL_MAX_TEXTURE_UNITS)
1479#if defined(GL_MAX_VERTEX_UNITS_OES)
1480        case GL_MAX_VERTEX_UNITS_OES:
1481#endif // defined(GL_MAX_VERTEX_UNITS_OES)
1482#if defined(GL_MODELVIEW_STACK_DEPTH)
1483        case GL_MODELVIEW_STACK_DEPTH:
1484#endif // defined(GL_MODELVIEW_STACK_DEPTH)
1485#if defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
1486        case GL_NORMAL_ARRAY_BUFFER_BINDING:
1487#endif // defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
1488#if defined(GL_NORMAL_ARRAY_STRIDE)
1489        case GL_NORMAL_ARRAY_STRIDE:
1490#endif // defined(GL_NORMAL_ARRAY_STRIDE)
1491#if defined(GL_NORMAL_ARRAY_TYPE)
1492        case GL_NORMAL_ARRAY_TYPE:
1493#endif // defined(GL_NORMAL_ARRAY_TYPE)
1494#if defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
1495        case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
1496#endif // defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
1497#if defined(GL_PACK_ALIGNMENT)
1498        case GL_PACK_ALIGNMENT:
1499#endif // defined(GL_PACK_ALIGNMENT)
1500#if defined(GL_PERSPECTIVE_CORRECTION_HINT)
1501        case GL_PERSPECTIVE_CORRECTION_HINT:
1502#endif // defined(GL_PERSPECTIVE_CORRECTION_HINT)
1503#if defined(GL_POINT_SIZE)
1504        case GL_POINT_SIZE:
1505#endif // defined(GL_POINT_SIZE)
1506#if defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
1507        case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
1508#endif // defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
1509#if defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
1510        case GL_POINT_SIZE_ARRAY_STRIDE_OES:
1511#endif // defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
1512#if defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
1513        case GL_POINT_SIZE_ARRAY_TYPE_OES:
1514#endif // defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
1515#if defined(GL_POINT_SMOOTH_HINT)
1516        case GL_POINT_SMOOTH_HINT:
1517#endif // defined(GL_POINT_SMOOTH_HINT)
1518#if defined(GL_POLYGON_OFFSET_FACTOR)
1519        case GL_POLYGON_OFFSET_FACTOR:
1520#endif // defined(GL_POLYGON_OFFSET_FACTOR)
1521#if defined(GL_POLYGON_OFFSET_UNITS)
1522        case GL_POLYGON_OFFSET_UNITS:
1523#endif // defined(GL_POLYGON_OFFSET_UNITS)
1524#if defined(GL_PROJECTION_STACK_DEPTH)
1525        case GL_PROJECTION_STACK_DEPTH:
1526#endif // defined(GL_PROJECTION_STACK_DEPTH)
1527#if defined(GL_RED_BITS)
1528        case GL_RED_BITS:
1529#endif // defined(GL_RED_BITS)
1530#if defined(GL_SHADE_MODEL)
1531        case GL_SHADE_MODEL:
1532#endif // defined(GL_SHADE_MODEL)
1533#if defined(GL_STENCIL_BITS)
1534        case GL_STENCIL_BITS:
1535#endif // defined(GL_STENCIL_BITS)
1536#if defined(GL_STENCIL_CLEAR_VALUE)
1537        case GL_STENCIL_CLEAR_VALUE:
1538#endif // defined(GL_STENCIL_CLEAR_VALUE)
1539#if defined(GL_STENCIL_FAIL)
1540        case GL_STENCIL_FAIL:
1541#endif // defined(GL_STENCIL_FAIL)
1542#if defined(GL_STENCIL_FUNC)
1543        case GL_STENCIL_FUNC:
1544#endif // defined(GL_STENCIL_FUNC)
1545#if defined(GL_STENCIL_PASS_DEPTH_FAIL)
1546        case GL_STENCIL_PASS_DEPTH_FAIL:
1547#endif // defined(GL_STENCIL_PASS_DEPTH_FAIL)
1548#if defined(GL_STENCIL_PASS_DEPTH_PASS)
1549        case GL_STENCIL_PASS_DEPTH_PASS:
1550#endif // defined(GL_STENCIL_PASS_DEPTH_PASS)
1551#if defined(GL_STENCIL_REF)
1552        case GL_STENCIL_REF:
1553#endif // defined(GL_STENCIL_REF)
1554#if defined(GL_STENCIL_VALUE_MASK)
1555        case GL_STENCIL_VALUE_MASK:
1556#endif // defined(GL_STENCIL_VALUE_MASK)
1557#if defined(GL_STENCIL_WRITEMASK)
1558        case GL_STENCIL_WRITEMASK:
1559#endif // defined(GL_STENCIL_WRITEMASK)
1560#if defined(GL_SUBPIXEL_BITS)
1561        case GL_SUBPIXEL_BITS:
1562#endif // defined(GL_SUBPIXEL_BITS)
1563#if defined(GL_TEXTURE_BINDING_2D)
1564        case GL_TEXTURE_BINDING_2D:
1565#endif // defined(GL_TEXTURE_BINDING_2D)
1566#if defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
1567        case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
1568#endif // defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
1569#if defined(GL_TEXTURE_COORD_ARRAY_SIZE)
1570        case GL_TEXTURE_COORD_ARRAY_SIZE:
1571#endif // defined(GL_TEXTURE_COORD_ARRAY_SIZE)
1572#if defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
1573        case GL_TEXTURE_COORD_ARRAY_STRIDE:
1574#endif // defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
1575#if defined(GL_TEXTURE_COORD_ARRAY_TYPE)
1576        case GL_TEXTURE_COORD_ARRAY_TYPE:
1577#endif // defined(GL_TEXTURE_COORD_ARRAY_TYPE)
1578#if defined(GL_TEXTURE_STACK_DEPTH)
1579        case GL_TEXTURE_STACK_DEPTH:
1580#endif // defined(GL_TEXTURE_STACK_DEPTH)
1581#if defined(GL_UNPACK_ALIGNMENT)
1582        case GL_UNPACK_ALIGNMENT:
1583#endif // defined(GL_UNPACK_ALIGNMENT)
1584#if defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
1585        case GL_VERTEX_ARRAY_BUFFER_BINDING:
1586#endif // defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
1587#if defined(GL_VERTEX_ARRAY_SIZE)
1588        case GL_VERTEX_ARRAY_SIZE:
1589#endif // defined(GL_VERTEX_ARRAY_SIZE)
1590#if defined(GL_VERTEX_ARRAY_STRIDE)
1591        case GL_VERTEX_ARRAY_STRIDE:
1592#endif // defined(GL_VERTEX_ARRAY_STRIDE)
1593#if defined(GL_VERTEX_ARRAY_TYPE)
1594        case GL_VERTEX_ARRAY_TYPE:
1595#endif // defined(GL_VERTEX_ARRAY_TYPE)
1596#if defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
1597        case GL_WEIGHT_ARRAY_BUFFER_BINDING_OES:
1598#endif // defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
1599#if defined(GL_WEIGHT_ARRAY_SIZE_OES)
1600        case GL_WEIGHT_ARRAY_SIZE_OES:
1601#endif // defined(GL_WEIGHT_ARRAY_SIZE_OES)
1602#if defined(GL_WEIGHT_ARRAY_STRIDE_OES)
1603        case GL_WEIGHT_ARRAY_STRIDE_OES:
1604#endif // defined(GL_WEIGHT_ARRAY_STRIDE_OES)
1605#if defined(GL_WEIGHT_ARRAY_TYPE_OES)
1606        case GL_WEIGHT_ARRAY_TYPE_OES:
1607#endif // defined(GL_WEIGHT_ARRAY_TYPE_OES)
1608            _needed = 1;
1609            break;
1610#if defined(GL_ALIASED_POINT_SIZE_RANGE)
1611        case GL_ALIASED_POINT_SIZE_RANGE:
1612#endif // defined(GL_ALIASED_POINT_SIZE_RANGE)
1613#if defined(GL_ALIASED_LINE_WIDTH_RANGE)
1614        case GL_ALIASED_LINE_WIDTH_RANGE:
1615#endif // defined(GL_ALIASED_LINE_WIDTH_RANGE)
1616#if defined(GL_DEPTH_RANGE)
1617        case GL_DEPTH_RANGE:
1618#endif // defined(GL_DEPTH_RANGE)
1619#if defined(GL_MAX_VIEWPORT_DIMS)
1620        case GL_MAX_VIEWPORT_DIMS:
1621#endif // defined(GL_MAX_VIEWPORT_DIMS)
1622#if defined(GL_SMOOTH_LINE_WIDTH_RANGE)
1623        case GL_SMOOTH_LINE_WIDTH_RANGE:
1624#endif // defined(GL_SMOOTH_LINE_WIDTH_RANGE)
1625#if defined(GL_SMOOTH_POINT_SIZE_RANGE)
1626        case GL_SMOOTH_POINT_SIZE_RANGE:
1627#endif // defined(GL_SMOOTH_POINT_SIZE_RANGE)
1628            _needed = 2;
1629            break;
1630#if defined(GL_COLOR_CLEAR_VALUE)
1631        case GL_COLOR_CLEAR_VALUE:
1632#endif // defined(GL_COLOR_CLEAR_VALUE)
1633#if defined(GL_COLOR_WRITEMASK)
1634        case GL_COLOR_WRITEMASK:
1635#endif // defined(GL_COLOR_WRITEMASK)
1636#if defined(GL_FOG_COLOR)
1637        case GL_FOG_COLOR:
1638#endif // defined(GL_FOG_COLOR)
1639#if defined(GL_LIGHT_MODEL_AMBIENT)
1640        case GL_LIGHT_MODEL_AMBIENT:
1641#endif // defined(GL_LIGHT_MODEL_AMBIENT)
1642#if defined(GL_SCISSOR_BOX)
1643        case GL_SCISSOR_BOX:
1644#endif // defined(GL_SCISSOR_BOX)
1645#if defined(GL_VIEWPORT)
1646        case GL_VIEWPORT:
1647#endif // defined(GL_VIEWPORT)
1648            _needed = 4;
1649            break;
1650#if defined(GL_MODELVIEW_MATRIX)
1651        case GL_MODELVIEW_MATRIX:
1652#endif // defined(GL_MODELVIEW_MATRIX)
1653#if defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
1654        case GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES:
1655#endif // defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
1656#if defined(GL_PROJECTION_MATRIX)
1657        case GL_PROJECTION_MATRIX:
1658#endif // defined(GL_PROJECTION_MATRIX)
1659#if defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
1660        case GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES:
1661#endif // defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
1662#if defined(GL_TEXTURE_MATRIX)
1663        case GL_TEXTURE_MATRIX:
1664#endif // defined(GL_TEXTURE_MATRIX)
1665#if defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
1666        case GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES:
1667#endif // defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
1668            _needed = 16;
1669            break;
1670#if defined(GL_COMPRESSED_TEXTURE_FORMATS)
1671        case GL_COMPRESSED_TEXTURE_FORMATS:
1672#endif // defined(GL_COMPRESSED_TEXTURE_FORMATS)
1673            _needed = getNumCompressedTextureFormats();
1674            break;
1675        default:
1676            _needed = 0;
1677            break;
1678    }
1679    if (_remaining < _needed) {
1680        _exception = 1;
1681        _env->ThrowNew(IAEClass, "remaining() < needed");
1682        goto exit;
1683    }
1684    glGetIntegerv(
1685        (GLenum)pname,
1686        (GLint *)params
1687    );
1688
1689exit:
1690    if (_array) {
1691        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
1692    }
1693}
1694
1695#include <string.h>
1696
1697/* const GLubyte * glGetString ( GLenum name ) */
1698static
1699jstring
1700android_glGetString
1701  (JNIEnv *_env, jobject _this, jint name) {
1702    const char * chars = (const char *)glGetString((GLenum)name);
1703    jstring output = _env->NewStringUTF(chars);
1704    return output;
1705}
1706/* void glHint ( GLenum target, GLenum mode ) */
1707static void
1708android_glHint__II
1709  (JNIEnv *_env, jobject _this, jint target, jint mode) {
1710    glHint(
1711        (GLenum)target,
1712        (GLenum)mode
1713    );
1714}
1715
1716/* void glLightModelf ( GLenum pname, GLfloat param ) */
1717static void
1718android_glLightModelf__IF
1719  (JNIEnv *_env, jobject _this, jint pname, jfloat param) {
1720    glLightModelf(
1721        (GLenum)pname,
1722        (GLfloat)param
1723    );
1724}
1725
1726/* void glLightModelfv ( GLenum pname, const GLfloat *params ) */
1727static void
1728android_glLightModelfv__I_3FI
1729  (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
1730    GLfloat *params_base = (GLfloat *) 0;
1731    jint _remaining;
1732    GLfloat *params = (GLfloat *) 0;
1733
1734    if (!params_ref) {
1735        _env->ThrowNew(IAEClass, "params == null");
1736        goto exit;
1737    }
1738    if (offset < 0) {
1739        _env->ThrowNew(IAEClass, "offset < 0");
1740        goto exit;
1741    }
1742    _remaining = _env->GetArrayLength(params_ref) - offset;
1743    int _needed;
1744    switch (pname) {
1745#if defined(GL_LIGHT_MODEL_TWO_SIDE)
1746        case GL_LIGHT_MODEL_TWO_SIDE:
1747#endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
1748            _needed = 1;
1749            break;
1750#if defined(GL_LIGHT_MODEL_AMBIENT)
1751        case GL_LIGHT_MODEL_AMBIENT:
1752#endif // defined(GL_LIGHT_MODEL_AMBIENT)
1753            _needed = 4;
1754            break;
1755        default:
1756            _needed = 0;
1757            break;
1758    }
1759    if (_remaining < _needed) {
1760        _env->ThrowNew(IAEClass, "length - offset < needed");
1761        goto exit;
1762    }
1763    params_base = (GLfloat *)
1764        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
1765    params = params_base + offset;
1766
1767    glLightModelfv(
1768        (GLenum)pname,
1769        (GLfloat *)params
1770    );
1771
1772exit:
1773    if (params_base) {
1774        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
1775            JNI_ABORT);
1776    }
1777}
1778
1779/* void glLightModelfv ( GLenum pname, const GLfloat *params ) */
1780static void
1781android_glLightModelfv__ILjava_nio_FloatBuffer_2
1782  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
1783    jarray _array = (jarray) 0;
1784    jint _remaining;
1785    GLfloat *params = (GLfloat *) 0;
1786
1787    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
1788    int _needed;
1789    switch (pname) {
1790#if defined(GL_LIGHT_MODEL_TWO_SIDE)
1791        case GL_LIGHT_MODEL_TWO_SIDE:
1792#endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
1793            _needed = 1;
1794            break;
1795#if defined(GL_LIGHT_MODEL_AMBIENT)
1796        case GL_LIGHT_MODEL_AMBIENT:
1797#endif // defined(GL_LIGHT_MODEL_AMBIENT)
1798            _needed = 4;
1799            break;
1800        default:
1801            _needed = 0;
1802            break;
1803    }
1804    if (_remaining < _needed) {
1805        _env->ThrowNew(IAEClass, "remaining() < needed");
1806        goto exit;
1807    }
1808    glLightModelfv(
1809        (GLenum)pname,
1810        (GLfloat *)params
1811    );
1812
1813exit:
1814    if (_array) {
1815        releasePointer(_env, _array, params, JNI_FALSE);
1816    }
1817}
1818
1819/* void glLightModelx ( GLenum pname, GLfixed param ) */
1820static void
1821android_glLightModelx__II
1822  (JNIEnv *_env, jobject _this, jint pname, jint param) {
1823    glLightModelx(
1824        (GLenum)pname,
1825        (GLfixed)param
1826    );
1827}
1828
1829/* void glLightModelxv ( GLenum pname, const GLfixed *params ) */
1830static void
1831android_glLightModelxv__I_3II
1832  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
1833    GLfixed *params_base = (GLfixed *) 0;
1834    jint _remaining;
1835    GLfixed *params = (GLfixed *) 0;
1836
1837    if (!params_ref) {
1838        _env->ThrowNew(IAEClass, "params == null");
1839        goto exit;
1840    }
1841    if (offset < 0) {
1842        _env->ThrowNew(IAEClass, "offset < 0");
1843        goto exit;
1844    }
1845    _remaining = _env->GetArrayLength(params_ref) - offset;
1846    int _needed;
1847    switch (pname) {
1848#if defined(GL_LIGHT_MODEL_TWO_SIDE)
1849        case GL_LIGHT_MODEL_TWO_SIDE:
1850#endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
1851            _needed = 1;
1852            break;
1853#if defined(GL_LIGHT_MODEL_AMBIENT)
1854        case GL_LIGHT_MODEL_AMBIENT:
1855#endif // defined(GL_LIGHT_MODEL_AMBIENT)
1856            _needed = 4;
1857            break;
1858        default:
1859            _needed = 0;
1860            break;
1861    }
1862    if (_remaining < _needed) {
1863        _env->ThrowNew(IAEClass, "length - offset < needed");
1864        goto exit;
1865    }
1866    params_base = (GLfixed *)
1867        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
1868    params = params_base + offset;
1869
1870    glLightModelxv(
1871        (GLenum)pname,
1872        (GLfixed *)params
1873    );
1874
1875exit:
1876    if (params_base) {
1877        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
1878            JNI_ABORT);
1879    }
1880}
1881
1882/* void glLightModelxv ( GLenum pname, const GLfixed *params ) */
1883static void
1884android_glLightModelxv__ILjava_nio_IntBuffer_2
1885  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
1886    jarray _array = (jarray) 0;
1887    jint _remaining;
1888    GLfixed *params = (GLfixed *) 0;
1889
1890    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining);
1891    int _needed;
1892    switch (pname) {
1893#if defined(GL_LIGHT_MODEL_TWO_SIDE)
1894        case GL_LIGHT_MODEL_TWO_SIDE:
1895#endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
1896            _needed = 1;
1897            break;
1898#if defined(GL_LIGHT_MODEL_AMBIENT)
1899        case GL_LIGHT_MODEL_AMBIENT:
1900#endif // defined(GL_LIGHT_MODEL_AMBIENT)
1901            _needed = 4;
1902            break;
1903        default:
1904            _needed = 0;
1905            break;
1906    }
1907    if (_remaining < _needed) {
1908        _env->ThrowNew(IAEClass, "remaining() < needed");
1909        goto exit;
1910    }
1911    glLightModelxv(
1912        (GLenum)pname,
1913        (GLfixed *)params
1914    );
1915
1916exit:
1917    if (_array) {
1918        releasePointer(_env, _array, params, JNI_FALSE);
1919    }
1920}
1921
1922/* void glLightf ( GLenum light, GLenum pname, GLfloat param ) */
1923static void
1924android_glLightf__IIF
1925  (JNIEnv *_env, jobject _this, jint light, jint pname, jfloat param) {
1926    glLightf(
1927        (GLenum)light,
1928        (GLenum)pname,
1929        (GLfloat)param
1930    );
1931}
1932
1933/* void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) */
1934static void
1935android_glLightfv__II_3FI
1936  (JNIEnv *_env, jobject _this, jint light, jint pname, jfloatArray params_ref, jint offset) {
1937    GLfloat *params_base = (GLfloat *) 0;
1938    jint _remaining;
1939    GLfloat *params = (GLfloat *) 0;
1940
1941    if (!params_ref) {
1942        _env->ThrowNew(IAEClass, "params == null");
1943        goto exit;
1944    }
1945    if (offset < 0) {
1946        _env->ThrowNew(IAEClass, "offset < 0");
1947        goto exit;
1948    }
1949    _remaining = _env->GetArrayLength(params_ref) - offset;
1950    int _needed;
1951    switch (pname) {
1952#if defined(GL_SPOT_EXPONENT)
1953        case GL_SPOT_EXPONENT:
1954#endif // defined(GL_SPOT_EXPONENT)
1955#if defined(GL_SPOT_CUTOFF)
1956        case GL_SPOT_CUTOFF:
1957#endif // defined(GL_SPOT_CUTOFF)
1958#if defined(GL_CONSTANT_ATTENUATION)
1959        case GL_CONSTANT_ATTENUATION:
1960#endif // defined(GL_CONSTANT_ATTENUATION)
1961#if defined(GL_LINEAR_ATTENUATION)
1962        case GL_LINEAR_ATTENUATION:
1963#endif // defined(GL_LINEAR_ATTENUATION)
1964#if defined(GL_QUADRATIC_ATTENUATION)
1965        case GL_QUADRATIC_ATTENUATION:
1966#endif // defined(GL_QUADRATIC_ATTENUATION)
1967            _needed = 1;
1968            break;
1969#if defined(GL_SPOT_DIRECTION)
1970        case GL_SPOT_DIRECTION:
1971#endif // defined(GL_SPOT_DIRECTION)
1972            _needed = 3;
1973            break;
1974#if defined(GL_AMBIENT)
1975        case GL_AMBIENT:
1976#endif // defined(GL_AMBIENT)
1977#if defined(GL_DIFFUSE)
1978        case GL_DIFFUSE:
1979#endif // defined(GL_DIFFUSE)
1980#if defined(GL_SPECULAR)
1981        case GL_SPECULAR:
1982#endif // defined(GL_SPECULAR)
1983#if defined(GL_EMISSION)
1984        case GL_EMISSION:
1985#endif // defined(GL_EMISSION)
1986            _needed = 4;
1987            break;
1988        default:
1989            _needed = 0;
1990            break;
1991    }
1992    if (_remaining < _needed) {
1993        _env->ThrowNew(IAEClass, "length - offset < needed");
1994        goto exit;
1995    }
1996    params_base = (GLfloat *)
1997        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
1998    params = params_base + offset;
1999
2000    glLightfv(
2001        (GLenum)light,
2002        (GLenum)pname,
2003        (GLfloat *)params
2004    );
2005
2006exit:
2007    if (params_base) {
2008        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2009            JNI_ABORT);
2010    }
2011}
2012
2013/* void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) */
2014static void
2015android_glLightfv__IILjava_nio_FloatBuffer_2
2016  (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
2017    jarray _array = (jarray) 0;
2018    jint _remaining;
2019    GLfloat *params = (GLfloat *) 0;
2020
2021    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
2022    int _needed;
2023    switch (pname) {
2024#if defined(GL_SPOT_EXPONENT)
2025        case GL_SPOT_EXPONENT:
2026#endif // defined(GL_SPOT_EXPONENT)
2027#if defined(GL_SPOT_CUTOFF)
2028        case GL_SPOT_CUTOFF:
2029#endif // defined(GL_SPOT_CUTOFF)
2030#if defined(GL_CONSTANT_ATTENUATION)
2031        case GL_CONSTANT_ATTENUATION:
2032#endif // defined(GL_CONSTANT_ATTENUATION)
2033#if defined(GL_LINEAR_ATTENUATION)
2034        case GL_LINEAR_ATTENUATION:
2035#endif // defined(GL_LINEAR_ATTENUATION)
2036#if defined(GL_QUADRATIC_ATTENUATION)
2037        case GL_QUADRATIC_ATTENUATION:
2038#endif // defined(GL_QUADRATIC_ATTENUATION)
2039            _needed = 1;
2040            break;
2041#if defined(GL_SPOT_DIRECTION)
2042        case GL_SPOT_DIRECTION:
2043#endif // defined(GL_SPOT_DIRECTION)
2044            _needed = 3;
2045            break;
2046#if defined(GL_AMBIENT)
2047        case GL_AMBIENT:
2048#endif // defined(GL_AMBIENT)
2049#if defined(GL_DIFFUSE)
2050        case GL_DIFFUSE:
2051#endif // defined(GL_DIFFUSE)
2052#if defined(GL_SPECULAR)
2053        case GL_SPECULAR:
2054#endif // defined(GL_SPECULAR)
2055#if defined(GL_EMISSION)
2056        case GL_EMISSION:
2057#endif // defined(GL_EMISSION)
2058            _needed = 4;
2059            break;
2060        default:
2061            _needed = 0;
2062            break;
2063    }
2064    if (_remaining < _needed) {
2065        _env->ThrowNew(IAEClass, "remaining() < needed");
2066        goto exit;
2067    }
2068    glLightfv(
2069        (GLenum)light,
2070        (GLenum)pname,
2071        (GLfloat *)params
2072    );
2073
2074exit:
2075    if (_array) {
2076        releasePointer(_env, _array, params, JNI_FALSE);
2077    }
2078}
2079
2080/* void glLightx ( GLenum light, GLenum pname, GLfixed param ) */
2081static void
2082android_glLightx__III
2083  (JNIEnv *_env, jobject _this, jint light, jint pname, jint param) {
2084    glLightx(
2085        (GLenum)light,
2086        (GLenum)pname,
2087        (GLfixed)param
2088    );
2089}
2090
2091/* void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) */
2092static void
2093android_glLightxv__II_3II
2094  (JNIEnv *_env, jobject _this, jint light, jint pname, jintArray params_ref, jint offset) {
2095    GLfixed *params_base = (GLfixed *) 0;
2096    jint _remaining;
2097    GLfixed *params = (GLfixed *) 0;
2098
2099    if (!params_ref) {
2100        _env->ThrowNew(IAEClass, "params == null");
2101        goto exit;
2102    }
2103    if (offset < 0) {
2104        _env->ThrowNew(IAEClass, "offset < 0");
2105        goto exit;
2106    }
2107    _remaining = _env->GetArrayLength(params_ref) - offset;
2108    int _needed;
2109    switch (pname) {
2110#if defined(GL_SPOT_EXPONENT)
2111        case GL_SPOT_EXPONENT:
2112#endif // defined(GL_SPOT_EXPONENT)
2113#if defined(GL_SPOT_CUTOFF)
2114        case GL_SPOT_CUTOFF:
2115#endif // defined(GL_SPOT_CUTOFF)
2116#if defined(GL_CONSTANT_ATTENUATION)
2117        case GL_CONSTANT_ATTENUATION:
2118#endif // defined(GL_CONSTANT_ATTENUATION)
2119#if defined(GL_LINEAR_ATTENUATION)
2120        case GL_LINEAR_ATTENUATION:
2121#endif // defined(GL_LINEAR_ATTENUATION)
2122#if defined(GL_QUADRATIC_ATTENUATION)
2123        case GL_QUADRATIC_ATTENUATION:
2124#endif // defined(GL_QUADRATIC_ATTENUATION)
2125            _needed = 1;
2126            break;
2127#if defined(GL_SPOT_DIRECTION)
2128        case GL_SPOT_DIRECTION:
2129#endif // defined(GL_SPOT_DIRECTION)
2130            _needed = 3;
2131            break;
2132#if defined(GL_AMBIENT)
2133        case GL_AMBIENT:
2134#endif // defined(GL_AMBIENT)
2135#if defined(GL_DIFFUSE)
2136        case GL_DIFFUSE:
2137#endif // defined(GL_DIFFUSE)
2138#if defined(GL_SPECULAR)
2139        case GL_SPECULAR:
2140#endif // defined(GL_SPECULAR)
2141#if defined(GL_EMISSION)
2142        case GL_EMISSION:
2143#endif // defined(GL_EMISSION)
2144            _needed = 4;
2145            break;
2146        default:
2147            _needed = 0;
2148            break;
2149    }
2150    if (_remaining < _needed) {
2151        _env->ThrowNew(IAEClass, "length - offset < needed");
2152        goto exit;
2153    }
2154    params_base = (GLfixed *)
2155        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2156    params = params_base + offset;
2157
2158    glLightxv(
2159        (GLenum)light,
2160        (GLenum)pname,
2161        (GLfixed *)params
2162    );
2163
2164exit:
2165    if (params_base) {
2166        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2167            JNI_ABORT);
2168    }
2169}
2170
2171/* void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) */
2172static void
2173android_glLightxv__IILjava_nio_IntBuffer_2
2174  (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
2175    jarray _array = (jarray) 0;
2176    jint _remaining;
2177    GLfixed *params = (GLfixed *) 0;
2178
2179    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining);
2180    int _needed;
2181    switch (pname) {
2182#if defined(GL_SPOT_EXPONENT)
2183        case GL_SPOT_EXPONENT:
2184#endif // defined(GL_SPOT_EXPONENT)
2185#if defined(GL_SPOT_CUTOFF)
2186        case GL_SPOT_CUTOFF:
2187#endif // defined(GL_SPOT_CUTOFF)
2188#if defined(GL_CONSTANT_ATTENUATION)
2189        case GL_CONSTANT_ATTENUATION:
2190#endif // defined(GL_CONSTANT_ATTENUATION)
2191#if defined(GL_LINEAR_ATTENUATION)
2192        case GL_LINEAR_ATTENUATION:
2193#endif // defined(GL_LINEAR_ATTENUATION)
2194#if defined(GL_QUADRATIC_ATTENUATION)
2195        case GL_QUADRATIC_ATTENUATION:
2196#endif // defined(GL_QUADRATIC_ATTENUATION)
2197            _needed = 1;
2198            break;
2199#if defined(GL_SPOT_DIRECTION)
2200        case GL_SPOT_DIRECTION:
2201#endif // defined(GL_SPOT_DIRECTION)
2202            _needed = 3;
2203            break;
2204#if defined(GL_AMBIENT)
2205        case GL_AMBIENT:
2206#endif // defined(GL_AMBIENT)
2207#if defined(GL_DIFFUSE)
2208        case GL_DIFFUSE:
2209#endif // defined(GL_DIFFUSE)
2210#if defined(GL_SPECULAR)
2211        case GL_SPECULAR:
2212#endif // defined(GL_SPECULAR)
2213#if defined(GL_EMISSION)
2214        case GL_EMISSION:
2215#endif // defined(GL_EMISSION)
2216            _needed = 4;
2217            break;
2218        default:
2219            _needed = 0;
2220            break;
2221    }
2222    if (_remaining < _needed) {
2223        _env->ThrowNew(IAEClass, "remaining() < needed");
2224        goto exit;
2225    }
2226    glLightxv(
2227        (GLenum)light,
2228        (GLenum)pname,
2229        (GLfixed *)params
2230    );
2231
2232exit:
2233    if (_array) {
2234        releasePointer(_env, _array, params, JNI_FALSE);
2235    }
2236}
2237
2238/* void glLineWidth ( GLfloat width ) */
2239static void
2240android_glLineWidth__F
2241  (JNIEnv *_env, jobject _this, jfloat width) {
2242    glLineWidth(
2243        (GLfloat)width
2244    );
2245}
2246
2247/* void glLineWidthx ( GLfixed width ) */
2248static void
2249android_glLineWidthx__I
2250  (JNIEnv *_env, jobject _this, jint width) {
2251    glLineWidthx(
2252        (GLfixed)width
2253    );
2254}
2255
2256/* void glLoadIdentity ( void ) */
2257static void
2258android_glLoadIdentity__
2259  (JNIEnv *_env, jobject _this) {
2260    glLoadIdentity();
2261}
2262
2263/* void glLoadMatrixf ( const GLfloat *m ) */
2264static void
2265android_glLoadMatrixf___3FI
2266  (JNIEnv *_env, jobject _this, jfloatArray m_ref, jint offset) {
2267    GLfloat *m_base = (GLfloat *) 0;
2268    jint _remaining;
2269    GLfloat *m = (GLfloat *) 0;
2270
2271    if (!m_ref) {
2272        _env->ThrowNew(IAEClass, "m == null");
2273        goto exit;
2274    }
2275    if (offset < 0) {
2276        _env->ThrowNew(IAEClass, "offset < 0");
2277        goto exit;
2278    }
2279    _remaining = _env->GetArrayLength(m_ref) - offset;
2280    m_base = (GLfloat *)
2281        _env->GetPrimitiveArrayCritical(m_ref, (jboolean *)0);
2282    m = m_base + offset;
2283
2284    glLoadMatrixf(
2285        (GLfloat *)m
2286    );
2287
2288exit:
2289    if (m_base) {
2290        _env->ReleasePrimitiveArrayCritical(m_ref, m_base,
2291            JNI_ABORT);
2292    }
2293}
2294
2295/* void glLoadMatrixf ( const GLfloat *m ) */
2296static void
2297android_glLoadMatrixf__Ljava_nio_FloatBuffer_2
2298  (JNIEnv *_env, jobject _this, jobject m_buf) {
2299    jarray _array = (jarray) 0;
2300    jint _remaining;
2301    GLfloat *m = (GLfloat *) 0;
2302
2303    m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining);
2304    glLoadMatrixf(
2305        (GLfloat *)m
2306    );
2307    if (_array) {
2308        releasePointer(_env, _array, m, JNI_FALSE);
2309    }
2310}
2311
2312/* void glLoadMatrixx ( const GLfixed *m ) */
2313static void
2314android_glLoadMatrixx___3II
2315  (JNIEnv *_env, jobject _this, jintArray m_ref, jint offset) {
2316    GLfixed *m_base = (GLfixed *) 0;
2317    jint _remaining;
2318    GLfixed *m = (GLfixed *) 0;
2319
2320    if (!m_ref) {
2321        _env->ThrowNew(IAEClass, "m == null");
2322        goto exit;
2323    }
2324    if (offset < 0) {
2325        _env->ThrowNew(IAEClass, "offset < 0");
2326        goto exit;
2327    }
2328    _remaining = _env->GetArrayLength(m_ref) - offset;
2329    m_base = (GLfixed *)
2330        _env->GetPrimitiveArrayCritical(m_ref, (jboolean *)0);
2331    m = m_base + offset;
2332
2333    glLoadMatrixx(
2334        (GLfixed *)m
2335    );
2336
2337exit:
2338    if (m_base) {
2339        _env->ReleasePrimitiveArrayCritical(m_ref, m_base,
2340            JNI_ABORT);
2341    }
2342}
2343
2344/* void glLoadMatrixx ( const GLfixed *m ) */
2345static void
2346android_glLoadMatrixx__Ljava_nio_IntBuffer_2
2347  (JNIEnv *_env, jobject _this, jobject m_buf) {
2348    jarray _array = (jarray) 0;
2349    jint _remaining;
2350    GLfixed *m = (GLfixed *) 0;
2351
2352    m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining);
2353    glLoadMatrixx(
2354        (GLfixed *)m
2355    );
2356    if (_array) {
2357        releasePointer(_env, _array, m, JNI_FALSE);
2358    }
2359}
2360
2361/* void glLogicOp ( GLenum opcode ) */
2362static void
2363android_glLogicOp__I
2364  (JNIEnv *_env, jobject _this, jint opcode) {
2365    glLogicOp(
2366        (GLenum)opcode
2367    );
2368}
2369
2370/* void glMaterialf ( GLenum face, GLenum pname, GLfloat param ) */
2371static void
2372android_glMaterialf__IIF
2373  (JNIEnv *_env, jobject _this, jint face, jint pname, jfloat param) {
2374    glMaterialf(
2375        (GLenum)face,
2376        (GLenum)pname,
2377        (GLfloat)param
2378    );
2379}
2380
2381/* void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) */
2382static void
2383android_glMaterialfv__II_3FI
2384  (JNIEnv *_env, jobject _this, jint face, jint pname, jfloatArray params_ref, jint offset) {
2385    GLfloat *params_base = (GLfloat *) 0;
2386    jint _remaining;
2387    GLfloat *params = (GLfloat *) 0;
2388
2389    if (!params_ref) {
2390        _env->ThrowNew(IAEClass, "params == null");
2391        goto exit;
2392    }
2393    if (offset < 0) {
2394        _env->ThrowNew(IAEClass, "offset < 0");
2395        goto exit;
2396    }
2397    _remaining = _env->GetArrayLength(params_ref) - offset;
2398    int _needed;
2399    switch (pname) {
2400#if defined(GL_SHININESS)
2401        case GL_SHININESS:
2402#endif // defined(GL_SHININESS)
2403            _needed = 1;
2404            break;
2405#if defined(GL_AMBIENT)
2406        case GL_AMBIENT:
2407#endif // defined(GL_AMBIENT)
2408#if defined(GL_DIFFUSE)
2409        case GL_DIFFUSE:
2410#endif // defined(GL_DIFFUSE)
2411#if defined(GL_SPECULAR)
2412        case GL_SPECULAR:
2413#endif // defined(GL_SPECULAR)
2414#if defined(GL_EMISSION)
2415        case GL_EMISSION:
2416#endif // defined(GL_EMISSION)
2417#if defined(GL_AMBIENT_AND_DIFFUSE)
2418        case GL_AMBIENT_AND_DIFFUSE:
2419#endif // defined(GL_AMBIENT_AND_DIFFUSE)
2420            _needed = 4;
2421            break;
2422        default:
2423            _needed = 0;
2424            break;
2425    }
2426    if (_remaining < _needed) {
2427        _env->ThrowNew(IAEClass, "length - offset < needed");
2428        goto exit;
2429    }
2430    params_base = (GLfloat *)
2431        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2432    params = params_base + offset;
2433
2434    glMaterialfv(
2435        (GLenum)face,
2436        (GLenum)pname,
2437        (GLfloat *)params
2438    );
2439
2440exit:
2441    if (params_base) {
2442        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2443            JNI_ABORT);
2444    }
2445}
2446
2447/* void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) */
2448static void
2449android_glMaterialfv__IILjava_nio_FloatBuffer_2
2450  (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
2451    jarray _array = (jarray) 0;
2452    jint _remaining;
2453    GLfloat *params = (GLfloat *) 0;
2454
2455    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
2456    int _needed;
2457    switch (pname) {
2458#if defined(GL_SHININESS)
2459        case GL_SHININESS:
2460#endif // defined(GL_SHININESS)
2461            _needed = 1;
2462            break;
2463#if defined(GL_AMBIENT)
2464        case GL_AMBIENT:
2465#endif // defined(GL_AMBIENT)
2466#if defined(GL_DIFFUSE)
2467        case GL_DIFFUSE:
2468#endif // defined(GL_DIFFUSE)
2469#if defined(GL_SPECULAR)
2470        case GL_SPECULAR:
2471#endif // defined(GL_SPECULAR)
2472#if defined(GL_EMISSION)
2473        case GL_EMISSION:
2474#endif // defined(GL_EMISSION)
2475#if defined(GL_AMBIENT_AND_DIFFUSE)
2476        case GL_AMBIENT_AND_DIFFUSE:
2477#endif // defined(GL_AMBIENT_AND_DIFFUSE)
2478            _needed = 4;
2479            break;
2480        default:
2481            _needed = 0;
2482            break;
2483    }
2484    if (_remaining < _needed) {
2485        _env->ThrowNew(IAEClass, "remaining() < needed");
2486        goto exit;
2487    }
2488    glMaterialfv(
2489        (GLenum)face,
2490        (GLenum)pname,
2491        (GLfloat *)params
2492    );
2493
2494exit:
2495    if (_array) {
2496        releasePointer(_env, _array, params, JNI_FALSE);
2497    }
2498}
2499
2500/* void glMaterialx ( GLenum face, GLenum pname, GLfixed param ) */
2501static void
2502android_glMaterialx__III
2503  (JNIEnv *_env, jobject _this, jint face, jint pname, jint param) {
2504    glMaterialx(
2505        (GLenum)face,
2506        (GLenum)pname,
2507        (GLfixed)param
2508    );
2509}
2510
2511/* void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) */
2512static void
2513android_glMaterialxv__II_3II
2514  (JNIEnv *_env, jobject _this, jint face, jint pname, jintArray params_ref, jint offset) {
2515    GLfixed *params_base = (GLfixed *) 0;
2516    jint _remaining;
2517    GLfixed *params = (GLfixed *) 0;
2518
2519    if (!params_ref) {
2520        _env->ThrowNew(IAEClass, "params == null");
2521        goto exit;
2522    }
2523    if (offset < 0) {
2524        _env->ThrowNew(IAEClass, "offset < 0");
2525        goto exit;
2526    }
2527    _remaining = _env->GetArrayLength(params_ref) - offset;
2528    int _needed;
2529    switch (pname) {
2530#if defined(GL_SHININESS)
2531        case GL_SHININESS:
2532#endif // defined(GL_SHININESS)
2533            _needed = 1;
2534            break;
2535#if defined(GL_AMBIENT)
2536        case GL_AMBIENT:
2537#endif // defined(GL_AMBIENT)
2538#if defined(GL_DIFFUSE)
2539        case GL_DIFFUSE:
2540#endif // defined(GL_DIFFUSE)
2541#if defined(GL_SPECULAR)
2542        case GL_SPECULAR:
2543#endif // defined(GL_SPECULAR)
2544#if defined(GL_EMISSION)
2545        case GL_EMISSION:
2546#endif // defined(GL_EMISSION)
2547#if defined(GL_AMBIENT_AND_DIFFUSE)
2548        case GL_AMBIENT_AND_DIFFUSE:
2549#endif // defined(GL_AMBIENT_AND_DIFFUSE)
2550            _needed = 4;
2551            break;
2552        default:
2553            _needed = 0;
2554            break;
2555    }
2556    if (_remaining < _needed) {
2557        _env->ThrowNew(IAEClass, "length - offset < needed");
2558        goto exit;
2559    }
2560    params_base = (GLfixed *)
2561        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2562    params = params_base + offset;
2563
2564    glMaterialxv(
2565        (GLenum)face,
2566        (GLenum)pname,
2567        (GLfixed *)params
2568    );
2569
2570exit:
2571    if (params_base) {
2572        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2573            JNI_ABORT);
2574    }
2575}
2576
2577/* void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) */
2578static void
2579android_glMaterialxv__IILjava_nio_IntBuffer_2
2580  (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
2581    jarray _array = (jarray) 0;
2582    jint _remaining;
2583    GLfixed *params = (GLfixed *) 0;
2584
2585    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining);
2586    int _needed;
2587    switch (pname) {
2588#if defined(GL_SHININESS)
2589        case GL_SHININESS:
2590#endif // defined(GL_SHININESS)
2591            _needed = 1;
2592            break;
2593#if defined(GL_AMBIENT)
2594        case GL_AMBIENT:
2595#endif // defined(GL_AMBIENT)
2596#if defined(GL_DIFFUSE)
2597        case GL_DIFFUSE:
2598#endif // defined(GL_DIFFUSE)
2599#if defined(GL_SPECULAR)
2600        case GL_SPECULAR:
2601#endif // defined(GL_SPECULAR)
2602#if defined(GL_EMISSION)
2603        case GL_EMISSION:
2604#endif // defined(GL_EMISSION)
2605#if defined(GL_AMBIENT_AND_DIFFUSE)
2606        case GL_AMBIENT_AND_DIFFUSE:
2607#endif // defined(GL_AMBIENT_AND_DIFFUSE)
2608            _needed = 4;
2609            break;
2610        default:
2611            _needed = 0;
2612            break;
2613    }
2614    if (_remaining < _needed) {
2615        _env->ThrowNew(IAEClass, "remaining() < needed");
2616        goto exit;
2617    }
2618    glMaterialxv(
2619        (GLenum)face,
2620        (GLenum)pname,
2621        (GLfixed *)params
2622    );
2623
2624exit:
2625    if (_array) {
2626        releasePointer(_env, _array, params, JNI_FALSE);
2627    }
2628}
2629
2630/* void glMatrixMode ( GLenum mode ) */
2631static void
2632android_glMatrixMode__I
2633  (JNIEnv *_env, jobject _this, jint mode) {
2634    glMatrixMode(
2635        (GLenum)mode
2636    );
2637}
2638
2639/* void glMultMatrixf ( const GLfloat *m ) */
2640static void
2641android_glMultMatrixf___3FI
2642  (JNIEnv *_env, jobject _this, jfloatArray m_ref, jint offset) {
2643    GLfloat *m_base = (GLfloat *) 0;
2644    jint _remaining;
2645    GLfloat *m = (GLfloat *) 0;
2646
2647    if (!m_ref) {
2648        _env->ThrowNew(IAEClass, "m == null");
2649        goto exit;
2650    }
2651    if (offset < 0) {
2652        _env->ThrowNew(IAEClass, "offset < 0");
2653        goto exit;
2654    }
2655    _remaining = _env->GetArrayLength(m_ref) - offset;
2656    m_base = (GLfloat *)
2657        _env->GetPrimitiveArrayCritical(m_ref, (jboolean *)0);
2658    m = m_base + offset;
2659
2660    glMultMatrixf(
2661        (GLfloat *)m
2662    );
2663
2664exit:
2665    if (m_base) {
2666        _env->ReleasePrimitiveArrayCritical(m_ref, m_base,
2667            JNI_ABORT);
2668    }
2669}
2670
2671/* void glMultMatrixf ( const GLfloat *m ) */
2672static void
2673android_glMultMatrixf__Ljava_nio_FloatBuffer_2
2674  (JNIEnv *_env, jobject _this, jobject m_buf) {
2675    jarray _array = (jarray) 0;
2676    jint _remaining;
2677    GLfloat *m = (GLfloat *) 0;
2678
2679    m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining);
2680    glMultMatrixf(
2681        (GLfloat *)m
2682    );
2683    if (_array) {
2684        releasePointer(_env, _array, m, JNI_FALSE);
2685    }
2686}
2687
2688/* void glMultMatrixx ( const GLfixed *m ) */
2689static void
2690android_glMultMatrixx___3II
2691  (JNIEnv *_env, jobject _this, jintArray m_ref, jint offset) {
2692    GLfixed *m_base = (GLfixed *) 0;
2693    jint _remaining;
2694    GLfixed *m = (GLfixed *) 0;
2695
2696    if (!m_ref) {
2697        _env->ThrowNew(IAEClass, "m == null");
2698        goto exit;
2699    }
2700    if (offset < 0) {
2701        _env->ThrowNew(IAEClass, "offset < 0");
2702        goto exit;
2703    }
2704    _remaining = _env->GetArrayLength(m_ref) - offset;
2705    m_base = (GLfixed *)
2706        _env->GetPrimitiveArrayCritical(m_ref, (jboolean *)0);
2707    m = m_base + offset;
2708
2709    glMultMatrixx(
2710        (GLfixed *)m
2711    );
2712
2713exit:
2714    if (m_base) {
2715        _env->ReleasePrimitiveArrayCritical(m_ref, m_base,
2716            JNI_ABORT);
2717    }
2718}
2719
2720/* void glMultMatrixx ( const GLfixed *m ) */
2721static void
2722android_glMultMatrixx__Ljava_nio_IntBuffer_2
2723  (JNIEnv *_env, jobject _this, jobject m_buf) {
2724    jarray _array = (jarray) 0;
2725    jint _remaining;
2726    GLfixed *m = (GLfixed *) 0;
2727
2728    m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining);
2729    glMultMatrixx(
2730        (GLfixed *)m
2731    );
2732    if (_array) {
2733        releasePointer(_env, _array, m, JNI_FALSE);
2734    }
2735}
2736
2737/* void glMultiTexCoord4f ( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ) */
2738static void
2739android_glMultiTexCoord4f__IFFFF
2740  (JNIEnv *_env, jobject _this, jint target, jfloat s, jfloat t, jfloat r, jfloat q) {
2741    glMultiTexCoord4f(
2742        (GLenum)target,
2743        (GLfloat)s,
2744        (GLfloat)t,
2745        (GLfloat)r,
2746        (GLfloat)q
2747    );
2748}
2749
2750/* void glMultiTexCoord4x ( GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q ) */
2751static void
2752android_glMultiTexCoord4x__IIIII
2753  (JNIEnv *_env, jobject _this, jint target, jint s, jint t, jint r, jint q) {
2754    glMultiTexCoord4x(
2755        (GLenum)target,
2756        (GLfixed)s,
2757        (GLfixed)t,
2758        (GLfixed)r,
2759        (GLfixed)q
2760    );
2761}
2762
2763/* void glNormal3f ( GLfloat nx, GLfloat ny, GLfloat nz ) */
2764static void
2765android_glNormal3f__FFF
2766  (JNIEnv *_env, jobject _this, jfloat nx, jfloat ny, jfloat nz) {
2767    glNormal3f(
2768        (GLfloat)nx,
2769        (GLfloat)ny,
2770        (GLfloat)nz
2771    );
2772}
2773
2774/* void glNormal3x ( GLfixed nx, GLfixed ny, GLfixed nz ) */
2775static void
2776android_glNormal3x__III
2777  (JNIEnv *_env, jobject _this, jint nx, jint ny, jint nz) {
2778    glNormal3x(
2779        (GLfixed)nx,
2780        (GLfixed)ny,
2781        (GLfixed)nz
2782    );
2783}
2784
2785/* void glNormalPointer ( GLenum type, GLsizei stride, const GLvoid *pointer ) */
2786static void
2787android_glNormalPointerBounds__IILjava_nio_Buffer_2I
2788  (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) {
2789    jarray _array = (jarray) 0;
2790    jint _remaining;
2791    GLvoid *pointer = (GLvoid *) 0;
2792
2793    if (pointer_buf) {
2794        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
2795        if ( ! pointer ) {
2796            return;
2797        }
2798    }
2799    glNormalPointerBounds(
2800        (GLenum)type,
2801        (GLsizei)stride,
2802        (GLvoid *)pointer,
2803        (GLsizei)remaining
2804    );
2805}
2806
2807/* void glOrthof ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */
2808static void
2809android_glOrthof__FFFFFF
2810  (JNIEnv *_env, jobject _this, jfloat left, jfloat right, jfloat bottom, jfloat top, jfloat zNear, jfloat zFar) {
2811    glOrthof(
2812        (GLfloat)left,
2813        (GLfloat)right,
2814        (GLfloat)bottom,
2815        (GLfloat)top,
2816        (GLfloat)zNear,
2817        (GLfloat)zFar
2818    );
2819}
2820
2821/* void glOrthox ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) */
2822static void
2823android_glOrthox__IIIIII
2824  (JNIEnv *_env, jobject _this, jint left, jint right, jint bottom, jint top, jint zNear, jint zFar) {
2825    glOrthox(
2826        (GLfixed)left,
2827        (GLfixed)right,
2828        (GLfixed)bottom,
2829        (GLfixed)top,
2830        (GLfixed)zNear,
2831        (GLfixed)zFar
2832    );
2833}
2834
2835/* void glPixelStorei ( GLenum pname, GLint param ) */
2836static void
2837android_glPixelStorei__II
2838  (JNIEnv *_env, jobject _this, jint pname, jint param) {
2839    glPixelStorei(
2840        (GLenum)pname,
2841        (GLint)param
2842    );
2843}
2844
2845/* void glPointSize ( GLfloat size ) */
2846static void
2847android_glPointSize__F
2848  (JNIEnv *_env, jobject _this, jfloat size) {
2849    glPointSize(
2850        (GLfloat)size
2851    );
2852}
2853
2854/* void glPointSizex ( GLfixed size ) */
2855static void
2856android_glPointSizex__I
2857  (JNIEnv *_env, jobject _this, jint size) {
2858    glPointSizex(
2859        (GLfixed)size
2860    );
2861}
2862
2863/* void glPolygonOffset ( GLfloat factor, GLfloat units ) */
2864static void
2865android_glPolygonOffset__FF
2866  (JNIEnv *_env, jobject _this, jfloat factor, jfloat units) {
2867    glPolygonOffset(
2868        (GLfloat)factor,
2869        (GLfloat)units
2870    );
2871}
2872
2873/* void glPolygonOffsetx ( GLfixed factor, GLfixed units ) */
2874static void
2875android_glPolygonOffsetx__II
2876  (JNIEnv *_env, jobject _this, jint factor, jint units) {
2877    glPolygonOffsetx(
2878        (GLfixed)factor,
2879        (GLfixed)units
2880    );
2881}
2882
2883/* void glPopMatrix ( void ) */
2884static void
2885android_glPopMatrix__
2886  (JNIEnv *_env, jobject _this) {
2887    glPopMatrix();
2888}
2889
2890/* void glPushMatrix ( void ) */
2891static void
2892android_glPushMatrix__
2893  (JNIEnv *_env, jobject _this) {
2894    glPushMatrix();
2895}
2896
2897/* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) */
2898static void
2899android_glReadPixels__IIIIIILjava_nio_Buffer_2
2900  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) {
2901    jint _exception = 0;
2902    jarray _array = (jarray) 0;
2903    jint _remaining;
2904    GLvoid *pixels = (GLvoid *) 0;
2905
2906    pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining);
2907    glReadPixels(
2908        (GLint)x,
2909        (GLint)y,
2910        (GLsizei)width,
2911        (GLsizei)height,
2912        (GLenum)format,
2913        (GLenum)type,
2914        (GLvoid *)pixels
2915    );
2916    if (_array) {
2917        releasePointer(_env, _array, pixels, _exception ? JNI_FALSE : JNI_TRUE);
2918    }
2919}
2920
2921/* void glRotatef ( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) */
2922static void
2923android_glRotatef__FFFF
2924  (JNIEnv *_env, jobject _this, jfloat angle, jfloat x, jfloat y, jfloat z) {
2925    glRotatef(
2926        (GLfloat)angle,
2927        (GLfloat)x,
2928        (GLfloat)y,
2929        (GLfloat)z
2930    );
2931}
2932
2933/* void glRotatex ( GLfixed angle, GLfixed x, GLfixed y, GLfixed z ) */
2934static void
2935android_glRotatex__IIII
2936  (JNIEnv *_env, jobject _this, jint angle, jint x, jint y, jint z) {
2937    glRotatex(
2938        (GLfixed)angle,
2939        (GLfixed)x,
2940        (GLfixed)y,
2941        (GLfixed)z
2942    );
2943}
2944
2945/* void glSampleCoverage ( GLclampf value, GLboolean invert ) */
2946static void
2947android_glSampleCoverage__FZ
2948  (JNIEnv *_env, jobject _this, jfloat value, jboolean invert) {
2949    glSampleCoverage(
2950        (GLclampf)value,
2951        (GLboolean)invert
2952    );
2953}
2954
2955/* void glSampleCoveragex ( GLclampx value, GLboolean invert ) */
2956static void
2957android_glSampleCoveragex__IZ
2958  (JNIEnv *_env, jobject _this, jint value, jboolean invert) {
2959    glSampleCoveragex(
2960        (GLclampx)value,
2961        (GLboolean)invert
2962    );
2963}
2964
2965/* void glScalef ( GLfloat x, GLfloat y, GLfloat z ) */
2966static void
2967android_glScalef__FFF
2968  (JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) {
2969    glScalef(
2970        (GLfloat)x,
2971        (GLfloat)y,
2972        (GLfloat)z
2973    );
2974}
2975
2976/* void glScalex ( GLfixed x, GLfixed y, GLfixed z ) */
2977static void
2978android_glScalex__III
2979  (JNIEnv *_env, jobject _this, jint x, jint y, jint z) {
2980    glScalex(
2981        (GLfixed)x,
2982        (GLfixed)y,
2983        (GLfixed)z
2984    );
2985}
2986
2987/* void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height ) */
2988static void
2989android_glScissor__IIII
2990  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
2991    glScissor(
2992        (GLint)x,
2993        (GLint)y,
2994        (GLsizei)width,
2995        (GLsizei)height
2996    );
2997}
2998
2999/* void glShadeModel ( GLenum mode ) */
3000static void
3001android_glShadeModel__I
3002  (JNIEnv *_env, jobject _this, jint mode) {
3003    glShadeModel(
3004        (GLenum)mode
3005    );
3006}
3007
3008/* void glStencilFunc ( GLenum func, GLint ref, GLuint mask ) */
3009static void
3010android_glStencilFunc__III
3011  (JNIEnv *_env, jobject _this, jint func, jint ref, jint mask) {
3012    glStencilFunc(
3013        (GLenum)func,
3014        (GLint)ref,
3015        (GLuint)mask
3016    );
3017}
3018
3019/* void glStencilMask ( GLuint mask ) */
3020static void
3021android_glStencilMask__I
3022  (JNIEnv *_env, jobject _this, jint mask) {
3023    glStencilMask(
3024        (GLuint)mask
3025    );
3026}
3027
3028/* void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass ) */
3029static void
3030android_glStencilOp__III
3031  (JNIEnv *_env, jobject _this, jint fail, jint zfail, jint zpass) {
3032    glStencilOp(
3033        (GLenum)fail,
3034        (GLenum)zfail,
3035        (GLenum)zpass
3036    );
3037}
3038
3039/* void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
3040static void
3041android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I
3042  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
3043    jarray _array = (jarray) 0;
3044    jint _remaining;
3045    GLvoid *pointer = (GLvoid *) 0;
3046
3047    if (pointer_buf) {
3048        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
3049        if ( ! pointer ) {
3050            return;
3051        }
3052    }
3053    glTexCoordPointerBounds(
3054        (GLint)size,
3055        (GLenum)type,
3056        (GLsizei)stride,
3057        (GLvoid *)pointer,
3058        (GLsizei)remaining
3059    );
3060}
3061
3062/* void glTexEnvf ( GLenum target, GLenum pname, GLfloat param ) */
3063static void
3064android_glTexEnvf__IIF
3065  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
3066    glTexEnvf(
3067        (GLenum)target,
3068        (GLenum)pname,
3069        (GLfloat)param
3070    );
3071}
3072
3073/* void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) */
3074static void
3075android_glTexEnvfv__II_3FI
3076  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
3077    GLfloat *params_base = (GLfloat *) 0;
3078    jint _remaining;
3079    GLfloat *params = (GLfloat *) 0;
3080
3081    if (!params_ref) {
3082        _env->ThrowNew(IAEClass, "params == null");
3083        goto exit;
3084    }
3085    if (offset < 0) {
3086        _env->ThrowNew(IAEClass, "offset < 0");
3087        goto exit;
3088    }
3089    _remaining = _env->GetArrayLength(params_ref) - offset;
3090    int _needed;
3091    switch (pname) {
3092#if defined(GL_TEXTURE_ENV_MODE)
3093        case GL_TEXTURE_ENV_MODE:
3094#endif // defined(GL_TEXTURE_ENV_MODE)
3095#if defined(GL_COMBINE_RGB)
3096        case GL_COMBINE_RGB:
3097#endif // defined(GL_COMBINE_RGB)
3098#if defined(GL_COMBINE_ALPHA)
3099        case GL_COMBINE_ALPHA:
3100#endif // defined(GL_COMBINE_ALPHA)
3101            _needed = 1;
3102            break;
3103#if defined(GL_TEXTURE_ENV_COLOR)
3104        case GL_TEXTURE_ENV_COLOR:
3105#endif // defined(GL_TEXTURE_ENV_COLOR)
3106            _needed = 4;
3107            break;
3108        default:
3109            _needed = 0;
3110            break;
3111    }
3112    if (_remaining < _needed) {
3113        _env->ThrowNew(IAEClass, "length - offset < needed");
3114        goto exit;
3115    }
3116    params_base = (GLfloat *)
3117        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3118    params = params_base + offset;
3119
3120    glTexEnvfv(
3121        (GLenum)target,
3122        (GLenum)pname,
3123        (GLfloat *)params
3124    );
3125
3126exit:
3127    if (params_base) {
3128        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3129            JNI_ABORT);
3130    }
3131}
3132
3133/* void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) */
3134static void
3135android_glTexEnvfv__IILjava_nio_FloatBuffer_2
3136  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3137    jarray _array = (jarray) 0;
3138    jint _remaining;
3139    GLfloat *params = (GLfloat *) 0;
3140
3141    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
3142    int _needed;
3143    switch (pname) {
3144#if defined(GL_TEXTURE_ENV_MODE)
3145        case GL_TEXTURE_ENV_MODE:
3146#endif // defined(GL_TEXTURE_ENV_MODE)
3147#if defined(GL_COMBINE_RGB)
3148        case GL_COMBINE_RGB:
3149#endif // defined(GL_COMBINE_RGB)
3150#if defined(GL_COMBINE_ALPHA)
3151        case GL_COMBINE_ALPHA:
3152#endif // defined(GL_COMBINE_ALPHA)
3153            _needed = 1;
3154            break;
3155#if defined(GL_TEXTURE_ENV_COLOR)
3156        case GL_TEXTURE_ENV_COLOR:
3157#endif // defined(GL_TEXTURE_ENV_COLOR)
3158            _needed = 4;
3159            break;
3160        default:
3161            _needed = 0;
3162            break;
3163    }
3164    if (_remaining < _needed) {
3165        _env->ThrowNew(IAEClass, "remaining() < needed");
3166        goto exit;
3167    }
3168    glTexEnvfv(
3169        (GLenum)target,
3170        (GLenum)pname,
3171        (GLfloat *)params
3172    );
3173
3174exit:
3175    if (_array) {
3176        releasePointer(_env, _array, params, JNI_FALSE);
3177    }
3178}
3179
3180/* void glTexEnvx ( GLenum target, GLenum pname, GLfixed param ) */
3181static void
3182android_glTexEnvx__III
3183  (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
3184    glTexEnvx(
3185        (GLenum)target,
3186        (GLenum)pname,
3187        (GLfixed)param
3188    );
3189}
3190
3191/* void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) */
3192static void
3193android_glTexEnvxv__II_3II
3194  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
3195    GLfixed *params_base = (GLfixed *) 0;
3196    jint _remaining;
3197    GLfixed *params = (GLfixed *) 0;
3198
3199    if (!params_ref) {
3200        _env->ThrowNew(IAEClass, "params == null");
3201        goto exit;
3202    }
3203    if (offset < 0) {
3204        _env->ThrowNew(IAEClass, "offset < 0");
3205        goto exit;
3206    }
3207    _remaining = _env->GetArrayLength(params_ref) - offset;
3208    int _needed;
3209    switch (pname) {
3210#if defined(GL_TEXTURE_ENV_MODE)
3211        case GL_TEXTURE_ENV_MODE:
3212#endif // defined(GL_TEXTURE_ENV_MODE)
3213#if defined(GL_COMBINE_RGB)
3214        case GL_COMBINE_RGB:
3215#endif // defined(GL_COMBINE_RGB)
3216#if defined(GL_COMBINE_ALPHA)
3217        case GL_COMBINE_ALPHA:
3218#endif // defined(GL_COMBINE_ALPHA)
3219            _needed = 1;
3220            break;
3221#if defined(GL_TEXTURE_ENV_COLOR)
3222        case GL_TEXTURE_ENV_COLOR:
3223#endif // defined(GL_TEXTURE_ENV_COLOR)
3224            _needed = 4;
3225            break;
3226        default:
3227            _needed = 0;
3228            break;
3229    }
3230    if (_remaining < _needed) {
3231        _env->ThrowNew(IAEClass, "length - offset < needed");
3232        goto exit;
3233    }
3234    params_base = (GLfixed *)
3235        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3236    params = params_base + offset;
3237
3238    glTexEnvxv(
3239        (GLenum)target,
3240        (GLenum)pname,
3241        (GLfixed *)params
3242    );
3243
3244exit:
3245    if (params_base) {
3246        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3247            JNI_ABORT);
3248    }
3249}
3250
3251/* void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) */
3252static void
3253android_glTexEnvxv__IILjava_nio_IntBuffer_2
3254  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3255    jarray _array = (jarray) 0;
3256    jint _remaining;
3257    GLfixed *params = (GLfixed *) 0;
3258
3259    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining);
3260    int _needed;
3261    switch (pname) {
3262#if defined(GL_TEXTURE_ENV_MODE)
3263        case GL_TEXTURE_ENV_MODE:
3264#endif // defined(GL_TEXTURE_ENV_MODE)
3265#if defined(GL_COMBINE_RGB)
3266        case GL_COMBINE_RGB:
3267#endif // defined(GL_COMBINE_RGB)
3268#if defined(GL_COMBINE_ALPHA)
3269        case GL_COMBINE_ALPHA:
3270#endif // defined(GL_COMBINE_ALPHA)
3271            _needed = 1;
3272            break;
3273#if defined(GL_TEXTURE_ENV_COLOR)
3274        case GL_TEXTURE_ENV_COLOR:
3275#endif // defined(GL_TEXTURE_ENV_COLOR)
3276            _needed = 4;
3277            break;
3278        default:
3279            _needed = 0;
3280            break;
3281    }
3282    if (_remaining < _needed) {
3283        _env->ThrowNew(IAEClass, "remaining() < needed");
3284        goto exit;
3285    }
3286    glTexEnvxv(
3287        (GLenum)target,
3288        (GLenum)pname,
3289        (GLfixed *)params
3290    );
3291
3292exit:
3293    if (_array) {
3294        releasePointer(_env, _array, params, JNI_FALSE);
3295    }
3296}
3297
3298/* void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */
3299static void
3300android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2
3301  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) {
3302    jarray _array = (jarray) 0;
3303    jint _remaining;
3304    GLvoid *pixels = (GLvoid *) 0;
3305
3306    if (pixels_buf) {
3307        pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining);
3308    }
3309    glTexImage2D(
3310        (GLenum)target,
3311        (GLint)level,
3312        (GLint)internalformat,
3313        (GLsizei)width,
3314        (GLsizei)height,
3315        (GLint)border,
3316        (GLenum)format,
3317        (GLenum)type,
3318        (GLvoid *)pixels
3319    );
3320    if (_array) {
3321        releasePointer(_env, _array, pixels, JNI_FALSE);
3322    }
3323}
3324
3325/* void glTexParameterf ( GLenum target, GLenum pname, GLfloat param ) */
3326static void
3327android_glTexParameterf__IIF
3328  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
3329    glTexParameterf(
3330        (GLenum)target,
3331        (GLenum)pname,
3332        (GLfloat)param
3333    );
3334}
3335
3336/* void glTexParameterx ( GLenum target, GLenum pname, GLfixed param ) */
3337static void
3338android_glTexParameterx__III
3339  (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
3340    glTexParameterx(
3341        (GLenum)target,
3342        (GLenum)pname,
3343        (GLfixed)param
3344    );
3345}
3346
3347/* void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) */
3348static void
3349android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
3350  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) {
3351    jarray _array = (jarray) 0;
3352    jint _remaining;
3353    GLvoid *pixels = (GLvoid *) 0;
3354
3355    if (pixels_buf) {
3356        pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining);
3357    }
3358    glTexSubImage2D(
3359        (GLenum)target,
3360        (GLint)level,
3361        (GLint)xoffset,
3362        (GLint)yoffset,
3363        (GLsizei)width,
3364        (GLsizei)height,
3365        (GLenum)format,
3366        (GLenum)type,
3367        (GLvoid *)pixels
3368    );
3369    if (_array) {
3370        releasePointer(_env, _array, pixels, JNI_FALSE);
3371    }
3372}
3373
3374/* void glTranslatef ( GLfloat x, GLfloat y, GLfloat z ) */
3375static void
3376android_glTranslatef__FFF
3377  (JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) {
3378    glTranslatef(
3379        (GLfloat)x,
3380        (GLfloat)y,
3381        (GLfloat)z
3382    );
3383}
3384
3385/* void glTranslatex ( GLfixed x, GLfixed y, GLfixed z ) */
3386static void
3387android_glTranslatex__III
3388  (JNIEnv *_env, jobject _this, jint x, jint y, jint z) {
3389    glTranslatex(
3390        (GLfixed)x,
3391        (GLfixed)y,
3392        (GLfixed)z
3393    );
3394}
3395
3396/* void glVertexPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
3397static void
3398android_glVertexPointerBounds__IIILjava_nio_Buffer_2I
3399  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
3400    jarray _array = (jarray) 0;
3401    jint _remaining;
3402    GLvoid *pointer = (GLvoid *) 0;
3403
3404    if (pointer_buf) {
3405        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
3406        if ( ! pointer ) {
3407            return;
3408        }
3409    }
3410    glVertexPointerBounds(
3411        (GLint)size,
3412        (GLenum)type,
3413        (GLsizei)stride,
3414        (GLvoid *)pointer,
3415        (GLsizei)remaining
3416    );
3417}
3418
3419/* void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) */
3420static void
3421android_glViewport__IIII
3422  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
3423    glViewport(
3424        (GLint)x,
3425        (GLint)y,
3426        (GLsizei)width,
3427        (GLsizei)height
3428    );
3429}
3430
3431static const char *classPathName = "android/opengl/GLES10";
3432
3433static JNINativeMethod methods[] = {
3434{"_nativeClassInit", "()V", (void*)nativeClassInit },
3435{"glActiveTexture", "(I)V", (void *) android_glActiveTexture__I },
3436{"glAlphaFunc", "(IF)V", (void *) android_glAlphaFunc__IF },
3437{"glAlphaFuncx", "(II)V", (void *) android_glAlphaFuncx__II },
3438{"glBindTexture", "(II)V", (void *) android_glBindTexture__II },
3439{"glBlendFunc", "(II)V", (void *) android_glBlendFunc__II },
3440{"glClear", "(I)V", (void *) android_glClear__I },
3441{"glClearColor", "(FFFF)V", (void *) android_glClearColor__FFFF },
3442{"glClearColorx", "(IIII)V", (void *) android_glClearColorx__IIII },
3443{"glClearDepthf", "(F)V", (void *) android_glClearDepthf__F },
3444{"glClearDepthx", "(I)V", (void *) android_glClearDepthx__I },
3445{"glClearStencil", "(I)V", (void *) android_glClearStencil__I },
3446{"glClientActiveTexture", "(I)V", (void *) android_glClientActiveTexture__I },
3447{"glColor4f", "(FFFF)V", (void *) android_glColor4f__FFFF },
3448{"glColor4x", "(IIII)V", (void *) android_glColor4x__IIII },
3449{"glColorMask", "(ZZZZ)V", (void *) android_glColorMask__ZZZZ },
3450{"glColorPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glColorPointerBounds__IIILjava_nio_Buffer_2I },
3451{"glCompressedTexImage2D", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 },
3452{"glCompressedTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
3453{"glCopyTexImage2D", "(IIIIIIII)V", (void *) android_glCopyTexImage2D__IIIIIIII },
3454{"glCopyTexSubImage2D", "(IIIIIIII)V", (void *) android_glCopyTexSubImage2D__IIIIIIII },
3455{"glCullFace", "(I)V", (void *) android_glCullFace__I },
3456{"glDeleteTextures", "(I[II)V", (void *) android_glDeleteTextures__I_3II },
3457{"glDeleteTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTextures__ILjava_nio_IntBuffer_2 },
3458{"glDepthFunc", "(I)V", (void *) android_glDepthFunc__I },
3459{"glDepthMask", "(Z)V", (void *) android_glDepthMask__Z },
3460{"glDepthRangef", "(FF)V", (void *) android_glDepthRangef__FF },
3461{"glDepthRangex", "(II)V", (void *) android_glDepthRangex__II },
3462{"glDisable", "(I)V", (void *) android_glDisable__I },
3463{"glDisableClientState", "(I)V", (void *) android_glDisableClientState__I },
3464{"glDrawArrays", "(III)V", (void *) android_glDrawArrays__III },
3465{"glDrawElements", "(IIILjava/nio/Buffer;)V", (void *) android_glDrawElements__IIILjava_nio_Buffer_2 },
3466{"glEnable", "(I)V", (void *) android_glEnable__I },
3467{"glEnableClientState", "(I)V", (void *) android_glEnableClientState__I },
3468{"glFinish", "()V", (void *) android_glFinish__ },
3469{"glFlush", "()V", (void *) android_glFlush__ },
3470{"glFogf", "(IF)V", (void *) android_glFogf__IF },
3471{"glFogfv", "(I[FI)V", (void *) android_glFogfv__I_3FI },
3472{"glFogfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glFogfv__ILjava_nio_FloatBuffer_2 },
3473{"glFogx", "(II)V", (void *) android_glFogx__II },
3474{"glFogxv", "(I[II)V", (void *) android_glFogxv__I_3II },
3475{"glFogxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glFogxv__ILjava_nio_IntBuffer_2 },
3476{"glFrontFace", "(I)V", (void *) android_glFrontFace__I },
3477{"glFrustumf", "(FFFFFF)V", (void *) android_glFrustumf__FFFFFF },
3478{"glFrustumx", "(IIIIII)V", (void *) android_glFrustumx__IIIIII },
3479{"glGenTextures", "(I[II)V", (void *) android_glGenTextures__I_3II },
3480{"glGenTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTextures__ILjava_nio_IntBuffer_2 },
3481{"glGetError", "()I", (void *) android_glGetError__ },
3482{"glGetIntegerv", "(I[II)V", (void *) android_glGetIntegerv__I_3II },
3483{"glGetIntegerv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetIntegerv__ILjava_nio_IntBuffer_2 },
3484{"glGetString", "(I)Ljava/lang/String;", (void *) android_glGetString },
3485{"glHint", "(II)V", (void *) android_glHint__II },
3486{"glLightModelf", "(IF)V", (void *) android_glLightModelf__IF },
3487{"glLightModelfv", "(I[FI)V", (void *) android_glLightModelfv__I_3FI },
3488{"glLightModelfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glLightModelfv__ILjava_nio_FloatBuffer_2 },
3489{"glLightModelx", "(II)V", (void *) android_glLightModelx__II },
3490{"glLightModelxv", "(I[II)V", (void *) android_glLightModelxv__I_3II },
3491{"glLightModelxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glLightModelxv__ILjava_nio_IntBuffer_2 },
3492{"glLightf", "(IIF)V", (void *) android_glLightf__IIF },
3493{"glLightfv", "(II[FI)V", (void *) android_glLightfv__II_3FI },
3494{"glLightfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glLightfv__IILjava_nio_FloatBuffer_2 },
3495{"glLightx", "(III)V", (void *) android_glLightx__III },
3496{"glLightxv", "(II[II)V", (void *) android_glLightxv__II_3II },
3497{"glLightxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glLightxv__IILjava_nio_IntBuffer_2 },
3498{"glLineWidth", "(F)V", (void *) android_glLineWidth__F },
3499{"glLineWidthx", "(I)V", (void *) android_glLineWidthx__I },
3500{"glLoadIdentity", "()V", (void *) android_glLoadIdentity__ },
3501{"glLoadMatrixf", "([FI)V", (void *) android_glLoadMatrixf___3FI },
3502{"glLoadMatrixf", "(Ljava/nio/FloatBuffer;)V", (void *) android_glLoadMatrixf__Ljava_nio_FloatBuffer_2 },
3503{"glLoadMatrixx", "([II)V", (void *) android_glLoadMatrixx___3II },
3504{"glLoadMatrixx", "(Ljava/nio/IntBuffer;)V", (void *) android_glLoadMatrixx__Ljava_nio_IntBuffer_2 },
3505{"glLogicOp", "(I)V", (void *) android_glLogicOp__I },
3506{"glMaterialf", "(IIF)V", (void *) android_glMaterialf__IIF },
3507{"glMaterialfv", "(II[FI)V", (void *) android_glMaterialfv__II_3FI },
3508{"glMaterialfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glMaterialfv__IILjava_nio_FloatBuffer_2 },
3509{"glMaterialx", "(III)V", (void *) android_glMaterialx__III },
3510{"glMaterialxv", "(II[II)V", (void *) android_glMaterialxv__II_3II },
3511{"glMaterialxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glMaterialxv__IILjava_nio_IntBuffer_2 },
3512{"glMatrixMode", "(I)V", (void *) android_glMatrixMode__I },
3513{"glMultMatrixf", "([FI)V", (void *) android_glMultMatrixf___3FI },
3514{"glMultMatrixf", "(Ljava/nio/FloatBuffer;)V", (void *) android_glMultMatrixf__Ljava_nio_FloatBuffer_2 },
3515{"glMultMatrixx", "([II)V", (void *) android_glMultMatrixx___3II },
3516{"glMultMatrixx", "(Ljava/nio/IntBuffer;)V", (void *) android_glMultMatrixx__Ljava_nio_IntBuffer_2 },
3517{"glMultiTexCoord4f", "(IFFFF)V", (void *) android_glMultiTexCoord4f__IFFFF },
3518{"glMultiTexCoord4x", "(IIIII)V", (void *) android_glMultiTexCoord4x__IIIII },
3519{"glNormal3f", "(FFF)V", (void *) android_glNormal3f__FFF },
3520{"glNormal3x", "(III)V", (void *) android_glNormal3x__III },
3521{"glNormalPointerBounds", "(IILjava/nio/Buffer;I)V", (void *) android_glNormalPointerBounds__IILjava_nio_Buffer_2I },
3522{"glOrthof", "(FFFFFF)V", (void *) android_glOrthof__FFFFFF },
3523{"glOrthox", "(IIIIII)V", (void *) android_glOrthox__IIIIII },
3524{"glPixelStorei", "(II)V", (void *) android_glPixelStorei__II },
3525{"glPointSize", "(F)V", (void *) android_glPointSize__F },
3526{"glPointSizex", "(I)V", (void *) android_glPointSizex__I },
3527{"glPolygonOffset", "(FF)V", (void *) android_glPolygonOffset__FF },
3528{"glPolygonOffsetx", "(II)V", (void *) android_glPolygonOffsetx__II },
3529{"glPopMatrix", "()V", (void *) android_glPopMatrix__ },
3530{"glPushMatrix", "()V", (void *) android_glPushMatrix__ },
3531{"glReadPixels", "(IIIIIILjava/nio/Buffer;)V", (void *) android_glReadPixels__IIIIIILjava_nio_Buffer_2 },
3532{"glRotatef", "(FFFF)V", (void *) android_glRotatef__FFFF },
3533{"glRotatex", "(IIII)V", (void *) android_glRotatex__IIII },
3534{"glSampleCoverage", "(FZ)V", (void *) android_glSampleCoverage__FZ },
3535{"glSampleCoveragex", "(IZ)V", (void *) android_glSampleCoveragex__IZ },
3536{"glScalef", "(FFF)V", (void *) android_glScalef__FFF },
3537{"glScalex", "(III)V", (void *) android_glScalex__III },
3538{"glScissor", "(IIII)V", (void *) android_glScissor__IIII },
3539{"glShadeModel", "(I)V", (void *) android_glShadeModel__I },
3540{"glStencilFunc", "(III)V", (void *) android_glStencilFunc__III },
3541{"glStencilMask", "(I)V", (void *) android_glStencilMask__I },
3542{"glStencilOp", "(III)V", (void *) android_glStencilOp__III },
3543{"glTexCoordPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I },
3544{"glTexEnvf", "(IIF)V", (void *) android_glTexEnvf__IIF },
3545{"glTexEnvfv", "(II[FI)V", (void *) android_glTexEnvfv__II_3FI },
3546{"glTexEnvfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexEnvfv__IILjava_nio_FloatBuffer_2 },
3547{"glTexEnvx", "(III)V", (void *) android_glTexEnvx__III },
3548{"glTexEnvxv", "(II[II)V", (void *) android_glTexEnvxv__II_3II },
3549{"glTexEnvxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexEnvxv__IILjava_nio_IntBuffer_2 },
3550{"glTexImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 },
3551{"glTexParameterf", "(IIF)V", (void *) android_glTexParameterf__IIF },
3552{"glTexParameterx", "(III)V", (void *) android_glTexParameterx__III },
3553{"glTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
3554{"glTranslatef", "(FFF)V", (void *) android_glTranslatef__FFF },
3555{"glTranslatex", "(III)V", (void *) android_glTranslatex__III },
3556{"glVertexPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glVertexPointerBounds__IIILjava_nio_Buffer_2I },
3557{"glViewport", "(IIII)V", (void *) android_glViewport__IIII },
3558};
3559
3560int register_android_opengl_jni_GLES10(JNIEnv *_env)
3561{
3562    int err;
3563    err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
3564    return err;
3565}
3566