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