31 July 2009

SWIGでの、デフォルト引数がある関数の指定方法

SWIGで、例えばこういうデフォルト引数のある関数を、%renameとか%ignoreとかで指定するとき、

int foo(int a, int b = 0, int c = 1, int d = 2);

いままではこんな風に引数の数に応じて一個ずつ指定していたんですが、

%rename(foo1) foo(int a);
%rename(foo2) foo(int a, int b);
%rename(foo3) foo(int a, int b, int c);
%rename(foo4) foo(int a, int b, int c, int d);

こうやって引数を省略することで、全部いっぺんに指定できるんですね。

%rename(foo1) foo;

上のいっこいっこ指定するやり方だと、引数の数に応じてどれを呼ぶかっていう処理を自分で書かなきゃいけなくて、かなり面倒だったんですが、下のいっぺんに指定するやり方だと、引数の処理は今まで通り自動生成されたラッパーコードがやってくれます。

うーんいままで無駄してきたなあ…

「30分はまったらいったん切りかえるルール」はどうか

はまってしまった時の対応をルーチン化する試み。

  • 30分はまったら一旦席を立つ
  • だるくなってはてぶ、twitter、tumblrなどをみだしたら一旦席を立つ
  • 以下の項目を明らかにする。
    • 現象
    • 求める結果
    • 原因(仮説)
    • 解決法、検証法
    • 次に取るべき行動
  • 散歩する