SWIG +%nspace:是否可以重命名/分割基本名称空间?

时间:2018-07-23 02:58:50

标签: java c++ namespaces rename swig

我正在研究针对Java(以及更高版本的Python)的C ++绑定。

我的课程是这样的(例如:mymodule.h

namespace BaseNS {
    class A {};
    class B {};

    namespace NestedNS {
        class C {};
        class D {};
    };
};

使用命名空间功能(%nspace%feature("nspace"))时,如下所示:

%module MyModule
%{
    #include "mymodule.h";
    using BaseNS;
%}

%feature("nspace");
%include "mymodule.h";

我得到以下Java绑定:

|- MyModule.java
|- MyModuleJNI.java
`- BaseNS
 |- A.java
 |- B.java
 `- NestedNS
   |- C.java
   |- D.java
  1. 有没有一种方法可以指示SWIG将BaseNS重命名为RenamedNS

我尝试通过以下方式插入%rename指令:

%rename (RenamedNS) BaseNS; // does not pick namespace
%rename (RenamedNS) ::BaseNS; // still does not work 
  1. 作为替代方案,是否有一种方法可以将BaseNS切掉,以产生如下所示的绑定:

    
    |- MyModule.java
    |- MyModuleJNI.java
    |- A.java
    |- B.java
    `- NestedNS
     |- C.java
     |- D.java
    

(仍然保留NestedNS,但从路径中删除BaseNS)。

谢谢。

0 个答案:

没有答案