1

SWIG で 1 回の %rename 呼び出しで複数のフィルタを実行する方法はありますか?

マニュアルから、次のような行を使用できることを知っています。

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

これにより、「H3DFoo」などのすべてのメソッドが「Foo」に変わります。大文字と小文字の変換を行うための組み込みフィルターは他にもありますが、複数の手順を実行する方法に関するドキュメントはありません。

別の %rename を使用するとフィルターが置き換えられますが、文字列に対して複数のフィルターを実行するためのセパレーターが見つかりませんでした。したがって、型の大文字と小文字を変換する、プレフィックスを削除することは可能であり、両方ではないようです。

この特定のケースでは、正規表現フィルターを使用できる可能性がありますが、プレフィックス削除して型の大文字と小文字を変換できると便利です。もう 1 つのオプションは、すべての宣言に %rename を配置することですが、これは %rename を一般的なモジュールに適用できるという目的を無効にします。

4

1 に答える 1

0

%renameルールが単一のバリアントや正規表現よりも複雑な場合は、コマンドを呼び出すことができるバリアントを選択する傾向があると思います。

私は個人的に perl を使用しますが、名前の変更などのための多数の CPAN モジュールがあります。

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

マニュアルでは、これを実行するための生成プロセスが遅いため、これに対して警告しています。通常、SWIG をあまり頻繁に実行しないことを考えると、それが大きな欠点だとは思いません。

于 2012-11-03T17:09:03.543 に答える