1 /* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */
2 static void
android_glGetActiveUniformBlockName_III_3II_3BI(JNIEnv * _env,jobject _this,jint program,jint uniformBlockIndex,int bufSize,jintArray length_ref,jint lengthOffset,jbyteArray name_ref,jint nameOffset)3 android_glGetActiveUniformBlockName_III_3II_3BI
4 (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, int bufSize, jintArray length_ref, jint lengthOffset, jbyteArray name_ref, jint nameOffset) {
5 jint _exception = 0;
6 const char* _exceptionType;
7 const char* _exceptionMessage;
8 GLsizei* _length_base = (GLsizei*)0;
9 jint _lengthRemaining;
10 GLsizei* _length = (GLsizei*)0;
11 GLchar* _name_base = (GLchar*)0;
12 jint _nameRemaining;
13 GLchar* _name = (GLchar*)0;
14
15 if (!length_ref) {
16 _exception = 1;
17 _exceptionType = "java/lang/IllegalArgumentException";
18 _exceptionMessage = "length == null";
19 goto exit;
20 }
21 if (lengthOffset < 0) {
22 _exception = 1;
23 _exceptionType = "java/lang/IllegalArgumentException";
24 _exceptionMessage = "lengthOffset < 0";
25 goto exit;
26 }
27 _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
28 _length_base = (GLsizei*)_env->GetPrimitiveArrayCritical(
29 length_ref, (jboolean*)0);
30 _length = _length_base + lengthOffset;
31
32 if (!name_ref) {
33 _exception = 1;
34 _exceptionType = "java/lang/IllegalArgumentException";
35 _exceptionMessage = "uniformBlockName == null";
36 goto exit;
37 }
38 if (nameOffset < 0) {
39 _exception = 1;
40 _exceptionType = "java/lang/IllegalArgumentException";
41 _exceptionMessage = "uniformBlockNameOffset < 0";
42 goto exit;
43 }
44 _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
45 _name_base = (GLchar*)_env->GetPrimitiveArrayCritical(
46 name_ref, (jboolean*)0);
47 _name = _name_base + nameOffset;
48
49 glGetActiveUniformBlockName(
50 (GLuint)program,
51 (GLuint)uniformBlockIndex,
52 (GLsizei)bufSize,
53 (GLsizei*)_length,
54 (GLchar*)_name
55 );
56
57 exit:
58 if (_name_base) {
59 _env->ReleasePrimitiveArrayCritical(name_ref, _name_base,
60 _exception ? JNI_ABORT: 0);
61 }
62 if (_length_base) {
63 _env->ReleasePrimitiveArrayCritical(length_ref, _length_base,
64 _exception ? JNI_ABORT: 0);
65 }
66 if (_exception) {
67 jniThrowException(_env, _exceptionType, _exceptionMessage);
68 }
69 }
70
71 /* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */
72 static void
android_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint program,jint uniformBlockIndex,jobject length_buf,jobject uniformBlockName_buf)73 android_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2
74 (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, jobject length_buf, jobject uniformBlockName_buf) {
75 jint _exception = 0;
76 const char* _exceptionType;
77 const char* _exceptionMessage;
78 jarray _lengthArray = (jarray)0;
79 jint _lengthBufferOffset = (jint)0;
80 GLsizei* _length = (GLsizei*)0;
81 jint _lengthRemaining;
82 jarray _nameArray = (jarray)0;
83 jint _nameBufferOffset = (jint)0;
84 GLchar* _name = (GLchar*)0;
85 jint _nameRemaining;
86
87 _length = (GLsizei*)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
88 if (_length == NULL) {
89 GLsizei* _lengthBase = (GLsizei*)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean*)0);
90 _length = (GLsizei*)(_lengthBase + _lengthBufferOffset);
91 }
92
93 _name = (GLchar*)getPointer(_env, uniformBlockName_buf, &_nameArray, &_nameRemaining, &_nameBufferOffset);
94 if (_name == NULL) {
95 GLchar* _nameBase = (GLchar*)_env->GetPrimitiveArrayCritical(_nameArray, (jboolean*)0);
96 _name = (GLchar*)(_nameBase + _nameBufferOffset);
97 }
98
99 glGetActiveUniformBlockName(
100 (GLuint)program,
101 (GLuint)uniformBlockIndex,
102 (GLsizei)_nameRemaining,
103 _length, _name
104 );
105 if (_nameArray) {
106 releasePointer(_env, _nameArray, _name, JNI_TRUE);
107 }
108 if (_lengthArray) {
109 releasePointer(_env, _lengthArray, _length, JNI_TRUE);
110 }
111 }
112
113 /* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */
114 static jstring
android_glGetActiveUniformBlockName_II(JNIEnv * _env,jobject _this,jint program,jint uniformBlockIndex)115 android_glGetActiveUniformBlockName_II
116 (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex) {
117 GLint len = 0;
118 glGetActiveUniformBlockiv((GLuint)program, (GLuint)uniformBlockIndex,
119 GL_UNIFORM_BLOCK_NAME_LENGTH, &len);
120 GLchar* name = (GLchar*)malloc(len);
121 glGetActiveUniformBlockName((GLuint)program, (GLuint)uniformBlockIndex,
122 len, NULL, name);
123 jstring result = _env->NewStringUTF(name);
124 free(name);
125 return result;
126 }
127
128