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

📄 java_staticfield.h

📁 C调用Java的一个例子程序
💻 H
字号:
// JAVA_StaticField.h: interface for the JAVA_StaticField class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(__JAVA_StaticField_h__)
#define __JAVA_StaticField_h__


#include "Java_Object.h"
#include "Java_Class.h"
#include "JAVA_VM.H"
#include "JAVA_Config.h"
struct s_JAVA_StaticField{
	s_JAVA_StaticField();
	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_StaticField_Base
{
public:
	bool	loadField(JAVA_Object & _object,const char* name,const char * sig)
	{
		return m_Field.loadField(_object,name,sig);
	}
protected:
	s_JAVA_StaticField  m_Field;
};


template<typename _Type = JNI_Object>
class JAVA_StaticField  : public JAVA_StaticField_Base
{
public:
	typedef		_Type  _FieldType;

	_FieldType   get()
	{
		return m_Field.m_lpEnv->GetStaticObjectField(m_Field.m_Class,m_Field.m_FieldID);
	}

	JNI_Void	set(const _FieldType& _FieldValue)
	{
		m_Field.m_lpEnv->SetStaticObjectField(m_Field.m_Class,m_Field.m_FieldID,_FieldValue);
	}

};


#define  loadJavaStaticField(m,name,sig)  if(!(m).loadField(*this,name,sig))\
											{ SHOWMESSAGE("JavaField:" ## name ## " " ## sig ## " unload!");return false;}




/*
//JNI_Object

#ifdef JNI_StaticFieldType
#undef JNI_StaticFieldType
#endif

#ifdef JNI_GetStaticField
#undef JNI_GetStaticField
#endif


#ifdef JNI_SetStaticField
#undef JNI_SetStaticField
#endif

#define JNI_StaticFieldType	JNI_Object
#define JNI_GetStaticField	GetStaticObjectField
#define JNI_SetStaticField	SetStaticObjectField
#include "JAVA_CallStaticField.h"


*/


//JNI_Boolean
#ifdef JNI_StaticFieldType
#undef JNI_StaticFieldType
#endif

#ifdef JNI_GetStaticField
#undef JNI_GetStaticField
#endif

#ifdef JNI_SetStaticField
#undef JNI_SetStaticField
#endif

#define JNI_SetStaticField	SetStaticBooleanField
#define JNI_StaticFieldType	JNI_Boolean
#define JNI_GetStaticField	GetStaticBooleanField


#include "JAVA_CallStaticField.h"


//JNI_Byte
#ifdef JNI_StaticFieldType
#undef JNI_StaticFieldType
#endif


#ifdef JNI_GetStaticField
#undef JNI_GetStaticField
#endif



#ifdef JNI_SetStaticField
#undef JNI_SetStaticField
#endif

#define JNI_GetStaticField	GetStaticByteField
#define JNI_StaticFieldType	JNI_Byte
#define JNI_SetStaticField	SetStaticByteField

#include "JAVA_CallStaticField.h"



//JNI_Char
#ifdef JNI_StaticFieldType
#undef JNI_StaticFieldType
#endif

#ifdef JNI_GetStaticField
#undef JNI_GetStaticField
#endif

#ifdef JNI_SetStaticField
#undef JNI_SetStaticField
#endif

#define JNI_SetStaticField	SetStaticCharField
#define JNI_StaticFieldType	JNI_Char
#define JNI_GetStaticField	GetStaticCharField
#include "JAVA_CallStaticField.h"



//JNI_Short
#ifdef JNI_StaticFieldType
#undef JNI_StaticFieldType
#endif

#ifdef JNI_GetStaticField
#undef JNI_GetStaticField
#endif

#ifdef JNI_SetStaticField
#undef JNI_SetStaticField
#endif

#define JNI_SetStaticField	SetStaticShortField
#define JNI_GetStaticField	GetStaticShortField
#define JNI_StaticFieldType	JNI_Short

#include "JAVA_CallStaticField.h"

//JNI_Int
#ifdef JNI_StaticFieldType
#undef JNI_StaticFieldType
#endif

#ifdef JNI_GetStaticField
#undef JNI_GetStaticField
#endif

#ifdef JNI_SetStaticField
#undef JNI_SetStaticField
#endif

#define JNI_SetStaticField	SetStaticIntField
#define JNI_StaticFieldType	JNI_Int
#define JNI_GetStaticField	GetStaticIntField


#include "JAVA_CallStaticField.h"

//JNI_Long
#ifdef JNI_StaticFieldType
#undef JNI_StaticFieldType
#endif


#ifdef JNI_GetStaticField
#undef JNI_GetStaticField
#endif


#ifdef JNI_SetStaticField
#undef JNI_SetStaticField
#endif

#define JNI_SetStaticField	SetStaticLongField
#define JNI_GetStaticField	GetStaticLongField
#define JNI_StaticFieldType	JNI_Long

#include "JAVA_CallStaticField.h"

//JNI_Float
#ifdef JNI_StaticFieldType
#undef JNI_StaticFieldType
#endif

#ifdef JNI_GetStaticField
#undef JNI_GetStaticField
#endif


#ifdef JNI_SetStaticField
#undef JNI_SetStaticField
#endif

#define JNI_StaticFieldType	JNI_Float
#define JNI_GetStaticField	GetStaticFloatField
#define JNI_SetStaticField	SetStaticFloatField

#include "JAVA_CallStaticField.h"



//JNI_Double
#ifdef JNI_StaticFieldType
#undef JNI_StaticFieldType
#endif

#ifdef JNI_GetStaticField
#undef JNI_GetStaticField
#endif

#ifdef  JNI_SetStaticField
#undef  JNI_SetStaticField
#endif

#define JNI_GetStaticField	GetStaticDoubleField
#define JNI_SetStaticField	SetStaticDoubleField
#define JNI_StaticFieldType	JNI_Double

#include "JAVA_CallStaticField.h"




#if defined(JNI_SetStaticField)
#undef  JNI_SetStaticField
#endif //#if defined(JNI_SetStaticField)

#if defined(JNI_GetStaticField)
#undef  JNI_GetStaticField
#endif //#if defined(JNI_GetStaticField)


#if defined(JNI_StaticFieldType)
#undef  JNI_StaticFieldType
#endif //#if defined(JNI_StaticFieldType)

#endif // !defined(__JAVA_StaticField_h__)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -