⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jni.xs

📁 UNIX下perl实现代码
💻 XS
📖 第 1 页 / 共 5 页
字号:
	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 + -