У меня есть класс Foo
который два параметра в CTOR:Java-SWIG и vtkSmartPointer
typedef vtkSmartPointer<vtkRenderer> t_renderer;
typedef vtkSmartPointer<vtkRenderWindow> t_rwindow;
typedef vtkSmartPointer<vtkRenderWindowInteractor> t_interactor;
class Foo {
public:
Foo(renderer> ren, interactor inter);
// ...
}
// Usage:
t_renderer ren = t_renderer::New();
t_rwindow rwin = t_rwindow::New();
t_interactor inter = t_interactor::New();
Foo f(ren, inter);
f.method1();
// ...
С SWIG Я хотел бы иметь то же самое в Java:
vtkRenderer ren = new vtkRenderer();
// ...
Foo f = new Foo(ren, inter);
f.method1();
// ...
Проблема заключается в том , что SWIG генерирует два файла:
- SWIGTYPE_p_vtkSmartPointerT_vtkRenderer_t.java
- SWIGTYPE_p_vtkSmartPointerT_vtkRenderWindowInteractor_t.java
Также ява т е р о Foo выглядит следующим образом:
public Animator(SWIGTYPE_p_vtkSmartPointerT_vtkRenderer_t renderer, SWIGTYPE_p_vtkSmartPointerT_vtkRenderWindowInteractor_t inter) {
...
}
Так что мой вопрос: Как я могу избежать этого в SWIG? Мой файл интерфейса:
%module(directors="1", allprotected="1") swiganimator
%include <std_string.i>
%include <std_shared_ptr.i>
%{
#include <memory>
#include <string>
#include "Foo.hpp"
%}
%shared_ptr(OtherType)
%include "Foo.hpp"
Надеюсь, вы не сможете решить проблему, описанную здесь.