Home | History | Annotate | Download | only in gles11
      1 /* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
      2 static void
      3 android_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 
     99 exit:
    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 ) */
    122 static void
    123 android_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 ) */
    174 static jstring
    175 android_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     );
    243 exit:
    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 ) */
    269 static jstring
    270 android_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 }
    329