Ruby/DL2 Tips

すでにDL1を忘れそうになってるけどメモ。

まずDL1からDL2への移行Tips

  • DL::Import -> DL::Importer
  • r,rs = hogehoge() -> r = hogehoge()

rsの部分は直接hogehogeの引数の内容が変わるようになる(Pointer相当部分)。これによりstrcatとかの場合にchar *buffはこちらで確保したサイズが維持されるので\0以下を明示的に削除したりする処理が付け加わる。

次 structについて

  • 構造体をメンバーとして持つ構造体は未サポート。そろそろこれが切実に欲しくなってきました。DL1の時も未サポートだったけど、DL2になって大部分がrubyで書かれるようになったのでそろそろ手を入れてみようか。。。
  • a=struct(["int m[10]"]).mallocの時、a.m[2]=1は意味を成さない。a.mの時点でArrayに代入されたコピーになるため。tmp=a.m;tmp[2]=1;a.m=tmpと書く必要がある。ここはなんとかならないかな?CArrayとかでっち上げてあげてみるとか。
  • a=struct(["char buff[3]"]).mallocの時、a.buff="ab"の意味がかわってる。DL1の時は確か[?a,?b,0]の意味だったがDL2は配列の数が合わずにエラーになる。a.buff="ab\0"のように明示的にNULL文字を入れる。

他 Web上の参考になる情報

間違ってたら誰か突っ込みお願いします。。。
後、こんなのもよくひっかかるとか。