kni.h
来自「This is a resource based on j2me embedde」· C头文件 代码 · 共 500 行 · 第 1/2 页
H
500 行
KNIEXPORT void KNI_SetIntField(jobject objectHandle, jfieldID fieldID, jint value);KNIEXPORT void KNI_SetLongField(jobject objectHandle, jfieldID fieldID, jlong value);KNIEXPORT void KNI_SetFloatField(jobject objectHandle, jfieldID fieldID, jfloat value);KNIEXPORT void KNI_SetDoubleField(jobject objectHandle, jfieldID fieldID, jdouble value);KNIEXPORT void KNI_SetObjectField(jobject objectHandle, jfieldID fieldID, jobject fromHandle);/** * Static field access */KNIEXPORT jboolean KNI_GetStaticBooleanField(jclass classHandle, jfieldID fieldID);KNIEXPORT jbyte KNI_GetStaticByteField(jclass classHandle, jfieldID fieldID);KNIEXPORT jchar KNI_GetStaticCharField(jclass classHandle, jfieldID fieldID);KNIEXPORT jshort KNI_GetStaticShortField(jclass classHandle, jfieldID fieldID);KNIEXPORT jint KNI_GetStaticIntField(jclass classHandle, jfieldID fieldID);KNIEXPORT jlong KNI_GetStaticLongField(jclass classHandle, jfieldID fieldID);KNIEXPORT jfloat KNI_GetStaticFloatField(jclass classHandle, jfieldID fieldID);KNIEXPORT jdouble KNI_GetStaticDoubleField(jclass classHandle, jfieldID fieldID);KNIEXPORT void KNI_GetStaticObjectField(jclass classHandle, jfieldID fieldID, jobject toHandle);KNIEXPORT void KNI_SetStaticBooleanField(jclass classHandle, jfieldID fieldID, jboolean value);KNIEXPORT void KNI_SetStaticByteField(jclass classHandle, jfieldID fieldID, jbyte value);KNIEXPORT void KNI_SetStaticCharField(jclass classHandle, jfieldID fieldID, jchar value);KNIEXPORT void KNI_SetStaticShortField(jclass classHandle, jfieldID fieldID, jshort value);KNIEXPORT void KNI_SetStaticIntField(jclass classHandle, jfieldID fieldID, jint value);KNIEXPORT void KNI_SetStaticLongField(jclass classHandle, jfieldID fieldID, jlong value);KNIEXPORT void KNI_SetStaticFloatField(jclass classHandle, jfieldID fieldID, jfloat value);KNIEXPORT void KNI_SetStaticDoubleField(jclass classHandle, jfieldID fieldID, jdouble value);KNIEXPORT void KNI_SetStaticObjectField(jclass classHandle, jfieldID fieldID, jobject fromHandle);/** * String operations */KNIEXPORT jsizeKNI_GetStringLength(jstring stringHandle);KNIEXPORT voidKNI_GetStringRegion(jstring stringHandle, jsize offset, jsize n, jchar* jcharbuf);KNIEXPORT voidKNI_NewStringUTFPriv(CVMExecEnv* ee, const char* utf8chars, jstring stringHandle);KNIEXPORT voidKNI_NewStringPriv(CVMExecEnv* ee, const jchar* chars, jsize size, jstring stringHandle);#define KNI_NewStringUTF(utf8chars, stringHandle) \ KNI_NewStringUTFPriv(_ee, utf8chars, stringHandle)#define KNI_NewString(chars, size, stringHandle) \ KNI_NewStringPriv(_ee, chars, size, stringHandle)/** * Array operations */KNIEXPORT jsize KNI_GetArrayLength(jarray arrayHandle);#define KNI_GetArrayLength(arrayHandle) \ (CVMID_icellIsNull(arrayHandle) ? -1 : \ CVMD_arrayGetLength((CVMArrayOfAnyType*) \ CVMID_icellDirect(_ee, arrayHandle)))KNIEXPORT jboolean KNI_GetBooleanArrayElement(jbooleanArray arrayHandle, jsize index);KNIEXPORT jbyte KNI_GetByteArrayElement(jbyteArray arrayHandle, jsize index);KNIEXPORT jchar KNI_GetCharArrayElement(jcharArray arrayHandle, jsize index);KNIEXPORT jshort KNI_GetShortArrayElement(jshortArray arrayHandle, jsize index);KNIEXPORT jint KNI_GetIntArrayElement(jintArray arrayHandle, jsize index);KNIEXPORT jlong KNI_GetLongArrayElement(jlongArray arrayHandle, jsize index);KNIEXPORT jfloat KNI_GetFloatArrayElement(jfloatArray arrayHandle, jsize index);KNIEXPORT jdouble KNI_GetDoubleArrayElement(jdoubleArray arrayHandle, jsize index);KNIEXPORT void KNI_GetObjectArrayElement(jobjectArray arrayHandle, jsize index, jobject toHandle);KNIEXPORT void KNI_SetBooleanArrayElement(jbooleanArray arrayHandle, jsize index, jboolean value);KNIEXPORT void KNI_SetByteArrayElement(jbyteArray arrayHandle, jsize index, jbyte value);KNIEXPORT void KNI_SetCharArrayElement(jcharArray arrayHandle, jsize index, jchar value);KNIEXPORT void KNI_SetShortArrayElement(jshortArray arrayHandle, jsize index, jshort value);KNIEXPORT void KNI_SetIntArrayElement(jintArray arrayHandle, jsize index, jint value);KNIEXPORT void KNI_SetLongArrayElement(jlongArray arrayHandle, jsize index, jlong value);KNIEXPORT void KNI_SetFloatArrayElement(jfloatArray arrayHandle, jsize index, jfloat value);KNIEXPORT void KNI_SetDoubleArrayElement(jdoubleArray arrayHandle, jsize index, jdouble value);KNIEXPORT void KNI_SetObjectArrayElement(jobjectArray arrayHandle, jsize index, jobject fromHandle);KNIEXPORT void KNI_GetRawArrayRegion(jarray arrayHandle, jsize offset, jsize n, jbyte* dstBuffer);KNIEXPORT void KNI_SetRawArrayRegion(jarray arrayHandle, jsize offset, jsize n, const jbyte* srcBuffer);/** * Parameter passing */KNIEXPORT jboolean KNI_GetParameterAsBoolean(jint index);KNIEXPORT jbyte KNI_GetParameterAsByte(jint index);KNIEXPORT jchar KNI_GetParameterAsChar(jint index);KNIEXPORT jshort KNI_GetParameterAsShort(jint index);KNIEXPORT jint KNI_GetParameterAsInt(jint index);KNIEXPORT jlong KNI_GetParameterAsLong(jint index);KNIEXPORT jfloat KNI_GetParameterAsFloat(jint index);KNIEXPORT jdouble KNI_GetParameterAsDouble(jint index);KNIEXPORT void KNI_GetParameterAsObject(jint index, jobject toHandle);#define KNIARG(index) \ (_arguments[index + (CVMmbIs(*_p_mb, STATIC) ? -1 : 0)].j)#define KNI_GetParameterAsBoolean(index) ((jboolean)KNIARG(index).i)#define KNI_GetParameterAsByte(index) ((jbyte)KNIARG(index).i)#define KNI_GetParameterAsChar(index) ((jchar)KNIARG(index).i)#define KNI_GetParameterAsShort(index) ((jshort)KNIARG(index).i)#define KNI_GetParameterAsInt(index) ((jint)KNIARG(index).i)#define KNI_GetParameterAsFloat(index) ((jfloat)KNIARG(index).f)KNIEXPORT jlongKNI_GetParameterAsLongPriv(CVMJavaVal64* val64);KNIEXPORT jdoubleKNI_GetParameterAsDoublePriv(CVMJavaVal64* val64);#define KNI_GetParameterAsLong(index) \ CVMjvm2Long((CVMUint32*)&(KNIARG(index)))#define KNI_GetParameterAsDouble(index) \ CVMjvm2Double((CVMUint32*)&(KNIARG(index)))#define KNI_GetParameterAsObject(index, toHandle) \ CVMID_icellSetDirect(_ee, toHandle, \ CVMID_icellDirect(_ee, &KNIARG(index).r));KNIEXPORT void KNI_GetThisPointer(jobject toHandle);KNIEXPORT void KNI_GetClassPointer(jclass toHandle);#define KNI_GetThisPointer(toHandle) \ CVMID_icellSetDirect(_ee, toHandle, \ CVMID_icellDirect(_ee, &_arguments[0].j.r))#define KNI_GetClassPointer(toHandle) \{ \ jclass clazz_ = CVMcbJavaInstance(CVMmbClassBlock(*_p_mb)); \ CVMID_icellSetDirect(_ee, toHandle, \ CVMID_icellDirect(_ee, clazz_)); \}#define KNI_CheckAndReturn(cniCode) \ if (CVMexceptionOccurred(_ee)) { \ return CNI_EXCEPTION; \ } else { \ return cniCode; \ }#define KNI_ReturnVoid() KNI_CheckAndReturn(CNI_VOID);#define KNI_ReturnBoolean(value) KNI_ReturnInt((jboolean)value)#define KNI_ReturnByte(value) KNI_ReturnInt((jbyte)value)#define KNI_ReturnChar(value) KNI_ReturnInt((jchar)value)#define KNI_ReturnShort(value) KNI_ReturnInt((jshort)value)#define KNI_ReturnInt(value) \ _arguments[0].j.i = (jint)(value); \ KNI_CheckAndReturn(CNI_SINGLE);#define KNI_ReturnFloat(value) \ _arguments[0].j.f = (jfloat)(value); \ KNI_CheckAndReturn(CNI_SINGLE);#define KNI_ReturnLong(value) \ CVMlong2Jvm((CVMUint32*)&_arguments[0].j, value); \ KNI_CheckAndReturn(CNI_DOUBLE);#define KNI_ReturnDouble(value) \ CVMdouble2Jvm((CVMUint32*)&_arguments[0].j, value); \ KNI_CheckAndReturn(CNI_DOUBLE);/** * Handle operations */#define KNI_StartHandles(n) \ CVMID_localrootBeginGcUnsafe(_ee) { \ int _dummy /* eat up the trailing semicolon *//* jobject and CVMObjectICell* are the same, which is why this works */#define KNI_DeclareHandle(x) \ CVMID_localrootDeclareGcUnsafe(CVMObjectICell, x)#define KNI_IsNullHandle(x) \ CVMID_icellIsNull(x)#define KNI_ReleaseHandle(x) \ CVMID_icellSetNull(x)#define KNI_EndHandles() \ (void)_dummy; /* get rid of compiler warning */ \ } CVMID_localrootEndGcUnsafe();#define KNI_EndHandlesAndReturnObject(x) \ CVMID_icellAssignDirect(_ee, &_arguments[0].j.r, x); \ KNI_EndHandles(); \ KNI_CheckAndReturn(CNI_SINGLE);/** * Type macros */#define KNI_RETURNTYPE_VOID CNIResultCode#define KNI_RETURNTYPE_BOOLEAN CNIResultCode#define KNI_RETURNTYPE_BYTE CNIResultCode#define KNI_RETURNTYPE_CHAR CNIResultCode#define KNI_RETURNTYPE_SHORT CNIResultCode#define KNI_RETURNTYPE_INT CNIResultCode#define KNI_RETURNTYPE_FLOAT CNIResultCode#define KNI_RETURNTYPE_LONG CNIResultCode#define KNI_RETURNTYPE_DOUBLE CNIResultCode#define KNI_RETURNTYPE_OBJECT CNIResultCode//// This definition has been added for KVM compatibility.// It is not part of the KNI Specification.//#define KNI_registerCleanup(instanceHandle, callback)#ifdef __cplusplus}#endif#endif /* !_JAVASOFT_KNI_H_ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?