Jan 2, 2008

引き続き拡張ライブラリ


数学関数はとりあえず
  • 3/4次元ベクトル
  • 4x4行列
まで実装。あとは3x3行列とクォータニオンがあれば結構使い物になりそう。
でもテストは一個も書いてませんが何か。
CppUnit ならわかるのですが、 Ruby でのテスト方法ってどうなってるんでしょう。
今日は Ruby 1.8.6 ( One-Click Ruby Installerの 1.8.6-26 )向けにビ ルドしようとしたら、1.9.0と微妙に違う点があることに気付いたので何点かメ モ:

ruby.h の場所

(Ruby 1.8.6) $(RUBY)/lib/ruby/1.8/i386-mswin32/ruby.h
(Ruby 1.9.0) $(RUBY)/include/ruby-1.9.0/ruby.h
1.9になって、インクルードファイルがちゃんと include/の下に配置さ れるようになった模様。

マクロの有無

構造体メンバへのアクセスを隠蔽するマクロが 1.8 時代には無かった模様。
/* Ruby 1.8 対策 (RFLOAT_VALUEマクロが無いので) */
#ifndef RFLOAT_VALUE
#define RFLOAT_VALUE(v) (RFLOAT(v)->value)
#endif
/* Ruby 1.8 対策 (DOUBLE2NUMマクロが無いので) */
#ifndef DOUBLE2NUM
#define DOUBLE2NUM(dbl) rb_float_new(dbl)
#endif
…まるで Antinews を書いてる気分ですね。