4

我编写了一种将数据存储在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)?

谢谢您的帮助!

4

0 回答 0