Open ima1zumi opened 2 years ago
ruby.hではTYPE()というマクロが定義されていて,VALUEのデータ タイプを知ることが出来ます.TYPE()マクロは上で紹介したT_XXXX の形式の定数を返します.VALUEのデータタイプに応じて処理する 場合には,TYPE()の値で分岐することになります.
char を取り出す場合, StringValue() と StringValuePtr() を使います. StringValue(var) は var が String であれば何もせず,そうでなければ var を var.to_str() の結果 に置き換えるマクロ,StringValuePtr(var) は同様に var を String に置き換えてから var のバイト列表現に対する char を 返すマクロです.var の内容を直接置き換える処理が入るので, var は lvalue である必要があります. また,StringValuePtr() に類似した StringValueCStr() というマ クロもあります.StringValueCStr(var) は var を String に置き 換えてから var の文字列表現に対する char* を返します.返され る文字列の末尾には NUL 文字が付加されます.なお,途中に NUL 文字が含まれる場合は ArgumentError が発生します. 一方,StringValuePtr() では,末尾に NUL 文字がある保証はなく, 途中に NUL 文字が含まれている可能性もあります.
Rubyのプログラムをevalする CからRubyの機能を呼び出すもっとも簡単な方法として,文字列で 与えられたRubyのプログラムを評価する以下の関数があります. VALUE rb_eval_string(const char *str)
次: string.c の関数を呼び出せるようにしたい
結構疲れがたまっている。 要因が一つに絞り込めないのでざっと書いてみる
RubyKaigiは進捗出すのが一番の癒やしになるのだが、まとまった時間取れてなくてうぎぎとなっている。休日ぼけっとしてるとすぐ終わってしまう 寝不足感はあるなー。運動不足もありそう。平日は家からほとんど出ない日もある