/* * Copyright 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // This source file is automatically generated #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wunused-function" #include #include #include #include #include #include #include /* special calls implemented in Android's GLES wrapper used to more * efficiently bound-check passed arrays */ extern "C" { #ifdef GL_VERSION_ES_CM_1_1 GL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLsizei count); GL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride, const GLvoid *pointer, GLsizei count); GL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer, GLsizei count); GL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer, GLsizei count); GL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, GLsizei stride, const GLvoid *pointer, GLsizei count); GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer, GLsizei count); GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer, GLsizei count); #endif #ifdef GL_ES_VERSION_2_0 static void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) { glVertexAttribPointer(indx, size, type, normalized, stride, pointer); } #endif #ifdef GL_ES_VERSION_3_0 static void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer, GLsizei count) { glVertexAttribIPointer(indx, size, type, stride, pointer); } #endif } static void nativeClassInit(JNIEnv *_env, jclass glImplClass) { } static void * getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) { jint position; jint limit; jint elementSizeShift; jlong pointer; pointer = jniGetNioBufferFields(_env, buffer, &position, &limit, &elementSizeShift); *remaining = (limit - position) << elementSizeShift; if (pointer != 0L) { *array = nullptr; pointer += position << elementSizeShift; return reinterpret_cast(pointer); } *array = jniGetNioBufferBaseArray(_env, buffer); *offset = jniGetNioBufferBaseArrayOffset(_env, buffer); return nullptr; } class ByteArrayGetter { public: static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) { return _env->GetByteArrayElements(array, is_copy); } }; class BooleanArrayGetter { public: static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) { return _env->GetBooleanArrayElements(array, is_copy); } }; class CharArrayGetter { public: static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) { return _env->GetCharArrayElements(array, is_copy); } }; class ShortArrayGetter { public: static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) { return _env->GetShortArrayElements(array, is_copy); } }; class IntArrayGetter { public: static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) { return _env->GetIntArrayElements(array, is_copy); } }; class LongArrayGetter { public: static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) { return _env->GetLongArrayElements(array, is_copy); } }; class FloatArrayGetter { public: static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) { return _env->GetFloatArrayElements(array, is_copy); } }; class DoubleArrayGetter { public: static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) { return _env->GetDoubleArrayElements(array, is_copy); } }; template static void* getArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) { return ARRAYGETTER::Get(_env, array, is_copy); } class ByteArrayReleaser { public: static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) { _env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT); } }; class BooleanArrayReleaser { public: static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) { _env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT); } }; class CharArrayReleaser { public: static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) { _env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT); } }; class ShortArrayReleaser { public: static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) { _env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT); } }; class IntArrayReleaser { public: static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) { _env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT); } }; class LongArrayReleaser { public: static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) { _env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT); } }; class FloatArrayReleaser { public: static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) { _env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT); } }; class DoubleArrayReleaser { public: static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) { _env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT); } }; template static void releaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) { ARRAYRELEASER::Release(_env, array, data, commit); } static void releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) { _env->ReleasePrimitiveArrayCritical(array, data, commit ? 0 : JNI_ABORT); } static void * getDirectBufferPointer(JNIEnv *_env, jobject buffer) { jint position; jint limit; jint elementSizeShift; jlong pointer; pointer = jniGetNioBufferFields(_env, buffer, &position, &limit, &elementSizeShift); if (pointer == 0) { jniThrowException(_env, "java/lang/IllegalArgumentException", "Must use a native order direct Buffer"); return nullptr; } pointer += position << elementSizeShift; return reinterpret_cast(pointer); } // -------------------------------------------------------------------------- /* * returns the number of values glGet returns for a given pname. * * The code below is written such that pnames requiring only one values * are the default (and are not explicitely tested for). This makes the * checking code much shorter/readable/efficient. * * This means that unknown pnames (e.g.: extensions) will default to 1. If * that unknown pname needs more than 1 value, then the validation check * is incomplete and the app may crash if it passed the wrong number params. */ static int getNeededCount(GLint pname) { int needed = 1; #ifdef GL_ES_VERSION_3_0 // GLES 3.x pnames switch (pname) { case GL_MAX_VIEWPORT_DIMS: needed = 2; break; case GL_PROGRAM_BINARY_FORMATS: glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &needed); break; } #endif #ifdef GL_ES_VERSION_2_0 // GLES 2.x pnames switch (pname) { case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: needed = 2; break; case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: needed = 4; break; case GL_COMPRESSED_TEXTURE_FORMATS: glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); break; case GL_SHADER_BINARY_FORMATS: glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed); break; } #endif #ifdef GL_VERSION_ES_CM_1_1 // GLES 1.x pnames switch (pname) { case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: case GL_SMOOTH_LINE_WIDTH_RANGE: case GL_SMOOTH_POINT_SIZE_RANGE: needed = 2; break; case GL_CURRENT_NORMAL: case GL_POINT_DISTANCE_ATTENUATION: needed = 3; break; case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_CURRENT_COLOR: case GL_CURRENT_TEXTURE_COORDS: case GL_FOG_COLOR: case GL_LIGHT_MODEL_AMBIENT: case GL_SCISSOR_BOX: case GL_VIEWPORT: needed = 4; break; case GL_MODELVIEW_MATRIX: case GL_PROJECTION_MATRIX: case GL_TEXTURE_MATRIX: needed = 16; break; case GL_COMPRESSED_TEXTURE_FORMATS: glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); break; } #endif return needed; } template static void get (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) { jint _exception = 0; const char * _exceptionType; const char * _exceptionMessage; CTYPE *params_base = (CTYPE *) 0; jint _remaining; CTYPE *params = (CTYPE *) 0; int _needed = 0; if (!params_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } if (offset < 0) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "offset < 0"; goto exit; } _remaining = _env->GetArrayLength(params_ref) - offset; _needed = getNeededCount(pname); // if we didn't find this pname, we just assume the user passed // an array of the right size -- this might happen with extensions // or if we forget an enum here. if (_remaining < _needed) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "length - offset < needed"; goto exit; } params_base = (CTYPE *) getArrayPointer( _env, params_ref, (jboolean *)0); params = params_base + offset; GET( (GLenum)pname, (CTYPE *)params ); exit: if (params_base) { releaseArrayPointer( _env, params_ref, params_base, !_exception); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } template static void getarray (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { jint _exception = 0; const char * _exceptionType; const char * _exceptionMessage; JTYPEARRAY _array = (JTYPEARRAY) 0; jint _bufferOffset = (jint) 0; jint _remaining; CTYPE *params = (CTYPE *) 0; int _needed = 0; params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); _remaining /= sizeof(CTYPE); // convert from bytes to item count _needed = getNeededCount(pname); // if we didn't find this pname, we just assume the user passed // an array of the right size -- this might happen with extensions // or if we forget an enum here. if (_needed>0 && _remaining < _needed) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < needed"; goto exit; } if (params == NULL) { char * _paramsBase = (char *) getArrayPointer( _env, _array, (jboolean *) 0); params = (CTYPE *) (_paramsBase + _bufferOffset); } GET( (GLenum)pname, (CTYPE *)params ); exit: if (_array) { releaseArrayPointer( _env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } // -------------------------------------------------------------------------- /* void glBlendBarrier ( void ) */ static void android_glBlendBarrier__ (JNIEnv *_env, jobject _this) { glBlendBarrier(); } /* void glCopyImageSubData ( GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth ) */ static void android_glCopyImageSubData__IIIIIIIIIIIIIII (JNIEnv *_env, jobject _this, jint srcName, jint srcTarget, jint srcLevel, jint srcX, jint srcY, jint srcZ, jint dstName, jint dstTarget, jint dstLevel, jint dstX, jint dstY, jint dstZ, jint srcWidth, jint srcHeight, jint srcDepth) { glCopyImageSubData( (GLuint)srcName, (GLenum)srcTarget, (GLint)srcLevel, (GLint)srcX, (GLint)srcY, (GLint)srcZ, (GLuint)dstName, (GLenum)dstTarget, (GLint)dstLevel, (GLint)dstX, (GLint)dstY, (GLint)dstZ, (GLsizei)srcWidth, (GLsizei)srcHeight, (GLsizei)srcDepth ); } /* void glDebugMessageControl ( GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled ) */ static void android_glDebugMessageControl__IIII_3IIZ (JNIEnv *_env, jobject _this, jint source, jint type, jint severity, jint count, jintArray ids_ref, jint offset, jboolean enabled) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; GLuint *ids_base = (GLuint *) 0; jint _remaining; GLuint *ids = (GLuint *) 0; if (!ids_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "ids == null"; goto exit; } if (offset < 0) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "offset < 0"; goto exit; } _remaining = _env->GetArrayLength(ids_ref) - offset; if (_remaining < count) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "length - offset < count < needed"; goto exit; } ids_base = (GLuint *) _env->GetIntArrayElements(ids_ref, (jboolean *)0); ids = ids_base + offset; glDebugMessageControl( (GLenum)source, (GLenum)type, (GLenum)severity, (GLsizei)count, (GLuint *)ids, (GLboolean)enabled ); exit: if (ids_base) { _env->ReleaseIntArrayElements(ids_ref, (jint*)ids_base, JNI_ABORT); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glDebugMessageControl ( GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled ) */ static void android_glDebugMessageControl__IIIILjava_nio_IntBuffer_2Z (JNIEnv *_env, jobject _this, jint source, jint type, jint severity, jint count, jobject ids_buf, jboolean enabled) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jintArray _array = (jintArray) 0; jint _bufferOffset = (jint) 0; jint _remaining; GLuint *ids = (GLuint *) 0; if (!ids_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "ids == null"; goto exit; } ids = (GLuint *)getPointer(_env, ids_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (_remaining < count) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < count < needed"; goto exit; } if (ids == NULL) { char * _idsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); ids = (GLuint *) (_idsBase + _bufferOffset); } glDebugMessageControl( (GLenum)source, (GLenum)type, (GLenum)severity, (GLsizei)count, (GLuint *)ids, (GLboolean)enabled ); exit: if (_array) { _env->ReleaseIntArrayElements(_array, (jint*)ids, JNI_ABORT); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glDebugMessageInsert ( GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf ) */ static void android_glDebugMessageInsert__IIIIILjava_lang_String_2 (JNIEnv *_env, jobject _this, jint source, jint type, jint id, jint severity, jint length, jstring buf) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; const char* _nativebuf = 0; if (!buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "buf == null"; goto exit; } _nativebuf = _env->GetStringUTFChars(buf, 0); glDebugMessageInsert( (GLenum)source, (GLenum)type, (GLuint)id, (GLenum)severity, (GLsizei)length, (GLchar *)_nativebuf ); exit: if (_nativebuf) { _env->ReleaseStringUTFChars(buf, _nativebuf); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glDebugMessageCallback ( GLDEBUGPROC callback, const void *userParam ) */ static void android_glDebugMessageCallback(JNIEnv *_env, jobject _this, jobject callback) { jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); } /* GLuint glGetDebugMessageLog ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */ static jint android_glGetDebugMessageLog__II_3II_3II_3II_3II_3II_3BI (JNIEnv *_env, jobject _this, jint count, jint bufSize, jintArray sources_ref, jint sourcesOffset, jintArray types_ref, jint typesOffset, jintArray ids_ref, jint idsOffset, jintArray severities_ref, jint severitiesOffset, jintArray lengths_ref, jint lengthsOffset, jbyteArray messageLog_ref, jint messageLogOffset) { jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); return 0; } /* GLuint glGetDebugMessageLog ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */ static uint android_glGetDebugMessageLog__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2 (JNIEnv *_env, jobject _this, jint count, jobject sources_ref, jobject types_ref, jobject ids_ref, jobject severities_ref, jobject lengths_ref, jobject messageLog_ref) { jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); return 0; } /* GLuint glGetDebugMessageLog ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */ static jobjectArray android_glGetDebugMessageLog__I_3II_3II_3II_3II (JNIEnv *_env, jobject _this, jint count, jintArray sources_ref, jint sourcesOffset, jintArray types_ref, jint typesOffset, jintArray ids_ref, jint idsOffset, jintArray severities_ref, jint severitiesOffset) { jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); return 0; } /* GLuint glGetDebugMessageLog ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */ static jobjectArray android_glGetDebugMessageLog__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint count, jobject sources_ref, jobject types_ref, jobject ids_ref, jobject severities_ref) { jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); return 0; } /* void glPushDebugGroup ( GLenum source, GLuint id, GLsizei length, const GLchar *message ) */ static void android_glPushDebugGroup__IIILjava_lang_String_2 (JNIEnv *_env, jobject _this, jint source, jint id, jint length, jstring message) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; const char* _nativemessage = 0; jsize _stringlen = 0; if (!message) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "message == null"; goto exit; } _nativemessage = _env->GetStringUTFChars(message, 0); _stringlen = _env->GetStringUTFLength(message); if (length > _stringlen) { _exception = 1; _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; _exceptionMessage = "length of message is shorter than length argument"; goto exit; } glPushDebugGroup( (GLenum)source, (GLuint)id, (GLsizei)length, (GLchar *)_nativemessage ); exit: if (_nativemessage) { _env->ReleaseStringUTFChars(message, _nativemessage); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glPopDebugGroup ( void ) */ static void android_glPopDebugGroup__ (JNIEnv *_env, jobject _this) { glPopDebugGroup(); } /* void glObjectLabel ( GLenum identifier, GLuint name, GLsizei length, const GLchar *label ) */ static void android_glObjectLabel__IIILjava_lang_String_2 (JNIEnv *_env, jobject _this, jint identifier, jint name, jint length, jstring label) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; const char* _nativelabel = 0; jsize _stringlen = 0; if (label) { _nativelabel = _env->GetStringUTFChars(label, 0); _stringlen = _env->GetStringUTFLength(label); if (length > _stringlen) { _exception = 1; _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; _exceptionMessage = "length of label is shorter than length argument"; goto exit; } } glObjectLabel( (GLenum)identifier, (GLuint)name, (GLsizei)length, (GLchar *)_nativelabel ); exit: if (_nativelabel) { _env->ReleaseStringUTFChars(label, _nativelabel); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetObjectLabel ( GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label ) */ static jstring android_glGetObjectLabel(JNIEnv *_env, jobject _this, jint identifier, jint name) { jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); return NULL; } /* void glObjectPtrLabel ( const void *ptr, GLsizei length, const GLchar *label ) */ static void android_glObjectPtrLabel(JNIEnv *_env, jobject _this, jlong ptr, jstring label) { jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); } /* void glGetObjectPtrLabel ( const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label ) */ static jstring android_glGetObjectPtrLabel(JNIEnv *_env, jobject _this, jlong ptr) { jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); return NULL; } /* void glGetPointerv ( GLenum pname, void **params ) */ static jlong android_glGetPointerv(JNIEnv *_env, jobject _this, jint pname) { jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); return NULL; } /* void glEnablei ( GLenum target, GLuint index ) */ static void android_glEnablei__II (JNIEnv *_env, jobject _this, jint target, jint index) { glEnablei( (GLenum)target, (GLuint)index ); } /* void glDisablei ( GLenum target, GLuint index ) */ static void android_glDisablei__II (JNIEnv *_env, jobject _this, jint target, jint index) { glDisablei( (GLenum)target, (GLuint)index ); } /* void glBlendEquationi ( GLuint buf, GLenum mode ) */ static void android_glBlendEquationi__II (JNIEnv *_env, jobject _this, jint buf, jint mode) { glBlendEquationi( (GLuint)buf, (GLenum)mode ); } /* void glBlendEquationSeparatei ( GLuint buf, GLenum modeRGB, GLenum modeAlpha ) */ static void android_glBlendEquationSeparatei__III (JNIEnv *_env, jobject _this, jint buf, jint modeRGB, jint modeAlpha) { glBlendEquationSeparatei( (GLuint)buf, (GLenum)modeRGB, (GLenum)modeAlpha ); } /* void glBlendFunci ( GLuint buf, GLenum src, GLenum dst ) */ static void android_glBlendFunci__III (JNIEnv *_env, jobject _this, jint buf, jint src, jint dst) { glBlendFunci( (GLuint)buf, (GLenum)src, (GLenum)dst ); } /* void glBlendFuncSeparatei ( GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha ) */ static void android_glBlendFuncSeparatei__IIIII (JNIEnv *_env, jobject _this, jint buf, jint srcRGB, jint dstRGB, jint srcAlpha, jint dstAlpha) { glBlendFuncSeparatei( (GLuint)buf, (GLenum)srcRGB, (GLenum)dstRGB, (GLenum)srcAlpha, (GLenum)dstAlpha ); } /* void glColorMaski ( GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) */ static void android_glColorMaski__IZZZZ (JNIEnv *_env, jobject _this, jint index, jboolean r, jboolean g, jboolean b, jboolean a) { glColorMaski( (GLuint)index, (GLboolean)r, (GLboolean)g, (GLboolean)b, (GLboolean)a ); } /* GLboolean glIsEnabledi ( GLenum target, GLuint index ) */ static jboolean android_glIsEnabledi__II (JNIEnv *_env, jobject _this, jint target, jint index) { GLboolean _returnValue; _returnValue = glIsEnabledi( (GLenum)target, (GLuint)index ); return (jboolean)_returnValue; } /* void glDrawElementsBaseVertex ( GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex ) */ static void android_glDrawElementsBaseVertex__IIILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf, jint basevertex) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jarray _array = (jarray) 0; jint _bufferOffset = (jint) 0; jint _remaining; void *indices = (void *) 0; if (!indices_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "indices == null"; goto exit; } indices = (void *)getPointer(_env, indices_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (_remaining < count-basevertex) { _exception = 1; _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; _exceptionMessage = "remaining() < count-basevertex < needed"; goto exit; } if (indices == NULL) { char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); indices = (void *) (_indicesBase + _bufferOffset); } glDrawElementsBaseVertex( (GLenum)mode, (GLsizei)count, (GLenum)type, (void *)indices, (GLint)basevertex ); exit: if (_array) { releasePointer(_env, _array, indices, JNI_FALSE); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glDrawRangeElementsBaseVertex ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex ) */ static void android_glDrawRangeElementsBaseVertex__IIIIILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint mode, jint start, jint end, jint count, jint type, jobject indices_buf, jint basevertex) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jarray _array = (jarray) 0; jint _bufferOffset = (jint) 0; jint _remaining; void *indices = (void *) 0; if (!indices_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "indices == null"; goto exit; } indices = (void *)getPointer(_env, indices_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (_remaining < count-basevertex) { _exception = 1; _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; _exceptionMessage = "remaining() < count-basevertex < needed"; goto exit; } if (indices == NULL) { char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); indices = (void *) (_indicesBase + _bufferOffset); } glDrawRangeElementsBaseVertex( (GLenum)mode, (GLuint)start, (GLuint)end, (GLsizei)count, (GLenum)type, (void *)indices, (GLint)basevertex ); exit: if (_array) { releasePointer(_env, _array, indices, JNI_FALSE); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glDrawElementsInstancedBaseVertex ( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount, GLint basevertex ) */ static void android_glDrawElementsInstancedBaseVertex__IIILjava_nio_Buffer_2II (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf, jint instanceCount, jint basevertex) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jarray _array = (jarray) 0; jint _bufferOffset = (jint) 0; jint _remaining; void *indices = (void *) 0; indices = (void *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < count-basevertex) { _exception = 1; _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; _exceptionMessage = "remaining() < count-basevertex < needed"; goto exit; } if (indices == NULL) { char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); indices = (void *) (_indicesBase + _bufferOffset); } glDrawElementsInstancedBaseVertex( (GLenum)mode, (GLsizei)count, (GLenum)type, (void *)indices, (GLsizei)instanceCount, (GLint) basevertex ); exit: if (_array) { releasePointer(_env, _array, indices, JNI_FALSE); } } /* void glDrawElementsInstancedBaseVertex ( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount, GLint basevertex ) */ static void android_glDrawElementsInstancedBaseVertex__IIIIII (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint indicesOffset, jint instanceCount, jint basevertex) { glDrawElementsInstancedBaseVertex( (GLenum)mode, (GLsizei)count, (GLenum)type, (void *)static_cast(indicesOffset), (GLsizei)instanceCount, (GLint)basevertex ); } /* void glFramebufferTexture ( GLenum target, GLenum attachment, GLuint texture, GLint level ) */ static void android_glFramebufferTexture__IIII (JNIEnv *_env, jobject _this, jint target, jint attachment, jint texture, jint level) { glFramebufferTexture( (GLenum)target, (GLenum)attachment, (GLuint)texture, (GLint)level ); } /* void glPrimitiveBoundingBox ( GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW ) */ static void android_glPrimitiveBoundingBox__FFFFFFFF (JNIEnv *_env, jobject _this, jfloat minX, jfloat minY, jfloat minZ, jfloat minW, jfloat maxX, jfloat maxY, jfloat maxZ, jfloat maxW) { glPrimitiveBoundingBox( (GLfloat)minX, (GLfloat)minY, (GLfloat)minZ, (GLfloat)minW, (GLfloat)maxX, (GLfloat)maxY, (GLfloat)maxZ, (GLfloat)maxW ); } /* GLenum glGetGraphicsResetStatus ( void ) */ static jint android_glGetGraphicsResetStatus__ (JNIEnv *_env, jobject _this) { GLenum _returnValue; _returnValue = glGetGraphicsResetStatus(); return (jint)_returnValue; } /* void glReadnPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data ) */ static void android_glReadnPixels__IIIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jint bufSize, jobject data_buf) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jarray _array = (jarray) 0; jint _bufferOffset = (jint) 0; jint _remaining; void *data = (void *) 0; if (!data_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "data == null"; goto exit; } data = (void *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (_remaining < bufSize) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < bufSize < needed"; goto exit; } if (data == NULL) { char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); data = (void *) (_dataBase + _bufferOffset); } glReadnPixels( (GLint)x, (GLint)y, (GLsizei)width, (GLsizei)height, (GLenum)format, (GLenum)type, (GLsizei)bufSize, (void *)data ); exit: if (_array) { releasePointer(_env, _array, data, _exception ? JNI_FALSE : JNI_TRUE); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetnUniformfv ( GLuint program, GLint location, GLsizei bufSize, GLfloat *params ) */ static void android_glGetnUniformfv__III_3FI (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jfloatArray params_ref, jint offset) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; GLfloat *params_base = (GLfloat *) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; if (!params_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } if (offset < 0) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "offset < 0"; goto exit; } _remaining = _env->GetArrayLength(params_ref) - offset; if (_remaining < bufSize) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "length - offset < bufSize < needed"; goto exit; } params_base = (GLfloat *) _env->GetFloatArrayElements(params_ref, (jboolean *)0); params = params_base + offset; glGetnUniformfv( (GLuint)program, (GLint)location, (GLsizei)bufSize, (GLfloat *)params ); exit: if (params_base) { _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base, _exception ? JNI_ABORT: 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetnUniformfv ( GLuint program, GLint location, GLsizei bufSize, GLfloat *params ) */ static void android_glGetnUniformfv__IIILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jobject params_buf) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jfloatArray _array = (jfloatArray) 0; jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; if (!params_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (_remaining < bufSize) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < bufSize < needed"; goto exit; } if (params == NULL) { char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); params = (GLfloat *) (_paramsBase + _bufferOffset); } glGetnUniformfv( (GLuint)program, (GLint)location, (GLsizei)bufSize, (GLfloat *)params ); exit: if (_array) { _env->ReleaseFloatArrayElements(_array, (jfloat*)params, _exception ? JNI_ABORT : 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetnUniformiv ( GLuint program, GLint location, GLsizei bufSize, GLint *params ) */ static void android_glGetnUniformiv__III_3II (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jintArray params_ref, jint offset) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; GLint *params_base = (GLint *) 0; jint _remaining; GLint *params = (GLint *) 0; if (!params_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } if (offset < 0) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "offset < 0"; goto exit; } _remaining = _env->GetArrayLength(params_ref) - offset; if (_remaining < bufSize) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "length - offset < bufSize < needed"; goto exit; } params_base = (GLint *) _env->GetIntArrayElements(params_ref, (jboolean *)0); params = params_base + offset; glGetnUniformiv( (GLuint)program, (GLint)location, (GLsizei)bufSize, (GLint *)params ); exit: if (params_base) { _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, _exception ? JNI_ABORT: 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetnUniformiv ( GLuint program, GLint location, GLsizei bufSize, GLint *params ) */ static void android_glGetnUniformiv__IIILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jobject params_buf) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jintArray _array = (jintArray) 0; jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; if (!params_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (_remaining < bufSize) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < bufSize < needed"; goto exit; } if (params == NULL) { char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); params = (GLint *) (_paramsBase + _bufferOffset); } glGetnUniformiv( (GLuint)program, (GLint)location, (GLsizei)bufSize, (GLint *)params ); exit: if (_array) { _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetnUniformuiv ( GLuint program, GLint location, GLsizei bufSize, GLuint *params ) */ static void android_glGetnUniformuiv__III_3II (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jintArray params_ref, jint offset) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; GLuint *params_base = (GLuint *) 0; jint _remaining; GLuint *params = (GLuint *) 0; if (!params_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } if (offset < 0) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "offset < 0"; goto exit; } _remaining = _env->GetArrayLength(params_ref) - offset; if (_remaining < bufSize) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "length - offset < bufSize < needed"; goto exit; } params_base = (GLuint *) _env->GetIntArrayElements(params_ref, (jboolean *)0); params = params_base + offset; glGetnUniformuiv( (GLuint)program, (GLint)location, (GLsizei)bufSize, (GLuint *)params ); exit: if (params_base) { _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, _exception ? JNI_ABORT: 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetnUniformuiv ( GLuint program, GLint location, GLsizei bufSize, GLuint *params ) */ static void android_glGetnUniformuiv__IIILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jobject params_buf) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jintArray _array = (jintArray) 0; jint _bufferOffset = (jint) 0; jint _remaining; GLuint *params = (GLuint *) 0; if (!params_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (_remaining < bufSize) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < bufSize < needed"; goto exit; } if (params == NULL) { char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); params = (GLuint *) (_paramsBase + _bufferOffset); } glGetnUniformuiv( (GLuint)program, (GLint)location, (GLsizei)bufSize, (GLuint *)params ); exit: if (_array) { _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glMinSampleShading ( GLfloat value ) */ static void android_glMinSampleShading__F (JNIEnv *_env, jobject _this, jfloat value) { glMinSampleShading( (GLfloat)value ); } /* void glPatchParameteri ( GLenum pname, GLint value ) */ static void android_glPatchParameteri__II (JNIEnv *_env, jobject _this, jint pname, jint value) { glPatchParameteri( (GLenum)pname, (GLint)value ); } /* void glTexParameterIiv ( GLenum target, GLenum pname, const GLint *params ) */ static void android_glTexParameterIiv__II_3II (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; GLint *params_base = (GLint *) 0; jint _remaining; GLint *params = (GLint *) 0; if (!params_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } if (offset < 0) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "offset < 0"; goto exit; } _remaining = _env->GetArrayLength(params_ref) - offset; params_base = (GLint *) _env->GetIntArrayElements(params_ref, (jboolean *)0); params = params_base + offset; glTexParameterIiv( (GLenum)target, (GLenum)pname, (GLint *)params ); exit: if (params_base) { _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, JNI_ABORT); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glTexParameterIiv ( GLenum target, GLenum pname, const GLint *params ) */ static void android_glTexParameterIiv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jintArray _array = (jintArray) 0; jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; if (!params_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (params == NULL) { char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); params = (GLint *) (_paramsBase + _bufferOffset); } glTexParameterIiv( (GLenum)target, (GLenum)pname, (GLint *)params ); exit: if (_array) { _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glTexParameterIuiv ( GLenum target, GLenum pname, const GLuint *params ) */ static void android_glTexParameterIuiv__II_3II (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; GLuint *params_base = (GLuint *) 0; jint _remaining; GLuint *params = (GLuint *) 0; if (!params_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } if (offset < 0) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "offset < 0"; goto exit; } _remaining = _env->GetArrayLength(params_ref) - offset; params_base = (GLuint *) _env->GetIntArrayElements(params_ref, (jboolean *)0); params = params_base + offset; glTexParameterIuiv( (GLenum)target, (GLenum)pname, (GLuint *)params ); exit: if (params_base) { _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, JNI_ABORT); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glTexParameterIuiv ( GLenum target, GLenum pname, const GLuint *params ) */ static void android_glTexParameterIuiv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jintArray _array = (jintArray) 0; jint _bufferOffset = (jint) 0; jint _remaining; GLuint *params = (GLuint *) 0; if (!params_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (params == NULL) { char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); params = (GLuint *) (_paramsBase + _bufferOffset); } glTexParameterIuiv( (GLenum)target, (GLenum)pname, (GLuint *)params ); exit: if (_array) { _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetTexParameterIiv ( GLenum target, GLenum pname, GLint *params ) */ static void android_glGetTexParameterIiv__II_3II (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; GLint *params_base = (GLint *) 0; jint _remaining; GLint *params = (GLint *) 0; if (!params_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } if (offset < 0) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "offset < 0"; goto exit; } _remaining = _env->GetArrayLength(params_ref) - offset; params_base = (GLint *) _env->GetIntArrayElements(params_ref, (jboolean *)0); params = params_base + offset; glGetTexParameterIiv( (GLenum)target, (GLenum)pname, (GLint *)params ); exit: if (params_base) { _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, _exception ? JNI_ABORT: 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetTexParameterIiv ( GLenum target, GLenum pname, GLint *params ) */ static void android_glGetTexParameterIiv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jintArray _array = (jintArray) 0; jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; if (!params_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (params == NULL) { char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); params = (GLint *) (_paramsBase + _bufferOffset); } glGetTexParameterIiv( (GLenum)target, (GLenum)pname, (GLint *)params ); exit: if (_array) { _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetTexParameterIuiv ( GLenum target, GLenum pname, GLuint *params ) */ static void android_glGetTexParameterIuiv__II_3II (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; GLuint *params_base = (GLuint *) 0; jint _remaining; GLuint *params = (GLuint *) 0; if (!params_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } if (offset < 0) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "offset < 0"; goto exit; } _remaining = _env->GetArrayLength(params_ref) - offset; params_base = (GLuint *) _env->GetIntArrayElements(params_ref, (jboolean *)0); params = params_base + offset; glGetTexParameterIuiv( (GLenum)target, (GLenum)pname, (GLuint *)params ); exit: if (params_base) { _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, _exception ? JNI_ABORT: 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetTexParameterIuiv ( GLenum target, GLenum pname, GLuint *params ) */ static void android_glGetTexParameterIuiv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jintArray _array = (jintArray) 0; jint _bufferOffset = (jint) 0; jint _remaining; GLuint *params = (GLuint *) 0; if (!params_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (params == NULL) { char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); params = (GLuint *) (_paramsBase + _bufferOffset); } glGetTexParameterIuiv( (GLenum)target, (GLenum)pname, (GLuint *)params ); exit: if (_array) { _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glSamplerParameterIiv ( GLuint sampler, GLenum pname, const GLint *param ) */ static void android_glSamplerParameterIiv__II_3II (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray param_ref, jint offset) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; GLint *param_base = (GLint *) 0; jint _remaining; GLint *param = (GLint *) 0; if (!param_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "param == null"; goto exit; } if (offset < 0) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "offset < 0"; goto exit; } _remaining = _env->GetArrayLength(param_ref) - offset; param_base = (GLint *) _env->GetIntArrayElements(param_ref, (jboolean *)0); param = param_base + offset; glSamplerParameterIiv( (GLuint)sampler, (GLenum)pname, (GLint *)param ); exit: if (param_base) { _env->ReleaseIntArrayElements(param_ref, (jint*)param_base, JNI_ABORT); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glSamplerParameterIiv ( GLuint sampler, GLenum pname, const GLint *param ) */ static void android_glSamplerParameterIiv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jintArray _array = (jintArray) 0; jint _bufferOffset = (jint) 0; jint _remaining; GLint *param = (GLint *) 0; if (!param_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "param == null"; goto exit; } param = (GLint *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (param == NULL) { char * _paramBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); param = (GLint *) (_paramBase + _bufferOffset); } glSamplerParameterIiv( (GLuint)sampler, (GLenum)pname, (GLint *)param ); exit: if (_array) { _env->ReleaseIntArrayElements(_array, (jint*)param, JNI_ABORT); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glSamplerParameterIuiv ( GLuint sampler, GLenum pname, const GLuint *param ) */ static void android_glSamplerParameterIuiv__II_3II (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray param_ref, jint offset) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; GLuint *param_base = (GLuint *) 0; jint _remaining; GLuint *param = (GLuint *) 0; if (!param_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "param == null"; goto exit; } if (offset < 0) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "offset < 0"; goto exit; } _remaining = _env->GetArrayLength(param_ref) - offset; param_base = (GLuint *) _env->GetIntArrayElements(param_ref, (jboolean *)0); param = param_base + offset; glSamplerParameterIuiv( (GLuint)sampler, (GLenum)pname, (GLuint *)param ); exit: if (param_base) { _env->ReleaseIntArrayElements(param_ref, (jint*)param_base, JNI_ABORT); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glSamplerParameterIuiv ( GLuint sampler, GLenum pname, const GLuint *param ) */ static void android_glSamplerParameterIuiv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jintArray _array = (jintArray) 0; jint _bufferOffset = (jint) 0; jint _remaining; GLuint *param = (GLuint *) 0; if (!param_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "param == null"; goto exit; } param = (GLuint *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (param == NULL) { char * _paramBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); param = (GLuint *) (_paramBase + _bufferOffset); } glSamplerParameterIuiv( (GLuint)sampler, (GLenum)pname, (GLuint *)param ); exit: if (_array) { _env->ReleaseIntArrayElements(_array, (jint*)param, JNI_ABORT); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetSamplerParameterIiv ( GLuint sampler, GLenum pname, GLint *params ) */ static void android_glGetSamplerParameterIiv__II_3II (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray params_ref, jint offset) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; GLint *params_base = (GLint *) 0; jint _remaining; GLint *params = (GLint *) 0; if (!params_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } if (offset < 0) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "offset < 0"; goto exit; } _remaining = _env->GetArrayLength(params_ref) - offset; params_base = (GLint *) _env->GetIntArrayElements(params_ref, (jboolean *)0); params = params_base + offset; glGetSamplerParameterIiv( (GLuint)sampler, (GLenum)pname, (GLint *)params ); exit: if (params_base) { _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, _exception ? JNI_ABORT: 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetSamplerParameterIiv ( GLuint sampler, GLenum pname, GLint *params ) */ static void android_glGetSamplerParameterIiv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jintArray _array = (jintArray) 0; jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; if (!params_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (params == NULL) { char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); params = (GLint *) (_paramsBase + _bufferOffset); } glGetSamplerParameterIiv( (GLuint)sampler, (GLenum)pname, (GLint *)params ); exit: if (_array) { _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetSamplerParameterIuiv ( GLuint sampler, GLenum pname, GLuint *params ) */ static void android_glGetSamplerParameterIuiv__II_3II (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray params_ref, jint offset) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; GLuint *params_base = (GLuint *) 0; jint _remaining; GLuint *params = (GLuint *) 0; if (!params_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } if (offset < 0) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "offset < 0"; goto exit; } _remaining = _env->GetArrayLength(params_ref) - offset; params_base = (GLuint *) _env->GetIntArrayElements(params_ref, (jboolean *)0); params = params_base + offset; glGetSamplerParameterIuiv( (GLuint)sampler, (GLenum)pname, (GLuint *)params ); exit: if (params_base) { _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, _exception ? JNI_ABORT: 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glGetSamplerParameterIuiv ( GLuint sampler, GLenum pname, GLuint *params ) */ static void android_glGetSamplerParameterIuiv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) { jint _exception = 0; const char * _exceptionType = NULL; const char * _exceptionMessage = NULL; jintArray _array = (jintArray) 0; jint _bufferOffset = (jint) 0; jint _remaining; GLuint *params = (GLuint *) 0; if (!params_buf) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "params == null"; goto exit; } params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); if (params == NULL) { char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); params = (GLuint *) (_paramsBase + _bufferOffset); } glGetSamplerParameterIuiv( (GLuint)sampler, (GLenum)pname, (GLuint *)params ); exit: if (_array) { _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } } /* void glTexBuffer ( GLenum target, GLenum internalformat, GLuint buffer ) */ static void android_glTexBuffer__III (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint buffer) { glTexBuffer( (GLenum)target, (GLenum)internalformat, (GLuint)buffer ); } /* void glTexBufferRange ( GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size ) */ static void android_glTexBufferRange__IIIII (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint buffer, jint offset, jint size) { glTexBufferRange( (GLenum)target, (GLenum)internalformat, (GLuint)buffer, (GLintptr)offset, (GLsizeiptr)size ); } /* void glTexStorage3DMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations ) */ static void android_glTexStorage3DMultisample__IIIIIIZ (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height, jint depth, jboolean fixedsamplelocations) { glTexStorage3DMultisample( (GLenum)target, (GLsizei)samples, (GLenum)internalformat, (GLsizei)width, (GLsizei)height, (GLsizei)depth, (GLboolean)fixedsamplelocations ); } static const char *classPathName = "android/opengl/GLES32"; static const JNINativeMethod methods[] = { {"_nativeClassInit", "()V", (void*)nativeClassInit }, {"glBlendBarrier", "()V", (void *) android_glBlendBarrier__ }, {"glCopyImageSubData", "(IIIIIIIIIIIIIII)V", (void *) android_glCopyImageSubData__IIIIIIIIIIIIIII }, {"glDebugMessageControl", "(IIII[IIZ)V", (void *) android_glDebugMessageControl__IIII_3IIZ }, {"glDebugMessageControl", "(IIIILjava/nio/IntBuffer;Z)V", (void *) android_glDebugMessageControl__IIIILjava_nio_IntBuffer_2Z }, {"glDebugMessageInsert", "(IIIIILjava/lang/String;)V", (void *) android_glDebugMessageInsert__IIIIILjava_lang_String_2 }, {"glDebugMessageCallback", "(Landroid/opengl/GLES32$DebugProc;)V", (void *) android_glDebugMessageCallback }, {"glGetDebugMessageLog", "(II[II[II[II[II[II[BI)I", (void *) android_glGetDebugMessageLog__II_3II_3II_3II_3II_3II_3BI }, {"glGetDebugMessageLog", "(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/ByteBuffer;)I", (void *) android_glGetDebugMessageLog__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2 }, {"glGetDebugMessageLog", "(I[II[II[II[II)[Ljava/lang/String;", (void *) android_glGetDebugMessageLog__I_3II_3II_3II_3II }, {"glGetDebugMessageLog", "(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)[Ljava/lang/String;", (void *) android_glGetDebugMessageLog__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 }, {"glPushDebugGroup", "(IIILjava/lang/String;)V", (void *) android_glPushDebugGroup__IIILjava_lang_String_2 }, {"glPopDebugGroup", "()V", (void *) android_glPopDebugGroup__ }, {"glObjectLabel", "(IIILjava/lang/String;)V", (void *) android_glObjectLabel__IIILjava_lang_String_2 }, {"glGetObjectLabel", "(II)Ljava/lang/String;", (void *) android_glGetObjectLabel }, {"glObjectPtrLabel", "(JLjava/lang/String;)V", (void *) android_glObjectPtrLabel }, {"glGetObjectPtrLabel", "(J)Ljava/lang/String;", (void *) android_glGetObjectPtrLabel }, {"glGetPointerv", "(I)J", (void *) android_glGetPointerv }, {"glEnablei", "(II)V", (void *) android_glEnablei__II }, {"glDisablei", "(II)V", (void *) android_glDisablei__II }, {"glBlendEquationi", "(II)V", (void *) android_glBlendEquationi__II }, {"glBlendEquationSeparatei", "(III)V", (void *) android_glBlendEquationSeparatei__III }, {"glBlendFunci", "(III)V", (void *) android_glBlendFunci__III }, {"glBlendFuncSeparatei", "(IIIII)V", (void *) android_glBlendFuncSeparatei__IIIII }, {"glColorMaski", "(IZZZZ)V", (void *) android_glColorMaski__IZZZZ }, {"glIsEnabledi", "(II)Z", (void *) android_glIsEnabledi__II }, {"glDrawElementsBaseVertex", "(IIILjava/nio/Buffer;I)V", (void *) android_glDrawElementsBaseVertex__IIILjava_nio_Buffer_2I }, {"glDrawRangeElementsBaseVertex", "(IIIIILjava/nio/Buffer;I)V", (void *) android_glDrawRangeElementsBaseVertex__IIIIILjava_nio_Buffer_2I }, {"glDrawElementsInstancedBaseVertex", "(IIILjava/nio/Buffer;II)V", (void *) android_glDrawElementsInstancedBaseVertex__IIILjava_nio_Buffer_2II }, {"glDrawElementsInstancedBaseVertex", "(IIIIII)V", (void *) android_glDrawElementsInstancedBaseVertex__IIIIII }, {"glFramebufferTexture", "(IIII)V", (void *) android_glFramebufferTexture__IIII }, {"glPrimitiveBoundingBox", "(FFFFFFFF)V", (void *) android_glPrimitiveBoundingBox__FFFFFFFF }, {"glGetGraphicsResetStatus", "()I", (void *) android_glGetGraphicsResetStatus__ }, {"glReadnPixels", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glReadnPixels__IIIIIIILjava_nio_Buffer_2 }, {"glGetnUniformfv", "(III[FI)V", (void *) android_glGetnUniformfv__III_3FI }, {"glGetnUniformfv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glGetnUniformfv__IIILjava_nio_FloatBuffer_2 }, {"glGetnUniformiv", "(III[II)V", (void *) android_glGetnUniformiv__III_3II }, {"glGetnUniformiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetnUniformiv__IIILjava_nio_IntBuffer_2 }, {"glGetnUniformuiv", "(III[II)V", (void *) android_glGetnUniformuiv__III_3II }, {"glGetnUniformuiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetnUniformuiv__IIILjava_nio_IntBuffer_2 }, {"glMinSampleShading", "(F)V", (void *) android_glMinSampleShading__F }, {"glPatchParameteri", "(II)V", (void *) android_glPatchParameteri__II }, {"glTexParameterIiv", "(II[II)V", (void *) android_glTexParameterIiv__II_3II }, {"glTexParameterIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameterIiv__IILjava_nio_IntBuffer_2 }, {"glTexParameterIuiv", "(II[II)V", (void *) android_glTexParameterIuiv__II_3II }, {"glTexParameterIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameterIuiv__IILjava_nio_IntBuffer_2 }, {"glGetTexParameterIiv", "(II[II)V", (void *) android_glGetTexParameterIiv__II_3II }, {"glGetTexParameterIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameterIiv__IILjava_nio_IntBuffer_2 }, {"glGetTexParameterIuiv", "(II[II)V", (void *) android_glGetTexParameterIuiv__II_3II }, {"glGetTexParameterIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameterIuiv__IILjava_nio_IntBuffer_2 }, {"glSamplerParameterIiv", "(II[II)V", (void *) android_glSamplerParameterIiv__II_3II }, {"glSamplerParameterIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glSamplerParameterIiv__IILjava_nio_IntBuffer_2 }, {"glSamplerParameterIuiv", "(II[II)V", (void *) android_glSamplerParameterIuiv__II_3II }, {"glSamplerParameterIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glSamplerParameterIuiv__IILjava_nio_IntBuffer_2 }, {"glGetSamplerParameterIiv", "(II[II)V", (void *) android_glGetSamplerParameterIiv__II_3II }, {"glGetSamplerParameterIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetSamplerParameterIiv__IILjava_nio_IntBuffer_2 }, {"glGetSamplerParameterIuiv", "(II[II)V", (void *) android_glGetSamplerParameterIuiv__II_3II }, {"glGetSamplerParameterIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetSamplerParameterIuiv__IILjava_nio_IntBuffer_2 }, {"glTexBuffer", "(III)V", (void *) android_glTexBuffer__III }, {"glTexBufferRange", "(IIIII)V", (void *) android_glTexBufferRange__IIIII }, {"glTexStorage3DMultisample", "(IIIIIIZ)V", (void *) android_glTexStorage3DMultisample__IIIIIIZ }, }; int register_android_opengl_jni_GLES32(JNIEnv *_env) { int err; err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods)); return err; }