filename=ruby.h
macro=true
private=false
type=char *
name=STR2CSTR
params=(VALUE str)


Ruby のオブジェクト str から C の文字列を取り出します。
str が String でない場合は to_str によって変換を試みます。

返り値を free したり直接書き換えたりしてはいけません。

STR2CSTR は、与えられたオブジェクトが文字列でなく to_str メソッ
ドを持つ場合、内部で to_str を呼び出して暗黙の型変換を行い、
それが保持する文字列ポインタを返します。
しかし、このAPIでは暗黙の型変換結果となるオブジェクトがどこからも
保持されないため、注意して使用しないと結果が GC される可能性があります。

Ruby 1.7 以降では代わりに [[f:StringValuePtr]] を使用します。こちら
は、引数の参照先が暗黙の型変換の結果に置き換わるため変換結果が GC
されません。(Ruby 1.7 では、STR2CSTR() は、obsolete です)

[[f:StringValue]] は、引数が to_str による暗黙の型変換を期待する
場合に使用します。

