有人可以帮助我使用SWIG typemap
的描述将uint32_t
类型的向量的锯齿状C ++向量转换为long的等效java锯齿向量吗?
这是我到目前为止在我的接口文件中所做的,我仍然需要在我的java端需要指针访问。
如果可能的话,会欣赏描述性代码。
感谢您的时间和帮助。
%include "std_vector.i"
%{
#define SWIG_JAVA_EXTRA_NATIVE_CONTAINERS
%}
%typemap(out) uint32_t %{ $result = (jlong)$1; %}
// Instantiate vector templates used by SimpleR
namespace std {
%template(IntVector) vector<int>;
%template(DoubleVector) vector<double>;
%template(LongVector) vector<uint32_t>;
%rename(LongVector) vector<uint32_t>;
%template(LongVectorVector) vector<vector<uint32_t> >;
%template(BooleanVector) vector<bool>;
%template(StringVector) vector<string>;
%template(ConstCharVector) vector<const char*>;
%template(RepresentationVector) vector<SimpleR::ModelRepresentation *>;
}
// In pop()
%typemap(out) std::vector<std::vector<uint32_t> >::value_type {
$result = SWIG_NewPointerObj(SWIG_as_voidptr(&$1), $descriptor(std::vector<uint32_t>), 0 | 0 );
}
// In front(), back(), __getitem__()
%typemap(out) std::vector<std::vector<uint32_t> >::value_type & {
$result = SWIG_NewPointerObj(SWIG_as_voidptr($1), $descriptor(std::vector<uint32_t>), 0 | 0 );
}