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