我编写了一种将数据存储在char
数组中的小型数据类型。这是头文件中的基本定义:
class SimpleBuffer {
public:
...
const char* getData();
int getSize();
private:
char* data;
};
我想以 JavagetData()
的形式返回其表示形式的副本。byte[]
我的类型图如下所示:
%typemap(jstype) const char* SimpleBuffer::getData "byte[]"
%typemap(jtype) const char* SimpleBuffer::getData "byte[]"
%typemap(jni) const char* SimpleBuffer::getData "jbyteArray"
%typemap(out) const char* SimpleBuffer::getData {
$result = JCALL1(NewByteArray, jenv, arg1->getSize());
JCALL4(SetByteArrayRegion, jenv, $result, 0, arg1->getSize(), (const jbyte*)arg1->getData());
}
在编译时,我必须引用arg1
变量,它SimpleBuffer
是传递给 JNI 函数的指针。有一个更好的方法吗?SWIG 是否定义了一个$
变量来访问传递给 JNI 函数的类(即arg1
)?
谢谢您的帮助!