1 /* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
2 static void
android_glGetActiveUniform__III_3II_3II_3II_3BI(JNIEnv * _env,jobject _this,jint program,jint index,jint bufsize,jintArray length_ref,jint lengthOffset,jintArray size_ref,jint sizeOffset,jintArray type_ref,jint typeOffset,jbyteArray name_ref,jint nameOffset)3 android_glGetActiveUniform__III_3II_3II_3II_3BI
4 (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jintArray length_ref, jint lengthOffset, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset, 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 GLint *size_base = (GLint *) 0;
12 jint _sizeRemaining;
13 GLint *size = (GLint *) 0;
14 GLenum *type_base = (GLenum *) 0;
15 jint _typeRemaining;
16 GLenum *type = (GLenum *) 0;
17 char *name_base = (char *) 0;
18 jint _nameRemaining;
19 char *name = (char *) 0;
20
21 if (length_ref) {
22 if (lengthOffset < 0) {
23 _exception = 1;
24 _exceptionType = "java/lang/IllegalArgumentException";
25 _exceptionMessage = "lengthOffset < 0";
26 goto exit;
27 }
28 _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
29 length_base = (GLsizei *)
30 _env->GetIntArrayElements(length_ref, (jboolean *)0);
31 length = length_base + lengthOffset;
32 }
33
34 if (!size_ref) {
35 _exception = 1;
36 _exceptionType = "java/lang/IllegalArgumentException";
37 _exceptionMessage = "size == null";
38 goto exit;
39 }
40 if (sizeOffset < 0) {
41 _exception = 1;
42 _exceptionType = "java/lang/IllegalArgumentException";
43 _exceptionMessage = "sizeOffset < 0";
44 goto exit;
45 }
46 _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
47 size_base = (GLint *)
48 _env->GetIntArrayElements(size_ref, (jboolean *)0);
49 size = size_base + sizeOffset;
50
51 if (!type_ref) {
52 _exception = 1;
53 _exceptionType = "java/lang/IllegalArgumentException";
54 _exceptionMessage = "type == null";
55 goto exit;
56 }
57 if (typeOffset < 0) {
58 _exception = 1;
59 _exceptionType = "java/lang/IllegalArgumentException";
60 _exceptionMessage = "typeOffset < 0";
61 goto exit;
62 }
63 _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
64 type_base = (GLenum *)
65 _env->GetIntArrayElements(type_ref, (jboolean *)0);
66 type = type_base + typeOffset;
67
68 if (!name_ref) {
69 _exception = 1;
70 _exceptionType = "java/lang/IllegalArgumentException";
71 _exceptionMessage = "name == null";
72 goto exit;
73 }
74 if (nameOffset < 0) {
75 _exception = 1;
76 _exceptionType = "java/lang/IllegalArgumentException";
77 _exceptionMessage = "nameOffset < 0";
78 goto exit;
79 }
80 _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
81 name_base = (char *)
82 _env->GetByteArrayElements(name_ref, (jboolean *)0);
83 name = name_base + nameOffset;
84
85 glGetActiveUniform(
86 (GLuint)program,
87 (GLuint)index,
88 (GLsizei)bufsize,
89 (GLsizei *)length,
90 (GLint *)size,
91 (GLenum *)type,
92 (char *)name
93 );
94
95 exit:
96 if (name_base) {
97 _env->ReleaseByteArrayElements(name_ref, (jbyte*)name_base,
98 _exception ? JNI_ABORT: 0);
99 }
100 if (type_base) {
101 _env->ReleaseIntArrayElements(type_ref, (jint*)type_base,
102 _exception ? JNI_ABORT: 0);
103 }
104 if (size_base) {
105 _env->ReleaseIntArrayElements(size_ref, (jint*)size_base,
106 _exception ? JNI_ABORT: 0);
107 }
108 if (length_base) {
109 _env->ReleaseIntArrayElements(length_ref, (jint*)length_base,
110 _exception ? JNI_ABORT: 0);
111 }
112 if (_exception) {
113 jniThrowException(_env, _exceptionType, _exceptionMessage);
114 }
115 }
116
117 /* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
118 static void
android_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B(JNIEnv * _env,jobject _this,jint program,jint index,jint bufsize,jobject length_buf,jobject size_buf,jobject type_buf,jbyte name)119 android_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B
120 (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) {
121 jintArray _lengthArray = (jintArray) 0;
122 jint _lengthBufferOffset = (jint) 0;
123 jintArray _sizeArray = (jintArray) 0;
124 jint _sizeBufferOffset = (jint) 0;
125 jintArray _typeArray = (jintArray) 0;
126 jint _typeBufferOffset = (jint) 0;
127 jint _lengthRemaining;
128 GLsizei *length = (GLsizei *) 0;
129 jint _sizeRemaining;
130 GLint *size = (GLint *) 0;
131 jint _typeRemaining;
132 GLenum *type = (GLenum *) 0;
133
134 length = (GLsizei *)getPointer(_env, length_buf, (jarray*)&_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
135 size = (GLint *)getPointer(_env, size_buf, (jarray*)&_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
136 type = (GLenum *)getPointer(_env, type_buf, (jarray*)&_typeArray, &_typeRemaining, &_typeBufferOffset);
137 if (length == NULL) {
138 char * _lengthBase = (char *)_env->GetIntArrayElements(_lengthArray, (jboolean *) 0);
139 length = (GLsizei *) (_lengthBase + _lengthBufferOffset);
140 }
141 if (size == NULL) {
142 char * _sizeBase = (char *)_env->GetIntArrayElements(_sizeArray, (jboolean *) 0);
143 size = (GLint *) (_sizeBase + _sizeBufferOffset);
144 }
145 if (type == NULL) {
146 char * _typeBase = (char *)_env->GetIntArrayElements(_typeArray, (jboolean *) 0);
147 type = (GLenum *) (_typeBase + _typeBufferOffset);
148 }
149 glGetActiveUniform(
150 (GLuint)program,
151 (GLuint)index,
152 (GLsizei)bufsize,
153 (GLsizei *)length,
154 (GLint *)size,
155 (GLenum *)type,
156 reinterpret_cast<char *>(name)
157 );
158 if (_typeArray) {
159 releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _typeArray, (jint*)type, JNI_TRUE);
160 }
161 if (_sizeArray) {
162 releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _sizeArray, (jint*)size, JNI_TRUE);
163 }
164 if (_lengthArray) {
165 releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _lengthArray, (jint*)length, JNI_TRUE);
166 }
167 }
168
169 /* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
170 static jstring
android_glGetActiveUniform1(JNIEnv * _env,jobject _this,jint program,jint index,jintArray size_ref,jint sizeOffset,jintArray type_ref,jint typeOffset)171 android_glGetActiveUniform1
172 (JNIEnv *_env, jobject _this, jint program, jint index, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset) {
173 jint _exception = 0;
174 const char * _exceptionType;
175 const char * _exceptionMessage;
176
177 GLint *size_base = (GLint *) 0;
178 jint _sizeRemaining;
179 GLint *size = (GLint *) 0;
180
181 GLenum *type_base = (GLenum *) 0;
182 jint _typeRemaining;
183 GLenum *type = (GLenum *) 0;
184
185 jstring result = 0;
186
187 GLint len = 0;
188 glGetProgramiv((GLuint)program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &len);
189 if (!len) {
190 return _env->NewStringUTF("");
191 }
192 char* buf = (char*) malloc(len);
193
194 if (buf == NULL) {
195 jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
196 return NULL;
197 }
198
199 if (!size_ref) {
200 _exception = 1;
201 _exceptionType = "java/lang/IllegalArgumentException";
202 _exceptionMessage = "size == null";
203 goto exit;
204 }
205 if (sizeOffset < 0) {
206 _exception = 1;
207 _exceptionType = "java/lang/IllegalArgumentException";
208 _exceptionMessage = "sizeOffset < 0";
209 goto exit;
210 }
211 _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
212 size_base = (GLint *)
213 _env->GetIntArrayElements(size_ref, (jboolean *)0);
214 size = size_base + sizeOffset;
215
216 if (!type_ref) {
217 _exception = 1;
218 _exceptionType = "java/lang/IllegalArgumentException";
219 _exceptionMessage = "type == null";
220 goto exit;
221 }
222 if (typeOffset < 0) {
223 _exception = 1;
224 _exceptionType = "java/lang/IllegalArgumentException";
225 _exceptionMessage = "typeOffset < 0";
226 goto exit;
227 }
228 _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
229 type_base = (GLenum *)
230 _env->GetIntArrayElements(type_ref, (jboolean *)0);
231 type = type_base + typeOffset;
232
233 glGetActiveUniform(
234 (GLuint)program,
235 (GLuint)index,
236 (GLsizei)len,
237 NULL,
238 (GLint *)size,
239 (GLenum *)type,
240 (char *)buf
241 );
242
243 exit:
244 if (type_base) {
245 _env->ReleaseIntArrayElements(type_ref, (jint*)type_base,
246 _exception ? JNI_ABORT: 0);
247 }
248 if (size_base) {
249 _env->ReleaseIntArrayElements(size_ref, (jint*)size_base,
250 _exception ? JNI_ABORT: 0);
251 }
252 if (_exception != 1) {
253 result = _env->NewStringUTF(buf);
254 }
255 if (buf) {
256 free(buf);
257 }
258 if (_exception) {
259 jniThrowException(_env, _exceptionType, _exceptionMessage);
260 }
261 if (result == 0) {
262 result = _env->NewStringUTF("");
263 }
264 return result;
265 }
266
267 /* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
268 static jstring
android_glGetActiveUniform2(JNIEnv * _env,jobject _this,jint program,jint index,jobject size_buf,jobject type_buf)269 android_glGetActiveUniform2
270 (JNIEnv *_env, jobject _this, jint program, jint index, jobject size_buf, jobject type_buf) {
271 jintArray _sizeArray = (jintArray) 0;
272 jint _sizeBufferOffset = (jint) 0;
273 jintArray _typeArray = (jintArray) 0;
274 jint _typeBufferOffset = (jint) 0;
275 jint _sizeRemaining;
276 GLint *size = (GLint *) 0;
277 jint _typeRemaining;
278 GLenum *type = (GLenum *) 0;
279
280 jstring result = 0;
281 GLint len = 0;
282 glGetProgramiv((GLuint)program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &len);
283 if (!len) {
284 return _env->NewStringUTF("");
285 }
286 char* buf = (char*) malloc(len);
287
288 if (buf == NULL) {
289 jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
290 return NULL;
291 }
292
293 size = (GLint *)getPointer(_env, size_buf, (jarray*)&_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
294 type = (GLenum *)getPointer(_env, type_buf, (jarray*)&_typeArray, &_typeRemaining, &_typeBufferOffset);
295
296 if (size == NULL) {
297 char * _sizeBase = (char *)_env->GetIntArrayElements(_sizeArray, (jboolean *) 0);
298 size = (GLint *) (_sizeBase + _sizeBufferOffset);
299 }
300 if (type == NULL) {
301 char * _typeBase = (char *)_env->GetIntArrayElements(_typeArray, (jboolean *) 0);
302 type = (GLenum *) (_typeBase + _typeBufferOffset);
303 }
304 glGetActiveUniform(
305 (GLuint)program,
306 (GLuint)index,
307 len,
308 NULL,
309 (GLint *)size,
310 (GLenum *)type,
311 (char *)buf
312 );
313
314 if (_typeArray) {
315 releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _typeArray, (jint*)type, JNI_TRUE);
316 }
317 if (_sizeArray) {
318 releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _sizeArray, (jint*)size, JNI_TRUE);
319 }
320 result = _env->NewStringUTF(buf);
321 if (buf) {
322 free(buf);
323 }
324 return result;
325 }
326