Typemap javaimports不适用于内部C ++类

时间:2015-11-10 08:38:12

标签: java c++ swig inner-classes nested-class

假设我有nested.i喜欢:

%typemap(javaimports) Outer "
/**
* Outer class
*/"

%typemap(javaimports) Outer::Inner "
/**
* Outer::Inner class
*/"

%javamethodmodifiers Outer::outer_method(int) "
  /**
  * Outer::outer_method(int)
  */
  public";

%javamethodmodifiers Outer::Inner::inner_method(int) "
  /**
  * Outer::Inner::inner_method(int)
  */
  public";

struct Outer {
  int outer_method(int);
  struct Inner {
    int inner_method(int);
  };
};

并尝试生成类似

的Java
$ swig -java -c++ -module Sample nested.i

结果,除了Outer::Inner class之外,还出现了3个导入和修改器。

环境:MS Windows 7

$ swig -version

SWIG Version 3.0.7

Compiled with i586-mingw32msvc-g++ [i586-pc-mingw32msvc]

Configured options: +pcre

Please see http://www.swig.org for reporting bugs and further information

1 个答案:

答案 0 :(得分:0)

javaimports确实为导入部分添加了代码,当你包装嵌套类时,它位于单个文件中并共享相同的包含。 <{1}}表示嵌套类被忽略。

个人对于课程文档,我使用javaimports,如下所示:

javaclassmodifiers

如果是内部类,它会生成:

%typemap(javaclassmodifiers) Outer::Inner "
/**
* Outer::Inner class
*/
public class";

这不是很好,它编译,但不为该类生成javadoc。