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

📄 java_field.h

📁 封装了C++调用Java功能的功能!JNI,javaVM
💻 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 + -