如何使用SWIG将(矢量图)C ++向量转换为Java

时间:2016-07-01 16:03:58

标签: java c++ swig

有人可以帮助我使用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 ); 
} 

0 个答案:

没有答案