2015-11-10 73 views
0

工作假设我有nested.i这样的:类型表javaimports不会为内部C++类

%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 

结果3进口和修饰符出现除了Outer::Inner class

环境:微软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 

回答

0

javaimports不添加代码导入部分,而你是包装嵌套类,它位于单独的文件中并共享相同的包含。嵌套类的javaimports被忽略。


亲自为类的文档,我使用javaclassmodifiers像这样:

在内部类的情况下
%typemap(javaclassmodifiers) Outer::Inner " 
/** 
* Outer::Inner class 
*/ 
public class"; 

它产生:

static 
    /** 
    * Outer::Inner class 
    */ 
    public class Inner 

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