1

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

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

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

这会将所有方法(例如“H3DFoo”)转换为“Foo”。还有其他用于进行案例转换的内置过滤器,但没有关于如何执行多个步骤的文档。

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

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

4

1 回答 1

0

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

我会亲自使用 perl,它有大量的 CPAN 模块用于重命名之类的事情,例如:

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

手册对此提出警告,因为执行它的生成过程很慢。鉴于通常您不会经常运行 SWIG,我不认为这是一个巨大的缺点。

于 2012-11-03T17:09:03.543 回答