2015-11-10 3 views
0

En supposant que je nested.i comme:javaimports de TypeMap ne fonctionne pas pour la classe C++ intérieure

%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); 
    }; 
}; 

et essayer de générer Java comme

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

En tant que l'importation et les modificateurs résultat 3 sont apparus à l'exception Outer::Inner class .

Environnement: 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 

Répondre

0

javaimports n'ajouter du code à la section importer, et pendant que vous envelopper classe imbriquée, il est situé à l'intérieur de fichier unique et partager même comprend. javaimports pour la classe imbriquée est ignorée.


personnellement pour la documentation de la classe i utiliser javaclassmodifiers comme ceci:

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

en cas de classe interne, il génère:

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

qui est pas très agréable, il compile, mais javadoc n'est pas généré pour cette classe.