📄 jni.xs
字号:
char * sig = 0; int argoff = $min_args; CODE: { jvalue * args = makeargs(sig, &ST(argoff), items - argoff); RETVAL = (*env)->CallStaticLongMethodA(env, clazz,methodID,args); RESTOREENV; } OUTPUT: RETVALjlongCallStaticLongMethodA(clazz,methodID,args) JNIEnv * env = FETCHENV; jclass clazz jmethodID methodID char * sig = 0; jvalue * args CODE: { RETVAL = (*env)->CallStaticLongMethodA(env, clazz,methodID,args); RESTOREENV; } OUTPUT: RETVALjfloatCallStaticFloatMethod(clazz,methodID,...) JNIEnv * env = FETCHENV; jclass clazz jmethodID methodID char * sig = 0; int argoff = $min_args; CODE: { jvalue * args = makeargs(sig, &ST(argoff), items - argoff); RETVAL = (*env)->CallStaticFloatMethodA(env, clazz,methodID,args); RESTOREENV; } OUTPUT: RETVALjfloatCallStaticFloatMethodA(clazz,methodID,args) JNIEnv * env = FETCHENV; jclass clazz jmethodID methodID char * sig = 0; jvalue * args CODE: { RETVAL = (*env)->CallStaticFloatMethodA(env, clazz,methodID,args); RESTOREENV; } OUTPUT: RETVALjdoubleCallStaticDoubleMethod(clazz,methodID,...) JNIEnv * env = FETCHENV; jclass clazz jmethodID methodID char * sig = 0; int argoff = $min_args; CODE: { jvalue * args = makeargs(sig, &ST(argoff), items - argoff); RETVAL = (*env)->CallStaticDoubleMethodA(env, clazz,methodID,args); RESTOREENV; } OUTPUT: RETVALjdoubleCallStaticDoubleMethodA(clazz,methodID,args) JNIEnv * env = FETCHENV; jclass clazz jmethodID methodID char * sig = 0; jvalue * args CODE: { RETVAL = (*env)->CallStaticDoubleMethodA(env, clazz,methodID,args); RESTOREENV; } OUTPUT: RETVALvoidCallStaticVoidMethod(cls,methodID,...) JNIEnv * env = FETCHENV; jclass cls jmethodID methodID char * sig = 0; int argoff = $min_args; CODE: { jvalue * args = makeargs(sig, &ST(argoff), items - argoff); (*env)->CallStaticVoidMethodA(env, cls,methodID,args); RESTOREENV; }voidCallStaticVoidMethodA(cls,methodID,args) JNIEnv * env = FETCHENV; jclass cls jmethodID methodID char * sig = 0; jvalue * args CODE: { (*env)->CallStaticVoidMethodA(env, cls,methodID,args); RESTOREENV; }jfieldIDGetStaticFieldID(clazz,name,sig) JNIEnv * env = FETCHENV; jclass clazz const char * name const char * sig CODE: { RETVAL = (*env)->GetStaticFieldID(env, clazz,name,sig); RESTOREENV; } OUTPUT: RETVALjobjectGetStaticObjectField(clazz,fieldID) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; CODE: { RETVAL = (*env)->GetStaticObjectField(env, clazz,fieldID); RESTOREENV; } OUTPUT: RETVALjbooleanGetStaticBooleanField(clazz,fieldID) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; CODE: { RETVAL = (*env)->GetStaticBooleanField(env, clazz,fieldID); RESTOREENV; } OUTPUT: RETVALjbyteGetStaticByteField(clazz,fieldID) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; CODE: { RETVAL = (*env)->GetStaticByteField(env, clazz,fieldID); RESTOREENV; } OUTPUT: RETVALjcharGetStaticCharField(clazz,fieldID) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; CODE: { RETVAL = (*env)->GetStaticCharField(env, clazz,fieldID); RESTOREENV; } OUTPUT: RETVALjshortGetStaticShortField(clazz,fieldID) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; CODE: { RETVAL = (*env)->GetStaticShortField(env, clazz,fieldID); RESTOREENV; } OUTPUT: RETVALjintGetStaticIntField(clazz,fieldID) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; CODE: { RETVAL = (*env)->GetStaticIntField(env, clazz,fieldID); RESTOREENV; } OUTPUT: RETVALjlongGetStaticLongField(clazz,fieldID) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; CODE: { RETVAL = (*env)->GetStaticLongField(env, clazz,fieldID); RESTOREENV; } OUTPUT: RETVALjfloatGetStaticFloatField(clazz,fieldID) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; CODE: { RETVAL = (*env)->GetStaticFloatField(env, clazz,fieldID); RESTOREENV; } OUTPUT: RETVALjdoubleGetStaticDoubleField(clazz,fieldID) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; CODE: { RETVAL = (*env)->GetStaticDoubleField(env, clazz,fieldID); RESTOREENV; } OUTPUT: RETVALvoidSetStaticObjectField(clazz,fieldID,value) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; jobject value CODE: { (*env)->SetStaticObjectField(env, clazz,fieldID,value); RESTOREENV; }voidSetStaticBooleanField(clazz,fieldID,value) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; jboolean value CODE: { (*env)->SetStaticBooleanField(env, clazz,fieldID,value); RESTOREENV; }voidSetStaticByteField(clazz,fieldID,value) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; jbyte value CODE: { (*env)->SetStaticByteField(env, clazz,fieldID,value); RESTOREENV; }voidSetStaticCharField(clazz,fieldID,value) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; jchar value CODE: { (*env)->SetStaticCharField(env, clazz,fieldID,value); RESTOREENV; }voidSetStaticShortField(clazz,fieldID,value) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; jshort value CODE: { (*env)->SetStaticShortField(env, clazz,fieldID,value); RESTOREENV; }voidSetStaticIntField(clazz,fieldID,value) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; jint value CODE: { (*env)->SetStaticIntField(env, clazz,fieldID,value); RESTOREENV; }voidSetStaticLongField(clazz,fieldID,value) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; jlong value CODE: { (*env)->SetStaticLongField(env, clazz,fieldID,value); RESTOREENV; }voidSetStaticFloatField(clazz,fieldID,value) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; jfloat value CODE: { (*env)->SetStaticFloatField(env, clazz,fieldID,value); RESTOREENV; }voidSetStaticDoubleField(clazz,fieldID,value) JNIEnv * env = FETCHENV; jclass clazz jfieldID fieldID char * sig = 0; jdouble value CODE: { (*env)->SetStaticDoubleField(env, clazz,fieldID,value); RESTOREENV; }jstringNewString(unicode) JNIEnv * env = FETCHENV; STRLEN tmplen = NO_INIT; jsize unicode_len_ = NO_INIT; const jchar * unicode CODE: { RETVAL = (*env)->NewString(env, unicode, unicode_len_); RESTOREENV; } OUTPUT: RETVALjsizeGetStringLength(str) JNIEnv * env = FETCHENV; jstring str CODE: { RETVAL = (*env)->GetStringLength(env, str); RESTOREENV; } OUTPUT: RETVALconst jchar *GetStringChars(str) JNIEnv * env = FETCHENV; jstring str jboolean isCopy = NO_INIT; jsize RETVAL_len_ = NO_INIT; CODE: { RETVAL = (*env)->GetStringChars(env, str,&isCopy); RETVAL_len_ = (*env)->GetStringLength(env, str); RESTOREENV; } OUTPUT: RETVAL CLEANUP: (*env)->ReleaseStringChars(env, str,RETVAL);jstringNewStringUTF(utf) JNIEnv * env = FETCHENV; const char * utf CODE: { RETVAL = (*env)->NewStringUTF(env, utf); RESTOREENV; } OUTPUT: RETVALjsizeGetStringUTFLength(str) JNIEnv * env = FETCHENV; jstring str CODE: { RETVAL = (*env)->GetStringUTFLength(env, str); RESTOREENV; } OUTPUT: RETVALconst char *GetStringUTFChars(str) JNIEnv * env = FETCHENV; jstring str jboolean isCopy = NO_INIT; CODE: { RETVAL = (*env)->GetStringUTFChars(env, str,&isCopy); RESTOREENV; } OUTPUT: RETVAL CLEANUP: (*env)->ReleaseStringUTFChars(env, str, RETVAL);jsizeGetArrayLength(array) JNIEnv * env = FETCHENV; jarray array CODE: { RETVAL = (*env)->GetArrayLength(env, array); RESTOREENV; } OUTPUT: RETVALjobjectArrayNewObjectArray(len,clazz,init) JNIEnv * env = FETCHENV; jsize len jclass clazz jobject init CODE: { RETVAL = (*env)->NewObjectArray(env, len,clazz,init); RESTOREENV; } OUTPUT: RETVALjobjectGetObjectArrayElement(array,index) JNIEnv * env = FETCHENV; jobjectArray array jsize index CODE: { RETVAL = (*env)->GetObjectArrayElement(env, array,index); RESTOREENV; } OUTPUT: RETVALvoidSetObjectArrayElement(array,index,val) JNIEnv * env = FETCHENV; jobjectArray array jsize index jobject val CODE: { (*env)->SetObjectArrayElement(env, array,index,val); RESTOREENV; }jbooleanArrayNewBooleanArray(len) JNIEnv * env = FETCHENV; jsize len CODE: { RETVAL = (*env)->NewBooleanArray(env, len); RESTOREENV; } OUTPUT: RETVALjbyteArrayNewByteArray(len) JNIEnv * env = FETCHENV; jsize len CODE: { RETVAL = (*env)->NewByteArray(env, len); RESTOREENV; } OUTPUT: RETVALjcharArrayNewCharArray(len) JNIEnv * env = FETCHENV; jsize len CODE: { RETVAL = (*env)->NewCharArray(env, len); RESTOREENV; } OUTPUT: RETVALjshortArrayNewShortArray(len) JNIEnv * env = FETCHENV; jsize len CODE: { RETVAL = (*env)->NewShortArray(env, len); RESTOREENV; } OUTPUT: RETVALjintArrayNewIntArray(len) JNIEnv * env = FETCHENV; jsize len CODE: { RETVAL = (*env)->NewIntArray(env, len); RESTOREENV; } OUTPUT: RETVALjlongArrayNewLongArray(len) JNIEnv * env = FETCHENV; jsize len CODE: { RETVAL = (*env)->NewLongArray(env, len); RESTOREENV; } OUTPUT: RETVALjfloatArrayNewFloatArray(len) JNIEnv * env = FETCHENV; jsize len CODE: { RETVAL = (*env)->NewFloatArray(env, len); RESTOREENV; } OUTPUT: RETVALjdoubleArrayNewDoubleArray(len) JNIEnv * env = FETCHENV; jsize len CODE: { RETVAL = (*env)->NewDoubleArray(env, len); RESTOREENV; } OUTPUT: RETVALjboolean *GetBooleanArrayElements(array) JNIEnv * env = FETCHENV; jsize RETVAL_len_ = NO_INIT; jbooleanArray array jboolean isCopy = NO_INIT; PPCODE: { RETVAL = (*env)->GetBooleanArrayElements(env, array,&isCopy); RETVAL_len_ = (*env)->GetArrayLength(env, array); if (GIMME == G_ARRAY) { int i; jboolean* r = RETVAL; EXTEND(sp, RETVAL_len_); for (i = RETVAL_len_; i; --i) { PUSHs(sv_2mortal(newSViv(*r++))); } } else { if (RETVAL_len_) { PUSHs(sv_2mortal(newSVpvn((char*)RETVAL, (STRLEN)RETVAL_len_ * sizeof(jboolean)))); } else PUSHs(&PL_sv_no); } (*env)->ReleaseBooleanArrayElements(env, array,RETVAL,JNI_ABORT); RESTOREENV; }jbyte *GetByteArrayElements(array) JNIEnv * env = FETCHENV; jsize RETVAL_len_ = NO_INIT; jbyteArray array jboolean isCopy = NO_INIT; PPCODE: { RETVAL = (*env)->GetByteArrayElements(env, array,&isCopy); RETVAL_len_ = (*env)->GetArrayLength(env, array); if (GIMME == G_ARRAY) { int i; jbyte* r = RETVAL; EXTEND(sp, RETVAL_len_); for (i = RETVAL_len_; i; --i) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -