📄 java_field.h
字号:
/* ^_^
*
* Copyright (c) 2006 Hexin
*
* Description:
* TODO:
* Create:
* Date Time Author
* ------------------------------------------------
* 2006-3-21 9:32:26 XiaoWei
*/
/* ^_^
* Location :
* File : JAVA_Field.h
* Version : 1.0.0.0
* Note :
*/
#if !defined(__JAVA_Field_h__)
#define __JAVA_Field_h__
#include "Java_Object.h"
#include "Java_Class.h"
#include "JAVA_VM.H"
#include "JAVA_Config.h"
struct s_JAVA_Field{
s_JAVA_Field();
JNI_FieldID m_FieldID;
JNI_Object m_Object;
JNI_Env* m_lpEnv;
JNI_Class m_Class;
void setMethod(JNI_Env* _lpEnv,JNI_FieldID _m,JNI_Object _o,JNI_Class _c);
void clear();
bool loadField(JAVA_Object & _object,const char* name,const char * sig);
void _setEnv_Mul()
{
m_lpEnv = JAVA_VM::getInstance()->getEnv();
}
};
class JAVA_Field_Base
{
public:
bool loadField(JAVA_Object & _object,const char* name,const char * sig)
{
return m_Field.loadField(_object,name,sig);
}
protected:
s_JAVA_Field m_Field;
};
template<typename _Type = JNI_Object>
class JAVA_Field : public JAVA_Field_Base
{
public:
typedef _Type _FieldType;
_FieldType get()
{
return m_Field.m_lpEnv->GetObjectField(m_Field.m_Object,m_Field.m_FieldID);
}
JNI_Void set(const _FieldType& _FieldValue)
{
m_Field.m_lpEnv->SetObjectField(m_Field.m_Object,m_Field.m_FieldID,_FieldValue);
}
};
#define loadJavaField(m,name,sig) if(!m.loadField(*this,name,sig))\
{ SHOWMESSAGE("JavaField:" ## name ## " " ## sig ## " unload!");return false;}
//JNI_Object
#ifdef JNI_FieldType
#undef JNI_FieldType
#else
#define JNI_FieldType JNI_Object
#endif
#ifdef JNI_GetField
#undef JNI_GetField
#else
#define JNI_GetField GetObjectField
#endif
#ifdef JNI_SetField
#undef JNI_SetField
#else
#define JNI_SetField SetObjectField
#endif
//#include "JAVA_CallField.h"
//JNI_Boolean
#ifdef JNI_FieldType
#undef JNI_FieldType
#else
#define JNI_FieldType JNI_Boolean
#endif
#ifdef JNI_GetField
#undef JNI_GetField
#else
#define JNI_GetField GetBooleanField
#endif
#ifdef JNI_SetField
#undef JNI_SetField
#else
#define JNI_SetField SetBooleanField
#endif
#include "JAVA_CallField.h"
//JNI_Boolean
#ifdef JNI_FieldType
#undef JNI_FieldType
#else
#define JNI_FieldType JNI_Boolean
#endif
#ifdef JNI_GetField
#undef JNI_GetField
#else
#define JNI_GetField GetBooleanField
#endif
#ifdef JNI_SetField
#undef JNI_SetField
#else
#define JNI_SetField SetBooleanField
#endif
#include "JAVA_CallField.h"
//JNI_Byte
#ifdef JNI_FieldType
#undef JNI_FieldType
#else
#define JNI_FieldType JNI_Byte
#endif
#ifdef JNI_GetField
#undef JNI_GetField
#else
#define JNI_GetField GetByteField
#endif
#ifdef JNI_SetField
#undef JNI_SetField
#else
#define JNI_SetField SetByteField
#endif
#include "JAVA_CallField.h"
//JNI_Byte
#ifdef JNI_FieldType
#undef JNI_FieldType
#else
#define JNI_FieldType JNI_Byte
#endif
#ifdef JNI_GetField
#undef JNI_GetField
#else
#define JNI_GetField GetByteField
#endif
#ifdef JNI_SetField
#undef JNI_SetField
#else
#define JNI_SetField SetByteField
#endif
#include "JAVA_CallField.h"
//JNI_Char
#ifdef JNI_FieldType
#undef JNI_FieldType
#else
#define JNI_FieldType JNI_Char
#endif
#ifdef JNI_GetField
#undef JNI_GetField
#else
#define JNI_GetField GetCharField
#endif
#ifdef JNI_SetField
#undef JNI_SetField
#else
#define JNI_SetField SetCharField
#endif
#include "JAVA_CallField.h"
//JNI_Short
#ifdef JNI_FieldType
#undef JNI_FieldType
#else
#define JNI_FieldType JNI_Short
#endif
#ifdef JNI_GetField
#undef JNI_GetField
#else
#define JNI_GetField GetShortField
#endif
#ifdef JNI_SetField
#undef JNI_SetField
#else
#define JNI_SetField SetShortField
#endif
#include "JAVA_CallField.h"
//JNI_Short
#ifdef JNI_FieldType
#undef JNI_FieldType
#else
#define JNI_FieldType JNI_Short
#endif
#ifdef JNI_GetField
#undef JNI_GetField
#else
#define JNI_GetField GetShortField
#endif
#ifdef JNI_SetField
#undef JNI_SetField
#else
#define JNI_SetField SetShortField
#endif
#include "JAVA_CallField.h"
//JNI_Int
#ifdef JNI_FieldType
#undef JNI_FieldType
#else
#define JNI_FieldType JNI_Int
#endif
#ifdef JNI_GetField
#undef JNI_GetField
#else
#define JNI_GetField GetIntField
#endif
#ifdef JNI_SetField
#undef JNI_SetField
#else
#define JNI_SetField SetIntField
#endif
#include "JAVA_CallField.h"
//JNI_Long
#ifdef JNI_FieldType
#undef JNI_FieldType
#else
#define JNI_FieldType JNI_Long
#endif
#ifdef JNI_GetField
#undef JNI_GetField
#else
#define JNI_GetField GetLongField
#endif
#ifdef JNI_SetField
#undef JNI_SetField
#else
#define JNI_SetField GetLongField
#endif
#include "JAVA_CallField.h"
//JNI_Float
#ifdef JNI_FieldType
#undef JNI_FieldType
#else
#define JNI_FieldType JNI_Float
#endif
#ifdef JNI_GetField
#undef JNI_GetField
#else
#define JNI_GetField GetFloatField
#endif
#ifdef JNI_SetField
#undef JNI_SetField
#else
#define JNI_SetField SetFloatField
#endif
#include "JAVA_CallField.h"
//JNI_Double
#ifdef JNI_FieldType
#undef JNI_FieldType
#else
#define JNI_FieldType JNI_Double
#endif
#ifdef JNI_GetField
#undef JNI_GetField
#else
#define JNI_GetField GetDoubleField
#endif
#ifdef JNI_SetField
#undef JNI_SetField
#else
#define JNI_SetField SetDoubleField
#endif
#include "JAVA_CallField.h"
#if defined(JNI_SetField)
#undef JNI_SetField
#endif //#if defined(JNI_SetField)
#if defined(JNI_GetField)
#undef JNI_GetField
#endif //#if defined(JNI_GetField)
#if defined(JNI_FieldType)
#undef JNI_FieldType
#endif //#if defined(JNI_FieldType)
#endif // !defined(__JAVA_Field_h__)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -