我编写了一个小数据类型,用于将数据存储在char
数组中。以下是头文件中的基本定义:
class SimpleBuffer {
public:
...
const char* getData();
int getSize();
private:
char* data;
};
我希望getData()
在Java中将其表示的副本作为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
变量,它是传递给JNI函数的SimpleBuffer
指针。有一个更好的方法吗? SWIG是否定义了一个$
变量来访问传递给JNI函数的类(即arg1
)?
感谢您的帮助!