📄 java_array_template.h
字号:
/* ^_^
*
* Copyright (c) 2006 Hexin
*
* Description:
* TODO:
* Create:
* Date Time Author
* ------------------------------------------------
* 2006-3-22 14:05:58 XiaoWei
*/
/* ^_^
* Location :
* File : JAVA_Array_Template.h
* Version : 1.0.0.0
* Note :
*/
#if defined(JNI_ArrayType) && defined(JNI_ElementType) && defined(JNI_SetArrayRegion) && defined(JNI_NewArray) && defined(JNI_GetArrayElements) && defined(JNI_ReleaseArrayElements)
template<>
class JAVA_Array<JNI_ElementType> : public JAVA_Base
{
public:
typedef JNI_ElementType _ElementType;
private:
JNI_ArrayType m_array;
_ElementType* 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)
{
getentironment();
createArray(_size);
}
JAVA_Array(JNI_ArrayType _array)
{
getentironment();
m_size = 0;
m_array = _array;
m_elems = JNI_NULL;
}
~JAVA_Array()
{
destroyArray();
}
bool reSize(JNI_Size _rs)
{
JNI_Size __oldSize = m_size;
if (_rs <= __oldSize) {
return true;
}
JNI_ArrayType _array =getEnv()->JNI_NewArray(_rs);
if (_array) {
_getElements();
getEnv()->JNI_SetArrayRegion(_array,0,__oldSize,m_elems);
destroyArray();
m_elems = JNI_NULL;
m_array = _array;
m_size = _rs;
return true;
}
return false;
}
_ElementType getAt(JNI_Size _index)
{
_checkIndex(_index);
_getElements();
_ElementType _et= m_elems[_index];
return _et;
}
void setAt(JNI_Size _index,_ElementType _Value)
{
_checkIndex(_index);
getEnv()->JNI_SetArrayRegion(m_array,_index,1,&_Value);
m_elems = JNI_NULL;
}
_ElementType* getsAt(JNI_Size _index)
{
_checkIndex(_index);
_getElements();
return &m_elems[_index];
}
void setsAt(JNI_Size _index,_ElementType* _lpValue ,JNI_Size _size)
{
_checkIndex(_index);
getEnv()->JNI_SetArrayRegion(m_array,_index,_size,_lpValue);
m_elems = JNI_NULL;
}
bool createArray(JNI_Size _size)
{
JNI_ArrayType _array =getEnv()->JNI_NewArray(_size);
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()
{
if (m_size > 0) {
_getElements();
getEnv()->JNI_ReleaseArrayElements(m_array,m_elems,JNI_ABORT);
m_elems = JNI_NULL;
m_size = -1;
m_array = JNI_NULL;
}
}
operator JNI_ArrayType() const
{
return m_array;
}
JNI_ArrayType 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;
}
}
void _getElements()
{
if (m_elems == JNI_NULL) {
m_elems = getEnv()->JNI_GetArrayElements(m_array,0);
}
}
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -