Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.68 KB | None | 0 0
  1. JNIEXPORT jobject JNICALL
  2. JNU_NewObjectByName(JNIEnv *env, const char *class_name, const char *constructor_sig, ...)
  3. {
  4.     jobject obj = NULL;
  5.     jclass cls = 0;
  6.     jmethodID cls_initMID;
  7.     va_list args;
  8.    
  9.     if((*env)->EnsureLocalCapacity(env, 2) < 0) {
  10.         goto done;
  11.     }
  12.    
  13.     cls = (*env)->FindClass(env, class_name);
  14.     if(cls == 0) goto done;
  15.    
  16.     cls_initMID = (*env)->GetMethodID(env, cls, "<init>", constructor_sig);
  17.     if (cls_initMID == NULL) goto done;
  18.    
  19.     va_start(args, constructor_sig);
  20.     obj = (*env)->NewObjectV(env, cls, cls_initMID, args);
  21.     va_end(args);
  22.  
  23.  done:
  24.     (*env)->DeleteLocalRef(env, cls);
  25.     return obj;
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement