127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/*
227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich**
327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** Copyright 2009, The Android Open Source Project
427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich**
524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** Licensed under the Apache License, Version 2.0 (the "License");
624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** you may not use this file except in compliance with the License.
724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** You may obtain a copy of the License at
827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich**
924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes**     http://www.apache.org/licenses/LICENSE-2.0
1027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich**
1124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** Unless required by applicable law or agreed to in writing, software
1224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** distributed under the License is distributed on an "AS IS" BASIS,
1324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** See the License for the specific language governing permissions and
1527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** limitations under the License.
1627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich*/
1727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
1827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich// This source file is automatically generated
1927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#include <GLES/gl.h>
212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#include <GLES/glext.h>
222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
239626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <jni.h>
249626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <JNIHelp.h>
2527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <android_runtime/AndroidRuntime.h>
2627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <utils/misc.h>
2727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <assert.h>
28be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich
2927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic int initialized = 0;
3027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
3127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jclass nioAccessClass;
3227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jclass bufferClass;
3327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jmethodID getBasePointerID;
3427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jmethodID getBaseArrayID;
3527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jmethodID getBaseArrayOffsetID;
3627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jfieldID positionID;
3727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jfieldID limitID;
3827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jfieldID elementSizeShiftID;
3927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian/* special calls implemented in Android's GLES wrapper used to more
422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * efficiently bound-check passed arrays */
432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianextern "C" {
442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_VERSION_ES_CM_1_1
452ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride,
462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        const GLvoid *ptr, GLsizei count);
472ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride,
482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        const GLvoid *pointer, GLsizei count);
492ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type,
502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
512ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
532ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type,
542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
552ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type,
562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
572ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif
602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_ES_VERSION_2_0
612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type,
622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) {
632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    glVertexAttribPointer(indx, size, type, normalized, stride, pointer);
642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian}
652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif
66cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden#ifdef GL_ES_VERSION_3_0
67cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFaddenstatic void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type,
68cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden        GLsizei stride, const GLvoid *pointer, GLsizei count) {
69cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    glVertexAttribIPointer(indx, size, type, stride, pointer);
70cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden}
71cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden#endif
722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian}
732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
7427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* Cache method IDs each time the class is loaded. */
7527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
7627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
7724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott HughesnativeClassInit(JNIEnv *_env, jclass glImplClass)
7827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{
7927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
8027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
8127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
8227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
8327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
8427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
8527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
8627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            "getBasePointer", "(Ljava/nio/Buffer;)J");
8727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
8827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
8927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
9027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
9127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
9227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    positionID = _env->GetFieldID(bufferClass, "position", "I");
9327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    limitID = _env->GetFieldID(bufferClass, "limit", "I");
9427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    elementSizeShiftID =
9527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
9627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
9727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
9827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void *
9917045a16575ece34cfadb63da4791f115625df78Thomas TafertshofergetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset)
10027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{
10127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint position;
10227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint limit;
10327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint elementSizeShift;
10427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jlong pointer;
10527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
10627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    position = _env->GetIntField(buffer, positionID);
10727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    limit = _env->GetIntField(buffer, limitID);
10827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
10927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    *remaining = (limit - position) << elementSizeShift;
11027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    pointer = _env->CallStaticLongMethod(nioAccessClass,
11127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            getBasePointerID, buffer);
11227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (pointer != 0L) {
11327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        *array = NULL;
11401c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat        return reinterpret_cast<void*>(pointer);
11527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
11624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes
11727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
11827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            getBaseArrayID, buffer);
11917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    *offset = _env->CallStaticIntMethod(nioAccessClass,
12027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            getBaseArrayOffsetID, buffer);
12124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes
12217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    return NULL;
12327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
12427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
12527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
12627f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
12727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{
12827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _env->ReleasePrimitiveArrayCritical(array, data,
1292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian                       commit ? 0 : JNI_ABORT);
13027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
13127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
132be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevichstatic void *
133be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack PalevichgetDirectBufferPointer(JNIEnv *_env, jobject buffer) {
134be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    char* buf = (char*) _env->GetDirectBufferAddress(buffer);
135be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    if (buf) {
136be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        jint position = _env->GetIntField(buffer, positionID);
137be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
138be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        buf += position << elementSizeShift;
139be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    } else {
14024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException",
14124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes                          "Must use a native order direct Buffer");
142be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    }
143be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    return (void*) buf;
144be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich}
145be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich
14627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich// --------------------------------------------------------------------------
1472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
1482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian/*
1492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * returns the number of values glGet returns for a given pname.
1502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian *
1512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * The code below is written such that pnames requiring only one values
1522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * are the default (and are not explicitely tested for). This makes the
1532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * checking code much shorter/readable/efficient.
1542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian *
1552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * This means that unknown pnames (e.g.: extensions) will default to 1. If
1562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * that unknown pname needs more than 1 value, then the validation check
1572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * is incomplete and the app may crash if it passed the wrong number params.
1582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian */
1592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic int getNeededCount(GLint pname) {
1602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    int needed = 1;
1612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_ES_VERSION_2_0
1622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // GLES 2.x pnames
1632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    switch (pname) {
1642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_ALIASED_LINE_WIDTH_RANGE:
1652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_ALIASED_POINT_SIZE_RANGE:
1662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 2;
1672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
1682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
1692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_BLEND_COLOR:
1702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COLOR_CLEAR_VALUE:
1712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COLOR_WRITEMASK:
1722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SCISSOR_BOX:
1732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_VIEWPORT:
1742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 4;
1752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
1762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
1772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COMPRESSED_TEXTURE_FORMATS:
1782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
1792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
1802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
1812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SHADER_BINARY_FORMATS:
1822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed);
1832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
1842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
1852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif
1862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
1872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_VERSION_ES_CM_1_1
1882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // GLES 1.x pnames
1892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    switch (pname) {
1902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_ALIASED_LINE_WIDTH_RANGE:
1912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_ALIASED_POINT_SIZE_RANGE:
1922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_DEPTH_RANGE:
1932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SMOOTH_LINE_WIDTH_RANGE:
1942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SMOOTH_POINT_SIZE_RANGE:
1952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 2;
1962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
1972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
1982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_CURRENT_NORMAL:
1992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_POINT_DISTANCE_ATTENUATION:
2002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 3;
2012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
2022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COLOR_CLEAR_VALUE:
2042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COLOR_WRITEMASK:
2052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_CURRENT_COLOR:
2062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_CURRENT_TEXTURE_COORDS:
2072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_FOG_COLOR:
2082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_LIGHT_MODEL_AMBIENT:
2092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SCISSOR_BOX:
2102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_VIEWPORT:
2112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 4;
2122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
2132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_MODELVIEW_MATRIX:
2152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_PROJECTION_MATRIX:
2162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_TEXTURE_MATRIX:
2172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 16;
2182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
2192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COMPRESSED_TEXTURE_FORMATS:
2212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
2222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
2232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif
2252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    return needed;
2262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian}
2272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopiantemplate <typename JTYPEARRAY, typename CTYPE, void GET(GLenum, CTYPE*)>
2292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void
2302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianget
2312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian  (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) {
2322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
2332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType;
2342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage;
2352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    CTYPE *params_base = (CTYPE *) 0;
2362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _remaining;
2372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    CTYPE *params = (CTYPE *) 0;
2382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    int _needed = 0;
2392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (!params_ref) {
2412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
2422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
2432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "params == null";
2442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
2452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (offset < 0) {
2472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
2482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
2492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "offset < 0";
2502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
2512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    _remaining = _env->GetArrayLength(params_ref) - offset;
2532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    _needed = getNeededCount(pname);
2542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // if we didn't find this pname, we just assume the user passed
2552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // an array of the right size -- this might happen with extensions
2562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // or if we forget an enum here.
2572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < _needed) {
2582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
2592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
2602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < needed";
2612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
2622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    params_base = (CTYPE *)
2642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    params = params_base + offset;
2662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    GET(
2682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        (GLenum)pname,
2692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        (CTYPE *)params
2702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    );
2712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
2732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (params_base) {
2742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _exception ? JNI_ABORT: 0);
2762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
2782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
2792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian}
2812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopiantemplate <typename CTYPE, void GET(GLenum, CTYPE*)>
2842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void
2852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopiangetarray
2862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
2872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
2882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType;
2892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage;
2902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jarray _array = (jarray) 0;
2912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _bufferOffset = (jint) 0;
2922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _remaining;
2932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    CTYPE *params = (CTYPE *) 0;
2942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    int _needed = 0;
2952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    params = (CTYPE *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
297cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    _remaining /= sizeof(CTYPE);    // convert from bytes to item count
2982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    _needed = getNeededCount(pname);
2992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // if we didn't find this pname, we just assume the user passed
3002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // an array of the right size -- this might happen with extensions
3012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // or if we forget an enum here.
3022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_needed>0 && _remaining < _needed) {
3032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
3042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
3052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < needed";
3062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
3072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (params == NULL) {
3092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        params = (CTYPE *) (_paramsBase + _bufferOffset);
3112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    GET(
3132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        (GLenum)pname,
3142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        (CTYPE *)params
3152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    );
3162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
3182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_array) {
3192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
3202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
3222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
3232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian}
3252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian// --------------------------------------------------------------------------
32727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glBindBuffer ( GLenum target, GLuint buffer ) */
32827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
32927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glBindBuffer__II
33027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint buffer) {
33127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glBindBuffer(
33227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
33327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint)buffer
33427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
33527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
33627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
33727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage ) */
33827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
33927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glBufferData__IILjava_nio_Buffer_2I
34027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint size, jobject data_buf, jint usage) {
3412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
3422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
3432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
34427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
34517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
34627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
34727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *data = (GLvoid *) 0;
34827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
34927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (data_buf) {
35017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
351c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich        if (_remaining < size) {
3522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer            _exception = 1;
3532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer            _exceptionType = "java/lang/IllegalArgumentException";
3542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer            _exceptionMessage = "remaining() < size < needed";
355c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich            goto exit;
356c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich        }
35727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
35837c9b49ab5eb5a676370fd7081db0967c38e97a6Thomas Tafertshofer    if (data_buf && data == NULL) {
35917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
36017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
36117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
36227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glBufferData(
36327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
36427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizeiptr)size,
36527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)data,
36627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)usage
36727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
368c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich
369c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevichexit:
37027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
37127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
37227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
3732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
3742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
3752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
37627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
37727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
37827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glBufferSubData ( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data ) */
37927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
38027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glBufferSubData__IIILjava_nio_Buffer_2
38127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint offset, jint size, jobject data_buf) {
3822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
3832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
3842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
38527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
38617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
38727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
38827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *data = (GLvoid *) 0;
38927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
39017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
391c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich    if (_remaining < size) {
3922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
3932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
3942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < size < needed";
395c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich        goto exit;
396c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich    }
39717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (data == NULL) {
39817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
39917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
40017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
40127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glBufferSubData(
40227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
40327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLintptr)offset,
40427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizeiptr)size,
40527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)data
40627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
407c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich
408c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevichexit:
40927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
41027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
41127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
4122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
4132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
4142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
41527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
41627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
41727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClipPlanef ( GLenum plane, const GLfloat *equation ) */
41827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
41927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClipPlanef__I_3FI
42027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint plane, jfloatArray equation_ref, jint offset) {
4212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
4222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
4232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
42427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *equation_base = (GLfloat *) 0;
42527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
42627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *equation = (GLfloat *) 0;
42727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
42827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!equation_ref) {
4292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
4302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
4312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "equation == null";
43227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
43327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
43427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
4352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
4362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
4372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
43827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
43927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
44027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(equation_ref) - offset;
44127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    equation_base = (GLfloat *)
44227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(equation_ref, (jboolean *)0);
44327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    equation = equation_base + offset;
44427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
44527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClipPlanef(
44627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)plane,
44727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)equation
44827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
44927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
45027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
45127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (equation_base) {
45227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(equation_ref, equation_base,
45327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
45427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
4552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
4562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
4572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
45827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
45927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
46027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClipPlanef ( GLenum plane, const GLfloat *equation ) */
46127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
46227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClipPlanef__ILjava_nio_FloatBuffer_2
46327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint plane, jobject equation_buf) {
4642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
4652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
4662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
46727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
46817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
46927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
47027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *equation = (GLfloat *) 0;
47127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
47217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    equation = (GLfloat *)getPointer(_env, equation_buf, &_array, &_remaining, &_bufferOffset);
47317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (equation == NULL) {
47417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _equationBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
47517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        equation = (GLfloat *) (_equationBase + _bufferOffset);
47617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
47727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClipPlanef(
47827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)plane,
47927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)equation
48027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
48127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
48227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, equation, JNI_FALSE);
48327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
4842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
4852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
4862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
48727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
48827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
48927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClipPlanex ( GLenum plane, const GLfixed *equation ) */
49027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
49127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClipPlanex__I_3II
49227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint plane, jintArray equation_ref, jint offset) {
4932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
4942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
4952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
49627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *equation_base = (GLfixed *) 0;
49727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
49827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *equation = (GLfixed *) 0;
49927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
50027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!equation_ref) {
5012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
5022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
5032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "equation == null";
50427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
50527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
50627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
5072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
5082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
5092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
51027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
51127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
51227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(equation_ref) - offset;
51327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    equation_base = (GLfixed *)
51427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(equation_ref, (jboolean *)0);
51527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    equation = equation_base + offset;
51627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
51727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClipPlanex(
51827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)plane,
51927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)equation
52027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
52127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
52227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
52327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (equation_base) {
52427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(equation_ref, equation_base,
52527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
52627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
5272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
5282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
5292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
53027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
53127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
53227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClipPlanex ( GLenum plane, const GLfixed *equation ) */
53327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
53427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClipPlanex__ILjava_nio_IntBuffer_2
53527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint plane, jobject equation_buf) {
5362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
5372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
5382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
53927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
54017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
54127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
54227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *equation = (GLfixed *) 0;
54327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
54417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    equation = (GLfixed *)getPointer(_env, equation_buf, &_array, &_remaining, &_bufferOffset);
54517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (equation == NULL) {
54617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _equationBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
54717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        equation = (GLfixed *) (_equationBase + _bufferOffset);
54817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
54927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClipPlanex(
55027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)plane,
55127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)equation
55227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
55327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
55427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, equation, JNI_FALSE);
55527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
5562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
5572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
5582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
55927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
56027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
56127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColor4ub ( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ) */
56227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
56327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColor4ub__BBBB
56427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jbyte red, jbyte green, jbyte blue, jbyte alpha) {
56527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glColor4ub(
56627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLubyte)red,
56727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLubyte)green,
56827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLubyte)blue,
56927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLubyte)alpha
57027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
57127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
57227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
57327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColorPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
57427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
57527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColorPointer__IIII
57627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) {
57727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glColorPointer(
57827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)size,
57927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
58027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
58101c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat        reinterpret_cast<GLvoid *>(offset)
58227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
58327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
58427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
58527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */
58627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
58727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDeleteBuffers__I_3II
58827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) {
5892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
5902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
5912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
59227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *buffers_base = (GLuint *) 0;
59327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
59427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *buffers = (GLuint *) 0;
59527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
59627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!buffers_ref) {
5972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
5982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
5992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "buffers == null";
60027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
60127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
60227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
6032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
6042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
6052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
60627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
60727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
60827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(buffers_ref) - offset;
60927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < n) {
6102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
6112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
6122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
61327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
61427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
61527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    buffers_base = (GLuint *)
61627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0);
61727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    buffers = buffers_base + offset;
61827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
61927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDeleteBuffers(
62027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)n,
62127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint *)buffers
62227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
62327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
62427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
62527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (buffers_base) {
62627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base,
62727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
62827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
6292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
6302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
6312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
63227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
63327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
63427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */
63527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
63627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDeleteBuffers__ILjava_nio_IntBuffer_2
63727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) {
6382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
6392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
6402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
64127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
64217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
64327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
64427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *buffers = (GLuint *) 0;
64527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
64617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset);
64727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < n) {
6482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
6492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
6502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
65127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
65227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
65317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (buffers == NULL) {
65417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
65517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        buffers = (GLuint *) (_buffersBase + _bufferOffset);
65617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
65727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDeleteBuffers(
65827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)n,
65927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint *)buffers
66027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
66127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
66227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
66327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
66427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, buffers, JNI_FALSE);
66527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
6662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
6672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
6682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
66927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
67027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
67127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, GLint offset ) */
67227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
67327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDrawElements__IIII
67427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint offset) {
6752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
6762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
6772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
67827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDrawElements(
67927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)mode,
68027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)count,
68127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
68201c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat        reinterpret_cast<GLvoid *>(offset)
68327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
6842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
6852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
6862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
68727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
68827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
68927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */
69027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
69127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGenBuffers__I_3II
69227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) {
69327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
6942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
6952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
69627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *buffers_base = (GLuint *) 0;
69727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
69827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *buffers = (GLuint *) 0;
69927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
70027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!buffers_ref) {
70127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
7022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "buffers == null";
70427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
70527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
70627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
70727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
7082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
71027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
71127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
71227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(buffers_ref) - offset;
71327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < n) {
71427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
7152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
71727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
71827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
71927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    buffers_base = (GLuint *)
72027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0);
72127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    buffers = buffers_base + offset;
72227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
72327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGenBuffers(
72427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)n,
72527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint *)buffers
72627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
72727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
72827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
72927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (buffers_base) {
73027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base,
73127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
73227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
7332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
7342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
7352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
73627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
73727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
73827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */
73927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
74027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGenBuffers__ILjava_nio_IntBuffer_2
74127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) {
74227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
7432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
7442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
74527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
74617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
74727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
74827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *buffers = (GLuint *) 0;
74927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
75017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset);
75127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < n) {
75227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
7532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
75527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
75627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
75717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (buffers == NULL) {
75817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
75917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        buffers = (GLuint *) (_buffersBase + _bufferOffset);
76017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
76127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGenBuffers(
76227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)n,
76327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint *)buffers
76427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
76527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
76627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
76727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
76827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, buffers, _exception ? JNI_FALSE : JNI_TRUE);
76927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
7702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
7712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
7722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
77327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
77427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
77527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
77627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
77727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetBooleanv__I_3ZI
77827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jbooleanArray params_ref, jint offset) {
7792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    get<jbooleanArray, GLboolean, glGetBooleanv>(_env, _this, pname, params_ref, offset);
78027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
78127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
78227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
78327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
78427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetBooleanv__ILjava_nio_IntBuffer_2
78527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
7862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    getarray<GLboolean, glGetBooleanv>(_env, _this, pname, params_buf);
78727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
78827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
78927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
79027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetBufferParameteriv__II_3II
79127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
79273108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _exception = 0;
7932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
7942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
79573108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params_base = (GLint *) 0;
79673108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _remaining;
79773108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params = (GLint *) 0;
79873108675c944ab4ee89631dced23566b12341b66Jack Palevich
79973108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (!params_ref) {
80073108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
8012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
80373108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
80473108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
80573108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (offset < 0) {
80673108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
8072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
80973108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
81073108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
81173108675c944ab4ee89631dced23566b12341b66Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
81273108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_remaining < 1) {
81373108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
8142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
81673108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
81773108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
81873108675c944ab4ee89631dced23566b12341b66Jack Palevich    params_base = (GLint *)
81973108675c944ab4ee89631dced23566b12341b66Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
82073108675c944ab4ee89631dced23566b12341b66Jack Palevich    params = params_base + offset;
82173108675c944ab4ee89631dced23566b12341b66Jack Palevich
82273108675c944ab4ee89631dced23566b12341b66Jack Palevich    glGetBufferParameteriv(
82373108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)target,
82473108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)pname,
82573108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLint *)params
82673108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
82773108675c944ab4ee89631dced23566b12341b66Jack Palevich
82873108675c944ab4ee89631dced23566b12341b66Jack Palevichexit:
82973108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (params_base) {
83073108675c944ab4ee89631dced23566b12341b66Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
83173108675c944ab4ee89631dced23566b12341b66Jack Palevich            _exception ? JNI_ABORT: 0);
83273108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
8332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
8342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
8352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
83627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
83727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
83827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
83927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
84027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetBufferParameteriv__IILjava_nio_IntBuffer_2
84127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
84273108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _exception = 0;
8432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
8442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
84573108675c944ab4ee89631dced23566b12341b66Jack Palevich    jarray _array = (jarray) 0;
84617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
84773108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _remaining;
84873108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params = (GLint *) 0;
84973108675c944ab4ee89631dced23566b12341b66Jack Palevich
85017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
85173108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_remaining < 1) {
85273108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
8532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
85573108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
85673108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
85717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
85817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
85917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
86017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
86173108675c944ab4ee89631dced23566b12341b66Jack Palevich    glGetBufferParameteriv(
86273108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)target,
86373108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)pname,
86473108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLint *)params
86573108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
86673108675c944ab4ee89631dced23566b12341b66Jack Palevich
86773108675c944ab4ee89631dced23566b12341b66Jack Palevichexit:
86873108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_array) {
86973108675c944ab4ee89631dced23566b12341b66Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
87073108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
8712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
8722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
8732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
87427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
87527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
87627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetClipPlanef ( GLenum pname, GLfloat *eqn ) */
87727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
87827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetClipPlanef__I_3FI
87927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloatArray eqn_ref, jint offset) {
88027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
8812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
8822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
88327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *eqn_base = (GLfloat *) 0;
88427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
88527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *eqn = (GLfloat *) 0;
88627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
88727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!eqn_ref) {
88827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
8892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "eqn == null";
89127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
89227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
89327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
89427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
8952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
89727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
89827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
89927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(eqn_ref) - offset;
9002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 4) {
9012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
9022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
9032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < 4 < needed";
9042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
9052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
90627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    eqn_base = (GLfloat *)
90727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(eqn_ref, (jboolean *)0);
90827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    eqn = eqn_base + offset;
90927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
91027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetClipPlanef(
91127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
91227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)eqn
91327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
91427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
91527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
91627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (eqn_base) {
91727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(eqn_ref, eqn_base,
91827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
91927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
9202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
9212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
9222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
92327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
92427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
92527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetClipPlanef ( GLenum pname, GLfloat *eqn ) */
92627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
92727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetClipPlanef__ILjava_nio_FloatBuffer_2
92827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject eqn_buf) {
9292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
9302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
9312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
93227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
93317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
93427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
93527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *eqn = (GLfloat *) 0;
93627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
93717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    eqn = (GLfloat *)getPointer(_env, eqn_buf, &_array, &_remaining, &_bufferOffset);
9382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 4) {
9392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
9402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
9412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < 4 < needed";
9422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
9432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
94417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (eqn == NULL) {
94517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _eqnBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
94617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        eqn = (GLfloat *) (_eqnBase + _bufferOffset);
94717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
94827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetClipPlanef(
94927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
95027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)eqn
95127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
9522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
9532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
95427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
9552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _array, eqn, _exception ? JNI_FALSE : JNI_TRUE);
9562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
9572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
9582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
95927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
96027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
96127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
96227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetClipPlanex ( GLenum pname, GLfixed *eqn ) */
96327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
96427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetClipPlanex__I_3II
96527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jintArray eqn_ref, jint offset) {
96627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
9672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
9682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
96927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *eqn_base = (GLfixed *) 0;
97027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
97127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *eqn = (GLfixed *) 0;
97227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
97327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!eqn_ref) {
97427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
9752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
9762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "eqn == null";
97727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
97827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
97927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
98027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
9812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
9822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
98327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
98427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
98527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(eqn_ref) - offset;
9862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 4) {
9872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
9882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
9892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < 4 < needed";
9902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
9912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
99227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    eqn_base = (GLfixed *)
99327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(eqn_ref, (jboolean *)0);
99427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    eqn = eqn_base + offset;
99527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
99627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetClipPlanex(
99727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
99827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)eqn
99927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
100027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
100127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
100227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (eqn_base) {
100327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(eqn_ref, eqn_base,
100427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
100527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
10062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
10072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
10082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
100927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
101027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
101127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetClipPlanex ( GLenum pname, GLfixed *eqn ) */
101227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
101327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetClipPlanex__ILjava_nio_IntBuffer_2
101427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject eqn_buf) {
10152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
10162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
10172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
101827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
101917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
102027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
102127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *eqn = (GLfixed *) 0;
102227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
102317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    eqn = (GLfixed *)getPointer(_env, eqn_buf, &_array, &_remaining, &_bufferOffset);
10242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 4) {
10252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
10262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
10272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < 4 < needed";
10282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
10292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
103017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (eqn == NULL) {
103117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _eqnBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
103217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        eqn = (GLfixed *) (_eqnBase + _bufferOffset);
103317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
103427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetClipPlanex(
103527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
103627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)eqn
103727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
10382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
10392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
104027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
10412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _array, eqn, _exception ? JNI_FALSE : JNI_TRUE);
10422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
10432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
10442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
104527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
104627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
104727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
104827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetFixedv ( GLenum pname, GLfixed *params ) */
104927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
105027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetFixedv__I_3II
105127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
105227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
10532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
10542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
105527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
105627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
105727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
105827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
105927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
106027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
10612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
106327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
106427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
106527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
106627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
10672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
106927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
107027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
107127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
107227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
107327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
107427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
107527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
107627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetFixedv(
107727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
107827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
107927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
108027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
108127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
108227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
108327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
108427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
108527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
10862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
10872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
10882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
108927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
109027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
109127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetFixedv ( GLenum pname, GLfixed *params ) */
109227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
109327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetFixedv__ILjava_nio_IntBuffer_2
109427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
109527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
109617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
109727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
109827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
109927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
110017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
110117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
110217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
110317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
110417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
110527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetFixedv(
110627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
110727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
110827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
110927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
11102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
111127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
111227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
111327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
111427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */
111527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
111627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetFloatv__I_3FI
111727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
11182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    get<jfloatArray, GLfloat, glGetFloatv>(_env, _this, pname, params_ref, offset);
111927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
112027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
112127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */
112227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
112327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetFloatv__ILjava_nio_FloatBuffer_2
112427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
11252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    getarray<GLfloat, glGetFloatv>(_env, _this, pname, params_buf);
112627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
112727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetLightfv ( GLenum light, GLenum pname, GLfloat *params ) */
112827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
112927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetLightfv__II_3FI
113027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jfloatArray params_ref, jint offset) {
113127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
11322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
11332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
113427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
113527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
113627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
113727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
113827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
113927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
11402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
11412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
114227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
114327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
114427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
114527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
11462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
11472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
114827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
114927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
115027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
115127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
115227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
115327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION)
115427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_DIRECTION:
115527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION)
115627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 3;
115727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
115827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
115927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
116027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
116127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
116227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
116327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
116427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
116527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
116627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
116727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
116827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
116927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
117027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
117127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
117227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
11732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
117427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
117527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
117627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
117727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
11782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
11792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
118027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
118127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
118227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
118327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
118427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
118527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
118627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetLightfv(
118727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
118827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
118927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
119027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
119127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
119227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
119327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
119427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
119527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
119627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
11972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
11982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
11992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
120027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
120127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
120227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetLightfv ( GLenum light, GLenum pname, GLfloat *params ) */
120327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
120427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetLightfv__IILjava_nio_FloatBuffer_2
120527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
120627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
12072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
12082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
120927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
121017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
121127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
121227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
121327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
121417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
121527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
121627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
121727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION)
121827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_DIRECTION:
121927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION)
122027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 3;
122127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
122227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
122327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
122427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
122527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
122627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
122727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
122827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
122927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
123027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
123127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
123227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
123327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
123427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
123527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
123627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
12372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
123827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
123927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
124027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
124127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
12422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
12432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
124427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
124527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
124617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
124717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
124817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
124917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
125027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetLightfv(
125127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
125227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
125327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
125427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
125527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
125627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
125727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
125827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
125927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
12602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
12612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
12622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
126327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
126427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
126527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetLightxv ( GLenum light, GLenum pname, GLfixed *params ) */
126627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
126727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetLightxv__II_3II
126827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jintArray params_ref, jint offset) {
126927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
12702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
12712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
127227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
127327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
127427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
127527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
127627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
127727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
12782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
12792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
128027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
128127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
128227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
128327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
12842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
12852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
128627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
128727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
128827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
128927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
129027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
129127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION)
129227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_DIRECTION:
129327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION)
129427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 3;
129527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
129627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
129727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
129827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
129927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
130027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
130127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
130227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
130327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
130427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
130527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
130627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
130727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
130827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
130927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
131027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
13112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
131227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
131327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
131427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
131527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
13162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
131827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
131927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
132027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
132127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
132227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
132327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
132427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetLightxv(
132527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
132627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
132727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
132827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
132927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
133027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
133127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
133227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
133327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
133427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
13352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
13362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
13372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
133827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
133927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
134027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetLightxv ( GLenum light, GLenum pname, GLfixed *params ) */
134127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
134227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetLightxv__IILjava_nio_IntBuffer_2
134327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
134427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
13452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
13462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
134727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
134817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
134927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
135027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
135127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
135217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
135327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
135427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
135527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION)
135627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_DIRECTION:
135727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION)
135827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 3;
135927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
136027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
136127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
136227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
136327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
136427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
136527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
136627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
136727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
136827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
136927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
137027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
137127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
137227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
137327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
137427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
13752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
137627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
137727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
137827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
137927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
13802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
138227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
138327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
138417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
138517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
138617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
138717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
138827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetLightxv(
138927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
139027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
139127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
139227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
139327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
139427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
139527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
139627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
139727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
13982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
13992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
14002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
140127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
140227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
140327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetMaterialfv ( GLenum face, GLenum pname, GLfloat *params ) */
140427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
140527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetMaterialfv__II_3FI
140627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jfloatArray params_ref, jint offset) {
140727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
14082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
14092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
141027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
141127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
141227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
141327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
141427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
141527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
14162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
141827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
141927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
142027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
142127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
14222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
142427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
142527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
142627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
142727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
142827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
142927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
143027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
143127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
143227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
143327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
143427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
143527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
143627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
143727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
143827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
143927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
144027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
144127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE)
144227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT_AND_DIFFUSE:
144327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE)
144427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
144527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
144627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
14472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
144827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
144927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
145027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
145127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
14522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
145427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
145527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
145627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
145727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
145827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
145927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
146027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetMaterialfv(
146127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
146227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
146327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
146427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
146527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
146627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
146727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
146827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
146927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
147027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
14712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
14722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
14732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
147427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
147527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
147627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetMaterialfv ( GLenum face, GLenum pname, GLfloat *params ) */
147727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
147827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetMaterialfv__IILjava_nio_FloatBuffer_2
147927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
148027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
14812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
14822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
148327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
148417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
148527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
148627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
148727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
148817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
148927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
149027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
149127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
149227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
149327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
149427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
149527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
149627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
149727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
149827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
149927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
150027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
150127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
150227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
150327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE)
150427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT_AND_DIFFUSE:
150527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE)
150627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
150727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
150827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
15092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
151027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
151127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
151227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
151327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
15142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
151627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
151727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
151817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
151917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
152017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
152117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
152227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetMaterialfv(
152327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
152427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
152527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
152627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
152727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
152827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
152927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
153027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
153127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
15322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
15332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
15342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
153527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
153627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
153727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetMaterialxv ( GLenum face, GLenum pname, GLfixed *params ) */
153827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
153927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetMaterialxv__II_3II
154027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jintArray params_ref, jint offset) {
154127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
15422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
15432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
154427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
154527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
154627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
154727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
154827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
154927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
15502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
155227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
155327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
155427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
155527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
15562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
155827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
155927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
156027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
156127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
156227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
156327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
156427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
156527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
156627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
156727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
156827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
156927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
157027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
157127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
157227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
157327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
157427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
157527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE)
157627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT_AND_DIFFUSE:
157727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE)
157827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
157927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
158027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
15812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
158227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
158327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
158427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
158527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
15862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
158827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
158927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
159027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
159127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
159227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
159327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
159427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetMaterialxv(
159527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
159627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
159727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
159827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
159927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
160027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
160127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
160227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
160327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
160427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
16052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
16062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
16072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
160827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
160927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
161027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetMaterialxv ( GLenum face, GLenum pname, GLfixed *params ) */
161127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
161227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetMaterialxv__IILjava_nio_IntBuffer_2
161327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
161427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
16152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
16162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
161727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
161817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
161927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
162027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
162127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
162217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
162327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
162427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
162527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
162627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
162727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
162827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
162927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
163027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
163127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
163227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
163327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
163427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
163527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
163627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
163727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE)
163827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT_AND_DIFFUSE:
163927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE)
164027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
164127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
164227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
16432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
164427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
164527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
164627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
164727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
16482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
165027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
165127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
165217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
165317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
165417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
165517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
165627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetMaterialxv(
165727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
165827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
165927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
166027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
166127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
166227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
166327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
166427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
166527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
16662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
16672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
16682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
166927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
167027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
167127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnvfv ( GLenum env, GLenum pname, GLfloat *params ) */
167227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
167327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnvfv__II_3FI
167427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint env, jint pname, jfloatArray params_ref, jint offset) {
167527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
16762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
16772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
167827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
167927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
168027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
168127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
168227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
168327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
16842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
168627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
168727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
168827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
168927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
16902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
169227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
169327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
169427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
169527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
169627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
169727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
169827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
169927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
170027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
170127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
170227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
17032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
170427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
170527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
170627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
170727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
17082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
171027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
171127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
171227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
171327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
171427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
171527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
171627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexEnvfv(
171727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)env,
171827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
171927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
172027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
172127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
172227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
172327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
172427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
172527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
172627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
17272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
17282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
17292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
173027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
173127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
173227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnvfv ( GLenum env, GLenum pname, GLfloat *params ) */
173327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
173427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnvfv__IILjava_nio_FloatBuffer_2
173527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint env, jint pname, jobject params_buf) {
173627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
17372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
17382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
173927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
174017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
174127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
174227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
174327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
174417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
174527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
174627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
174727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
174827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
174927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
175027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
175127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
175227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
17532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
175427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
175527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
175627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
175727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
17582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
176027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
176127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
176217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
176317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
176417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
176517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
176627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexEnvfv(
176727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)env,
176827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
176927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
177027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
177127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
177227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
177327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
177427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
177527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
17762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
17772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
17782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
177927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
178027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
178127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnviv ( GLenum env, GLenum pname, GLint *params ) */
178227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
178327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnviv__II_3II
178427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint env, jint pname, jintArray params_ref, jint offset) {
178527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
17862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
17872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
178827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params_base = (GLint *) 0;
178927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
179027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
179127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
179227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
179327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
17942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
179627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
179727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
179827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
179927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
18002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
18012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
180227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
180327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
180427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
180527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
180627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
180727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
180827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
180927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
181027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
181127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
181227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
18132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
181427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
181527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
181627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
181727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
18182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
18192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
182027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
182127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
182227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLint *)
182327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
182427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
182527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
182627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexEnviv(
182727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)env,
182827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
182927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
183027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
183127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
183227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
183327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
183427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
183527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
183627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
18372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
18382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
18392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
184027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
184127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
184227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnviv ( GLenum env, GLenum pname, GLint *params ) */
184327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
184427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnviv__IILjava_nio_IntBuffer_2
184527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint env, jint pname, jobject params_buf) {
184627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
18472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
18482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
184927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
185017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
185127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
185227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
185327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
185417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
185527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
185627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
185727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
185827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
185927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
186027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
186127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
186227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
18632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
186427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
186527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
186627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
186727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
18682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
18692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
187027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
187127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
187217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
187317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
187417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
187517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
187627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexEnviv(
187727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)env,
187827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
187927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
188027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
188127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
188227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
188327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
188427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
188527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
18862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
18872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
18882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
188927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
189027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
189127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnvxv ( GLenum env, GLenum pname, GLfixed *params ) */
189227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
189327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnvxv__II_3II
189427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint env, jint pname, jintArray params_ref, jint offset) {
189527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
18962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
18972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
189827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
189927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
190027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
190127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
190227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
190327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
19042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
190627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
190727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
190827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
190927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
19102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
191227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
191327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
191427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
191527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
191627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
191727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
191827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
191927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
192027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
192127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
192227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
19232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
192427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
192527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
192627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
192727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
19282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
193027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
193127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
193227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
193327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
193427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
193527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
193627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexEnvxv(
193727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)env,
193827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
193927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
194027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
194127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
194227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
194327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
194427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
194527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
194627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
19472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
19482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
19492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
195027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
195127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
195227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnvxv ( GLenum env, GLenum pname, GLfixed *params ) */
195327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
195427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnvxv__IILjava_nio_IntBuffer_2
195527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint env, jint pname, jobject params_buf) {
195627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
19572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
19582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
195927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
196017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
196127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
196227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
196327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
196417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
196527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
196627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
196727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
196827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
196927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
197027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
197127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
197227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
19732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
197427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
197527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
197627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
197727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
19782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
198027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
198127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
198217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
198317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
198417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
198517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
198627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexEnvxv(
198727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)env,
198827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
198927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
199027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
199127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
199227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
199327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
199427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
199527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
19962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
19972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
19982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
199927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
200027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
200127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
200227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
200327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameterfv__II_3FI
200427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
200527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
20062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
20072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
200827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
200927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
201027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
201127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
201227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
201327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
20142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
201627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
201727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
201827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
201927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
20202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
202227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
202327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
202427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
202527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
202627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
20272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
202927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
203027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
203127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
203227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
203327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
203427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
203527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexParameterfv(
203627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
203727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
203827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
203927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
204027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
204127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
204227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
204327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
204427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
204527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
20462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
20472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
20482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
204927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
205027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
205127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
205227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
205327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameterfv__IILjava_nio_FloatBuffer_2
205427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
205527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
20562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
20572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
205827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
205917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
206027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
206127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
206227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
206317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
206427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
206527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
20662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
206827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
206927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
207017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
207117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
207217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
207317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
207427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexParameterfv(
207527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
207627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
207727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
207827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
207927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
208027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
208127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
208227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
208327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
20842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
20852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
20862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
208727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
208827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
208927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
209027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
209127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameteriv__II_3II
209227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
209327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
20942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
20952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
209627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params_base = (GLint *) 0;
209727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
209827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
209927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
210027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
210127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
21022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
210427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
210527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
210627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
210727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
21082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
211027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
211127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
211227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
211327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
211427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
21152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
211727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
211827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
211927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLint *)
212027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
212127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
212227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
212327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexParameteriv(
212427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
212527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
212627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
212727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
212827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
212927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
213027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
213127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
213227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
213327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
21342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
21352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
21362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
213727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
213827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
213927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
214027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
214127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameteriv__IILjava_nio_IntBuffer_2
214227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
214327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
21442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
21452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
214627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
214717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
214827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
214927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
215027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
215117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
215227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
215327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
21542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
215627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
215727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
215817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
215917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
216017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
216117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
216227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexParameteriv(
216327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
216427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
216527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
216627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
216727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
216827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
216927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
217027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
217127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
21722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
21732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
21742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
217527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
217627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
217727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameterxv ( GLenum target, GLenum pname, GLfixed *params ) */
217827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
217927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameterxv__II_3II
218027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
218127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
21822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
21832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
218427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
218527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
218627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
218727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
218827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
218927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
21902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
219227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
219327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
219427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
219527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
21962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
219827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
219927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
220027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
220127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
220227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
22032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
22042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
220527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
220627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
220727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
220827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
220927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
221027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
221127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexParameterxv(
221227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
221327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
221427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
221527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
221627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
221727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
221827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
221927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
222027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
222127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
22222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
22232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
22242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
222527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
222627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
222727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameterxv ( GLenum target, GLenum pname, GLfixed *params ) */
222827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
222927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameterxv__IILjava_nio_IntBuffer_2
223027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
223127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
22322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
22332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
223427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
223517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
223627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
223727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
223827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
223917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
224027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
224127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
22422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
22432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
224427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
224527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
224617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
224717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
224817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
224917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
225027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexParameterxv(
225127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
225227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
225327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
225427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
225527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
225627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
225727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
225827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
225927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
22602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
22612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
22622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
226327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
226427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
226527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* GLboolean glIsBuffer ( GLuint buffer ) */
226627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jboolean
226727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glIsBuffer__I
226827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint buffer) {
226927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLboolean _returnValue;
227027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _returnValue = glIsBuffer(
227127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint)buffer
227227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
2273cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jboolean)_returnValue;
227427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
227527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
227627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* GLboolean glIsEnabled ( GLenum cap ) */
227727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jboolean
227827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glIsEnabled__I
227927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint cap) {
228027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLboolean _returnValue;
228127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _returnValue = glIsEnabled(
228227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)cap
228327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
2284cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jboolean)_returnValue;
228527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
228627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
228727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* GLboolean glIsTexture ( GLuint texture ) */
228827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jboolean
228927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glIsTexture__I
229027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint texture) {
229127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLboolean _returnValue;
229227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _returnValue = glIsTexture(
229327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint)texture
229427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
2295cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jboolean)_returnValue;
229627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
229727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
229827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glNormalPointer ( GLenum type, GLsizei stride, GLint offset ) */
229927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
230027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glNormalPointer__III
230127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint type, jint stride, jint offset) {
230227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glNormalPointer(
230327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
230427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
230501c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat        reinterpret_cast<GLvoid *>(offset)
230627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
230727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
230827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
230927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterf ( GLenum pname, GLfloat param ) */
231027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
231127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterf__IF
231227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloat param) {
231327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointParameterf(
231427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
231527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)param
231627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
231727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
231827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
231927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterfv ( GLenum pname, const GLfloat *params ) */
232027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
232127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterfv__I_3FI
232227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
23232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
23242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
23252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
232627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
232727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
232827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
232927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
233027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
23312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
23322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
233427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
233527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
233627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
23372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
23382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
234027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
234127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
234227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
234327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
23442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
23452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
234727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
234827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
234927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
235027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
235127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
235227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
235327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointParameterfv(
235427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
235527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
235627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
235727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
235827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
235927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
236027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
236127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
236227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
23632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
23642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
23652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
236627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
236727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
236827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterfv ( GLenum pname, const GLfloat *params ) */
236927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
237027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterfv__ILjava_nio_FloatBuffer_2
237127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
23722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
23732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
23742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
237527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
237617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
237727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
237827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
237927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
238017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
238127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
23822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
23832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
238527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
238627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
238717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
238817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
238917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
239017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
239127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointParameterfv(
239227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
239327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
239427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
239527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
239627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
239727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
239827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
239927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
24002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
24012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
24022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
240327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
240427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
240527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterx ( GLenum pname, GLfixed param ) */
240627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
240727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterx__II
240827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jint param) {
240927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointParameterx(
241027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
241127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)param
241227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
241327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
241427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
241527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterxv ( GLenum pname, const GLfixed *params ) */
241627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
241727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterxv__I_3II
241827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
24192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
24202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
24212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
242227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
242327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
242427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
242527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
242627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
24272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
24282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
243027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
243127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
243227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
24332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
24342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
243627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
243727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
243827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
243927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
24402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
24412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
244327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
244427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
244527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
244627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
244727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
244827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
244927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointParameterxv(
245027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
245127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
245227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
245327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
245427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
245527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
245627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
245727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
245827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
24592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
24602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
24612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
246227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
246327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
246427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterxv ( GLenum pname, const GLfixed *params ) */
246527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
246627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterxv__ILjava_nio_IntBuffer_2
246727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
24682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
24692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
24702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
247127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
247217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
247327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
247427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
247527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
247617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
247727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
24782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
24792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
248127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
248227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
248317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
248417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
248517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
248617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
248727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointParameterxv(
248827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
248927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
249027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
249127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
249227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
249327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
249427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
249527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
24962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
24972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
24982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
249927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
250027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
250127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointSizePointerOES ( GLenum type, GLsizei stride, const GLvoid *pointer ) */
250227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
2503be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevichandroid_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I
2504be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich  (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) {
250527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
250617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
250727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
250827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *pointer = (GLvoid *) 0;
250927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
2510be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    if (pointer_buf) {
2511be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
2512be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        if ( ! pointer ) {
2513be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich            return;
2514be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        }
2515be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    }
2516be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    glPointSizePointerOESBounds(
251727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
251827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
2519be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        (GLvoid *)pointer,
2520be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        (GLsizei)remaining
252127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
252227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
252327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
252427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
252527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
252627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexCoordPointer__IIII
252727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) {
252827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexCoordPointer(
252927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)size,
253027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
253127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
253201c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat        reinterpret_cast<GLvoid *>(offset)
253327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
253427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
253527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
253627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvi ( GLenum target, GLenum pname, GLint param ) */
253727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
253827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvi__III
253927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
254027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexEnvi(
254127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
254227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
254327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)param
254427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
254527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
254627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
254727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnviv ( GLenum target, GLenum pname, const GLint *params ) */
254827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
254927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnviv__II_3II
255027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
25512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
25522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
25532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
255427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params_base = (GLint *) 0;
255527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
255627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
255727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
255827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
25592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
25602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
25612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
256227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
256327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
256427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
25652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
25662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
25672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
256827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
256927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
257027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
257127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
257227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
257327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
257427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
257527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
257627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
257727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
257827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
25792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
258027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
258127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
258227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
25832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
25842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
25852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
258627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
258727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
258827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLint *)
258927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
259027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
259127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
259227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexEnviv(
259327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
259427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
259527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
259627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
259727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
259827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
259927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
260027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
260127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
260227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
26032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
26042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
26052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
260627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
260727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
260827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnviv ( GLenum target, GLenum pname, const GLint *params ) */
260927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
261027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnviv__IILjava_nio_IntBuffer_2
261127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
26122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
26132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
26142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
261527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
261617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
261727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
261827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
261927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
262017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
262127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
262227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
262327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
262427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
262527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
262627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
262727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
262827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
26292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
263027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
263127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
263227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
26332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
26342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
26352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
263627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
263727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
263817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
263917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
264017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
264117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
264227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexEnviv(
264327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
264427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
264527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
264627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
264727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
264827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
264927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
265027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
265127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
26522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
26532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
26542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
265527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
265627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
265727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
265827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
265927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterfv__II_3FI
266027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
26612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
26622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
26632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
266427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
266527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
266627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
266727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
266827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
26692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
26702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
26712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
267227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
267327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
267427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
26752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
26762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
26772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
267827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
267927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
268027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
268127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
26822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
26832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
26842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
268527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
268627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
268727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
268827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
268927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
269027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
269127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameterfv(
269227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
269327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
269427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
269527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
269627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
269727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
269827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
269927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
270027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
270127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
27022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
27032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
27042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
270527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
270627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
270727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
270827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
270927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterfv__IILjava_nio_FloatBuffer_2
271027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
27112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
27122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
27132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
271427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
271517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
271627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
271727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
271827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
271917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
272027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
27212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
27222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
27232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
272427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
272527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
272617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
272717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
272817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
272917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
273027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameterfv(
273127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
273227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
273327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
273427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
273527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
273627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
273727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
273827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
273927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
27402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
27412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
27422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
274327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
274427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
274527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameteri ( GLenum target, GLenum pname, GLint param ) */
274627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
274727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameteri__III
274827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
274927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameteri(
275027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
275127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
275227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)param
275327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
275427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
275527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
275627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
275727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
275827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameteriv__II_3II
275927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
27602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
27612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
27622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
276327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params_base = (GLint *) 0;
276427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
276527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
276627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
276727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
27682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
27692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
27702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
277127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
277227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
277327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
27742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
27752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
27762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
277727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
277827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
277927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
278027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
27812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
27822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
27832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
278427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
278527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
278627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLint *)
278727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
278827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
278927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
279027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameteriv(
279127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
279227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
279327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
279427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
279527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
279627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
279727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
279827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
279927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
280027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
28012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
28022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
28032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
280427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
280527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
280627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
280727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
280827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameteriv__IILjava_nio_IntBuffer_2
280927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
28102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
28112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
28122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
281327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
281417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
281527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
281627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
281727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
281817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
281927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
28202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
28212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
282327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
282427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
282517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
282617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
282717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
282817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
282927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameteriv(
283027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
283127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
283227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
283327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
283427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
283527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
283627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
283727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
283827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
28392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
28402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
28412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
284227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
284327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
284427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterxv ( GLenum target, GLenum pname, const GLfixed *params ) */
284527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
284627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterxv__II_3II
284727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
28482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
28492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
28502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
285127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
285227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
285327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
285427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
285527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
28562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
28572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
285927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
286027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
286127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
28622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
28632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
286527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
286627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
286727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
286827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
28692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
28702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
287227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
287327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
287427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
287527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
287627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
287727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
287827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameterxv(
287927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
288027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
288127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
288227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
288327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
288427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
288527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
288627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
288727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
288827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
28892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
28902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
28912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
289227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
289327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
289427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterxv ( GLenum target, GLenum pname, const GLfixed *params ) */
289527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
289627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterxv__IILjava_nio_IntBuffer_2
289727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
28982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
28992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
29002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
290127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
290217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
290327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
290427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
290527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
290617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
290727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
29082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
29092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
29102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
291127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
291227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
291317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
291417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
291517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
291617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
291727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameterxv(
291827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
291927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
292027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
292127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
292227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
292327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
292427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
292527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
292627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
29272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
29282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
29292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
293027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
293127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
293227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glVertexPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
293327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
293427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glVertexPointer__IIII
293527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) {
293627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glVertexPointer(
293727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)size,
293827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
293927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
294001c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat        reinterpret_cast<GLvoid *>(offset)
294127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
294227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
294327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
294427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic const char *classPathName = "android/opengl/GLES11";
294527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
294627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic JNINativeMethod methods[] = {
294727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"_nativeClassInit", "()V", (void*)nativeClassInit },
294827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glBindBuffer", "(II)V", (void *) android_glBindBuffer__II },
294927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glBufferData", "(IILjava/nio/Buffer;I)V", (void *) android_glBufferData__IILjava_nio_Buffer_2I },
295027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glBufferSubData", "(IIILjava/nio/Buffer;)V", (void *) android_glBufferSubData__IIILjava_nio_Buffer_2 },
295127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClipPlanef", "(I[FI)V", (void *) android_glClipPlanef__I_3FI },
295227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClipPlanef", "(ILjava/nio/FloatBuffer;)V", (void *) android_glClipPlanef__ILjava_nio_FloatBuffer_2 },
295327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClipPlanex", "(I[II)V", (void *) android_glClipPlanex__I_3II },
295427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClipPlanex", "(ILjava/nio/IntBuffer;)V", (void *) android_glClipPlanex__ILjava_nio_IntBuffer_2 },
295527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColor4ub", "(BBBB)V", (void *) android_glColor4ub__BBBB },
295627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColorPointer", "(IIII)V", (void *) android_glColorPointer__IIII },
295727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDeleteBuffers", "(I[II)V", (void *) android_glDeleteBuffers__I_3II },
295827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDeleteBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteBuffers__ILjava_nio_IntBuffer_2 },
295927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDrawElements", "(IIII)V", (void *) android_glDrawElements__IIII },
296027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGenBuffers", "(I[II)V", (void *) android_glGenBuffers__I_3II },
296127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGenBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenBuffers__ILjava_nio_IntBuffer_2 },
296227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetBooleanv", "(I[ZI)V", (void *) android_glGetBooleanv__I_3ZI },
296327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetBooleanv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetBooleanv__ILjava_nio_IntBuffer_2 },
296427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetBufferParameteriv", "(II[II)V", (void *) android_glGetBufferParameteriv__II_3II },
296527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetBufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 },
296627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetClipPlanef", "(I[FI)V", (void *) android_glGetClipPlanef__I_3FI },
296727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetClipPlanef", "(ILjava/nio/FloatBuffer;)V", (void *) android_glGetClipPlanef__ILjava_nio_FloatBuffer_2 },
296827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetClipPlanex", "(I[II)V", (void *) android_glGetClipPlanex__I_3II },
296927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetClipPlanex", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetClipPlanex__ILjava_nio_IntBuffer_2 },
297027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetFixedv", "(I[II)V", (void *) android_glGetFixedv__I_3II },
297127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetFixedv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetFixedv__ILjava_nio_IntBuffer_2 },
297227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetFloatv", "(I[FI)V", (void *) android_glGetFloatv__I_3FI },
297327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetFloatv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glGetFloatv__ILjava_nio_FloatBuffer_2 },
297427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetLightfv", "(II[FI)V", (void *) android_glGetLightfv__II_3FI },
297527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetLightfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetLightfv__IILjava_nio_FloatBuffer_2 },
297627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetLightxv", "(II[II)V", (void *) android_glGetLightxv__II_3II },
297727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetLightxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetLightxv__IILjava_nio_IntBuffer_2 },
297827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetMaterialfv", "(II[FI)V", (void *) android_glGetMaterialfv__II_3FI },
297927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetMaterialfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetMaterialfv__IILjava_nio_FloatBuffer_2 },
298027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetMaterialxv", "(II[II)V", (void *) android_glGetMaterialxv__II_3II },
298127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetMaterialxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetMaterialxv__IILjava_nio_IntBuffer_2 },
298227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnvfv", "(II[FI)V", (void *) android_glGetTexEnvfv__II_3FI },
298327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnvfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetTexEnvfv__IILjava_nio_FloatBuffer_2 },
298427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnviv", "(II[II)V", (void *) android_glGetTexEnviv__II_3II },
298527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnviv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexEnviv__IILjava_nio_IntBuffer_2 },
298627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnvxv", "(II[II)V", (void *) android_glGetTexEnvxv__II_3II },
298727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnvxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexEnvxv__IILjava_nio_IntBuffer_2 },
298827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameterfv", "(II[FI)V", (void *) android_glGetTexParameterfv__II_3FI },
298927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 },
299027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameteriv", "(II[II)V", (void *) android_glGetTexParameteriv__II_3II },
299127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameteriv__IILjava_nio_IntBuffer_2 },
299227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameterxv", "(II[II)V", (void *) android_glGetTexParameterxv__II_3II },
299327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameterxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameterxv__IILjava_nio_IntBuffer_2 },
299427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glIsBuffer", "(I)Z", (void *) android_glIsBuffer__I },
299527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glIsEnabled", "(I)Z", (void *) android_glIsEnabled__I },
299627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glIsTexture", "(I)Z", (void *) android_glIsTexture__I },
299727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glNormalPointer", "(III)V", (void *) android_glNormalPointer__III },
299827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterf", "(IF)V", (void *) android_glPointParameterf__IF },
299927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterfv", "(I[FI)V", (void *) android_glPointParameterfv__I_3FI },
300027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glPointParameterfv__ILjava_nio_FloatBuffer_2 },
300127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterx", "(II)V", (void *) android_glPointParameterx__II },
300227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterxv", "(I[II)V", (void *) android_glPointParameterxv__I_3II },
300327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glPointParameterxv__ILjava_nio_IntBuffer_2 },
3004be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich{"glPointSizePointerOESBounds", "(IILjava/nio/Buffer;I)V", (void *) android_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I },
300527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexCoordPointer", "(IIII)V", (void *) android_glTexCoordPointer__IIII },
300627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvi", "(III)V", (void *) android_glTexEnvi__III },
300727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnviv", "(II[II)V", (void *) android_glTexEnviv__II_3II },
300827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnviv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexEnviv__IILjava_nio_IntBuffer_2 },
300927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterfv", "(II[FI)V", (void *) android_glTexParameterfv__II_3FI },
301027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexParameterfv__IILjava_nio_FloatBuffer_2 },
301127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameteri", "(III)V", (void *) android_glTexParameteri__III },
301227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameteriv", "(II[II)V", (void *) android_glTexParameteriv__II_3II },
301327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameteriv__IILjava_nio_IntBuffer_2 },
301427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterxv", "(II[II)V", (void *) android_glTexParameterxv__II_3II },
301527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameterxv__IILjava_nio_IntBuffer_2 },
301627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glVertexPointer", "(IIII)V", (void *) android_glVertexPointer__IIII },
301727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich};
301827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
301927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichint register_android_opengl_jni_GLES11(JNIEnv *_env)
302027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{
302127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int err;
302227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
302327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    return err;
302427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
3025