[英]SWIG C++ List to Java
我正在尝试使用SWIG来包装C ++,它定义了像这样的对象的LIST
typedef std::list<Country> CountryList;
我在接口文件中究竟需要具备什么才能适应这种情况?
谢谢,
插口
您只需将以下内容添加到swig界面文件中:
%include "std_list.i"
%include "Country.h" /* or declaration of Country */
%template(Country_List) std::list<Country>;
编辑:我不知道swig没有为Java提供std_list.i
来包装std::list
。 看一下为std::vector
提供的那个,这可以适应std::list
。 请注意,大多数功能都不可用,因为您确实希望使用迭代器来访问列表元素。 无论如何,这里是:
std_list.i
%include <std_common.i>
%{
#include <list>
#include <stdexcept>
%}
namespace std {
template<class T> class list {
public:
typedef size_t size_type;
typedef T value_type;
typedef const value_type& const_reference;
list();
list(size_type n);
size_type size() const;
%rename(isEmpty) empty;
bool empty() const;
void clear();
const_reference back();
%rename(add) push_back;
void push_back(const value_type& x);
void pop_back();
};
}
您可能希望将其转换为Java中的相应列表,而不是包装std::list<Country>
。 但是,为此,您需要编写适当的类型映射 。
std_list
尚未在“最新版本”(痛饮-3.0.12)可以从下载 ,但已经在GitHub上的主分支 。 您可以下载并使用( %include
)它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.