用于Boost阵列的SWIG / Lua类型映射

时间:2012-09-17 02:56:27

标签: c++ boost lua swig

我正在尝试构建一个用于C ++ boost scoped_arrays的typemap(in)。我有C ++函数,它们使用了boost数组,但是我想把它们传递给Lua列表。

我见过Python的例子,但它们似乎包含太多特定于Python的代码。

有没有人得到帮助或指示一个例子让我开始?

1 个答案:

答案 0 :(得分:1)

你可以使用类似的东西:

%{
#include <boost/scoped_array.hpp>
%}

namespace boost {

template<class T>
class scoped_array {
public:
    scoped_array();
    ~scoped_array();

    void reset();
    void swap(scoped_array& b);

    %extend
    {
        scoped_array(unsigned n)
        {
            return new scoped_array<T>(new T[n]);
        }
        T __getitem__(unsigned int idx)
        {
            return (*self)[idx];
        }
        void __setitem__(unsigned int idx,T val)
        {
            (*self)[idx]=val;
        }
    };
};

}

作为起点。它暴露了boost::scoped_array的重要位,并且基于SWIG在其标准类型映射库中的std::vector实现。

它添加了特殊的成员函数和一个新的构造函数,它同时也分配了一些存储空间。它没有向SWIG显示某些定义,因为我无法在目标语言中看到它们的使用。

注意:我没有编译并检查了这个。 SWIG很满意它,生成的包装器看起来很清晰。