2015-11-10 76 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不是爲該類生成的。