如何将指针包装到SWIG的指针?

时间:2014-11-11 04:08:47

标签: c++ c pointers swig

我看到了一个C库。它使用了许多指针和指针指针。并且在SWIG中生成大量的SWIGTYPE_p_p最初用于数组,用于获取指向数组和大小的指针的函数。所以我想生成简单的C ++存根类,如:

template<class T>
struct cArray {
    T* data = nullptr;
    size_t size = 0;

    viod Clear() {
        delete[] data;
    }

    void Generate(size_t n) {
        if(data != nullptr) {
             Clear();
        }
        size = n;
        data = new T[n];
    }

    T** GetPtr() {
        return &data;
    }

    operator T**() { return GetPtr(); }

    size_t GetSize() {
        return size;
    }

    T* GetElement(int index) {
         return &data[index];
    }
};

我希望SWIG替换/重新编写所有调用,如

extern AJ_API size_t getchildren(blaType *bla, object** children, size_t numChildren);

extern AJ_API size_t getchildren(blaType *bla, cArray<object> children, size_t numChildren);

所以它不会混淆并且不会生成SWIGTYPE_p_p...使用更少的包装器?

0 个答案:

没有答案