Swig和%重命名过滤器

时间:2012-10-27 02:25:06

标签: swig

有没有办法在SWIG中的单个%重命名调用中运行多个过滤器?

我从手册中知道我可以使用这样的一行:

%rename("%(strip:[H3D])s") "";

将所有方法如“H3DFoo”变为“Foo”。还有其他内置过滤器用于进行大小写转换,但没有关于如何执行多个步骤的文档。

使用另一个%rename替换过滤器,我没有找到一个分隔符来对字符串运行多个过滤器。因此,似乎可以转换类型大小的删除前缀,而不是两者。

在这种特殊情况下,可能可以使用正则表达式过滤器,但能够同时删除前缀转换类型外壳会很好。另一种选择是在每个声明上放置一个%重命名,但是这会使%rename能够一般地应用于模块的目的失败。

1 个答案:

答案 0 :(得分:0)

我认为如果您的规则比单个变体或正则表达式更复杂,我倾向于选择可以调用命令的%rename变体。

我会亲自使用perl,它为things like renaming提供了大量的CPAN模块,例如:

%rename("command:perl build/rename.pl <<<")

手册warns against this因为它是执行它的缓慢产生过程。鉴于通常你不经常运行SWIG,我不认为这是一个巨大的退缩。