📄 jni_ibss.h
字号:
#if !defined(__JNI_IBSS_H_INCLUDE)
#define __JNI_IBSS_H_INCLUDE
class JNIClassField {
private:
jfieldID getFieldID(const char *fieldName,const char *sig);
public:
JNIClassField();
JNIClassField(JNIEnv* env,jobject obj);
~JNIClassField();
void setEnv(JNIEnv* env,jobject obj);
int copyBytes2Buffer(const char *fieldName, char *dest_buf, const int buf_len);
void copyString2Buffer(const char *fieldName, char *dest_buf, const int buf_len);
jobject getObjectFieldValue(const char *fieldName, const char *sig = "Ljava/lang/Object;");
jboolean getBooleanFieldValue(const char *fieldName);
jbyte getByteFieldValue(const char *fieldName);
jchar getCharFieldValue(const char *fieldName);
jshort getShortFieldValue(const char *fieldName);
jint getIntFieldValue(const char *fieldName);
jlong getLongFieldValue(const char *fieldName);
jfloat getFloatFieldValue(const char *fieldName);
jdouble getDoubleFieldValue(const char *fieldName);
jstring getStringFieldValue(const char *fieldName);
void getStringFieldValue(const char *fieldName,string& value);
void setObjectFieldValue(const char *fieldName,jobject newValue, const char *sig = "Ljava/lang/Object;");
void setBooleanFieldValue(const char *fieldName,jboolean newValue);
void setByteFieldValue(const char *fieldName,jbyte newValue);
void setCharFieldValue(const char *fieldName,jchar newValue);
void setShortFieldValue(const char *fieldName,jshort newValue);
void setIntFieldValue(const char *fieldName,jint newValue);
void setLongFieldValue(const char *fieldName,jlong newValue);
void setFloatFieldValue(const char *fieldName,jfloat newValue);
void setDoubleFieldValue(const char *fieldName,jdouble newValue);
void setStringFieldValue(const char *fieldName,jstring newValue);
void setStringFieldValue(const char *fieldName,const char *value);
void setStringFieldValue(const char *fieldName,string& value);
private:
JNIEnv* mEnv; // The enviroment pointer for this native method.
jobject mObj;
};
class JNIString {
public:
JNIString (); // Default ctor - disallowed
// Create a new instance from the specified jstring
JNIString(JNIEnv* env, const jstring str);
// Create a new instance from the specified string
JNIString(JNIEnv* env, const string& str);
// Create a new instance as a copy of the specified JNIString
JNIString(const JNIString& rhs);
// Delete the instance and release allocated storage
~JNIString();
// assign a new value to this instance from the given string
JNIString & operator =(const string& rhs);
// Supply operator methods for converting the JNIString to a string
// or char*, making it easy to pass JNIString arguments to functions
// that require string or char* parameters.
string & GetString();
operator string();
operator const char* ();
operator char* ();
operator jstring();
private:
JNIEnv* mEnv; // The enviroment pointer for this native method.
jstring mJstr; // A copy of the jstring object that this JNIString represents
char* mChars; // Pointer to a ANSI code page char array
string mString; // string buffer for holding the "value" of this instance (ANSI code page)
};
class JNIByteBuffer {
private:
JNIByteBuffer();
public:
JNIByteBuffer(JNIEnv* env,jobject obj);
JNIByteBuffer(JNIEnv* env);
~JNIByteBuffer();
jbyte* getBytes();
void setBytes(const jbyte* newValue, jsize len);
void setBytes(jbyteArray newValue);
void setBytes(const string& newValue);
operator jobject(); //返回 ByteBuffer 对象
private:
JNIEnv* mEnv;
jobject mObj;
jbyte* buf;
jsize buf_len;
};
//调用某个对象的方法
jvalue JNU_CallMethodByName(JNIEnv *mEnv,
jboolean *hasException,
jobject obj,
const char *method_name,
const char *descriptor,
...);
//调用某个对象的静态方法(按对象名)
jvalue JNU_CallStaticMethodByName(JNIEnv *mEnv,
jboolean *hasException,
const char *obj_name,
const char *method_name,
const char *descriptor,
...);
//调用某个对象的静态方法(按对象)
jvalue JNU_CallStaticMethodByName(JNIEnv *mEnv,
jboolean *hasException,
jobject obj,
const char *method_name,
const char *descriptor,
...);
//创建一个新对象
jobject JNU_NewClassByName(JNIEnv *mEnv,
jboolean *hasException,
const char *obj_name,
const char *descriptor,
...);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -