📄 java_array.h
字号:
/* ^_^
*
* Copyright (c) 2006 Hexin
*
* Description:
* TODO:
* Create:
* Date Time Author
* ------------------------------------------------
* 2006-3-22 10:02:09 XiaoWei
*/
/* ^_^
* Location :
* File : JAVA_Array.h
* Version : 1.0.0.0
* Note :
*/
#if !defined(__JAVA_Array_h__)
#define __JAVA_Array_h__
//template<typename _Type>
//class JAVA_Array
//{};
#include "JAVA_Base.h"
template<typename _Type>
class JAVA_Array {};
//Int
#ifdef JNI_ArrayType
#undef JNI_ArrayType
#endif
#ifdef JNI_SetArrayRegion
#undef JNI_SetArrayRegion
#endif
#ifdef JNI_NewArray
#undef JNI_NewArray
#endif
#ifdef JNI_GetArrayElements
#undef JNI_GetArrayElements
#endif
#ifdef JNI_ReleaseArrayElements
#undef JNI_ReleaseArrayElements
#endif
#ifdef JNI_ElementType
#undef JNI_ElementType
#endif
#define JNI_ArrayType JNI_IntArray
#define JNI_ElementType JNI_Int
#define JNI_SetArrayRegion SetIntArrayRegion
#define JNI_NewArray NewIntArray
#define JNI_GetArrayElements GetIntArrayElements
#define JNI_ReleaseArrayElements ReleaseIntArrayElements
#include "JAVA_Array_Template.h"
//Long
#ifdef JNI_ArrayType
#undef JNI_ArrayType
#endif
#ifdef JNI_SetArrayRegion
#undef JNI_SetArrayRegion
#endif
#ifdef JNI_NewArray
#undef JNI_NewArray
#endif
#ifdef JNI_GetArrayElements
#undef JNI_GetArrayElements
#endif
#ifdef JNI_ReleaseArrayElements
#undef JNI_ReleaseArrayElements
#endif
#ifdef JNI_ElementType
#undef JNI_ElementType
#endif
#define JNI_ArrayType JNI_LongArray
#define JNI_ElementType JNI_Long
#define JNI_SetArrayRegion SetLongArrayRegion
#define JNI_NewArray NewLongArray
#define JNI_GetArrayElements GetLongArrayElements
#define JNI_ReleaseArrayElements ReleaseLongArrayElements
#include "JAVA_Array_Template.h"
//Float
#ifdef JNI_ArrayType
#undef JNI_ArrayType
#endif
#ifdef JNI_SetArrayRegion
#undef JNI_SetArrayRegion
#endif
#ifdef JNI_NewArray
#undef JNI_NewArray
#endif
#ifdef JNI_GetArrayElements
#undef JNI_GetArrayElements
#endif
#ifdef JNI_ReleaseArrayElements
#undef JNI_ReleaseArrayElements
#endif
#ifdef JNI_ElementType
#undef JNI_ElementType
#endif
#define JNI_ArrayType JNI_FloatArray
#define JNI_ElementType JNI_Float
#define JNI_SetArrayRegion SetFloatArrayRegion
#define JNI_NewArray NewFloatArray
#define JNI_GetArrayElements GetFloatArrayElements
#define JNI_ReleaseArrayElements ReleaseFloatArrayElements
#include "JAVA_Array_Template.h"
//Double
#ifdef JNI_ArrayType
#undef JNI_ArrayType
#endif
#ifdef JNI_SetArrayRegion
#undef JNI_SetArrayRegion
#endif
#ifdef JNI_NewArray
#undef JNI_NewArray
#endif
#ifdef JNI_GetArrayElements
#undef JNI_GetArrayElements
#endif
#ifdef JNI_ReleaseArrayElements
#undef JNI_ReleaseArrayElements
#endif
#ifdef JNI_ElementType
#undef JNI_ElementType
#endif
#define JNI_ArrayType JNI_DoubleArray
#define JNI_ElementType JNI_Double
#define JNI_SetArrayRegion SetDoubleArrayRegion
#define JNI_NewArray NewDoubleArray
#define JNI_GetArrayElements GetDoubleArrayElements
#define JNI_ReleaseArrayElements ReleaseDoubleArrayElements
#include "JAVA_Array_Template.h"
//Short
#ifdef JNI_ArrayType
#undef JNI_ArrayType
#endif
#ifdef JNI_SetArrayRegion
#undef JNI_SetArrayRegion
#endif
#ifdef JNI_NewArray
#undef JNI_NewArray
#endif
#ifdef JNI_GetArrayElements
#undef JNI_GetArrayElements
#endif
#ifdef JNI_ReleaseArrayElements
#undef JNI_ReleaseArrayElements
#endif
#ifdef JNI_ElementType
#undef JNI_ElementType
#endif
#define JNI_ArrayType JNI_ShortArray
#define JNI_ElementType JNI_Short
#define JNI_SetArrayRegion SetShortArrayRegion
#define JNI_NewArray NewShortArray
#define JNI_GetArrayElements GetShortArrayElements
#define JNI_ReleaseArrayElements ReleaseShortArrayElements
#include "JAVA_Array_Template.h"
//Char
#ifdef JNI_ArrayType
#undef JNI_ArrayType
#endif
#ifdef JNI_SetArrayRegion
#undef JNI_SetArrayRegion
#endif
#ifdef JNI_NewArray
#undef JNI_NewArray
#endif
#ifdef JNI_GetArrayElements
#undef JNI_GetArrayElements
#endif
#ifdef JNI_ReleaseArrayElements
#undef JNI_ReleaseArrayElements
#endif
#ifdef JNI_ElementType
#undef JNI_ElementType
#endif
#define JNI_ArrayType JNI_CharArray
#define JNI_ElementType JNI_Char
#define JNI_SetArrayRegion SetCharArrayRegion
#define JNI_NewArray NewCharArray
#define JNI_GetArrayElements GetCharArrayElements
#define JNI_ReleaseArrayElements ReleaseCharArrayElements
#include "JAVA_Array_Template.h"
//Byte
#ifdef JNI_ArrayType
#undef JNI_ArrayType
#endif
#ifdef JNI_SetArrayRegion
#undef JNI_SetArrayRegion
#endif
#ifdef JNI_NewArray
#undef JNI_NewArray
#endif
#ifdef JNI_GetArrayElements
#undef JNI_GetArrayElements
#endif
#ifdef JNI_ReleaseArrayElements
#undef JNI_ReleaseArrayElements
#endif
#ifdef JNI_ElementType
#undef JNI_ElementType
#endif
#define JNI_ArrayType JNI_ByteArray
#define JNI_ElementType JNI_Byte
#define JNI_SetArrayRegion SetByteArrayRegion
#define JNI_NewArray NewByteArray
#define JNI_GetArrayElements GetByteArrayElements
#define JNI_ReleaseArrayElements ReleaseByteArrayElements
#include "JAVA_Array_Template.h"
//Boolean
#ifdef JNI_ArrayType
#undef JNI_ArrayType
#endif
#ifdef JNI_SetArrayRegion
#undef JNI_SetArrayRegion
#endif
#ifdef JNI_NewArray
#undef JNI_NewArray
#endif
#ifdef JNI_GetArrayElements
#undef JNI_GetArrayElements
#endif
#ifdef JNI_ReleaseArrayElements
#undef JNI_ReleaseArrayElements
#endif
#ifdef JNI_ElementType
#undef JNI_ElementType
#endif
#define JNI_ArrayType JNI_BooleanArray
#define JNI_ElementType JNI_Boolean
#define JNI_SetArrayRegion SetBooleanArrayRegion
#define JNI_NewArray NewBooleanArray
#define JNI_GetArrayElements GetBooleanArrayElements
#define JNI_ReleaseArrayElements ReleaseBooleanArrayElements
#include "JAVA_Array_Template.h"
#ifdef JNI_ArrayType
#undef JNI_ArrayType
#endif
#ifdef JNI_SetArrayRegion
#undef JNI_SetArrayRegion
#endif
#ifdef JNI_NewArray
#undef JNI_NewArray
#endif
#ifdef JNI_GetArrayElements
#undef JNI_GetArrayElements
#endif
#ifdef JNI_ReleaseArrayElements
#undef JNI_ReleaseArrayElements
#endif
#ifdef JNI_ElementType
#undef JNI_ElementType
#endif
template<>
class JAVA_Array<JNI_Object> : public JAVA_Base
{
public:
typedef JNI_Object _ElementType;
private:
JNI_ObjectArray m_array;
JNI_Object* m_elems;
JNI_Size m_size;
public:
JAVA_Array()
{
getentironment();
m_size = -1;
m_array = JNI_NULL;
m_elems = JNI_NULL;
}
JAVA_Array(JNI_Size _size,JAVA_Class & _class,JAVA_Object & _object)
{
getentironment();
createArray(_size,_class,_object);
}
JAVA_Array(JNI_ObjectArray _array)
{
getentironment();
m_size = 0;
m_array = _array;
m_elems = JNI_NULL;
}
~JAVA_Array()
{
destroyArray();
}
_ElementType getAt(JNI_Size _index)
{
_checkIndex(_index);
return getEnv()->GetObjectArrayElement(m_array,_index);
}
void setAt(JNI_Size _index,_ElementType& _Value)
{
_checkIndex(_index);
getEnv()->SetObjectArrayElement(m_array,_index,_Value);
m_elems = JNI_NULL;
}
bool createArray(JNI_Size _size,JAVA_Class & _class,JAVA_Object & _object)
{
JNI_ObjectArray _array =getEnv()->NewObjectArray(_size,_class.getClass(),_object.getObject());
if (_array) {
m_size = _size;
m_elems = JNI_NULL;
m_array = _array;
return true;
}
m_size = _size;
m_elems = JNI_NULL;
m_array = JNI_NULL;
return false;
}
JNI_Size size() const
{
return m_size;
}
void destroyArray()
{
}
operator JNI_ObjectArray() const
{
return m_array;
}
JNI_ObjectArray getJniArray() const
{
return m_array;
}
protected:
void _checkIndex(JNI_Size &index)
{
if (index < 0) {
index = 0;
return;
}
JNI_Size __size = m_size;
if(index >= __size)
{
index = __size-1;
return;
}
}
};
#endif // !defined(__JAVA_Array_h__)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -