RSTRING(str)->ptr と RSTRING(str)->len の ptr と len が無いそうだ。
RSTRING は、
#define RSTRING(obj) (R_CAST(RString)(obj))
のように定義されている。
obj って、VALUE 型だったんだっけ?
多分、R_CAST だし、キャストしてるんだろう。
RString が、Ruby での文字列の実体だったのか〜。
RString 構造体は、こんな風になっている:
struct RString { struct RBasic basic; union { struct { long len; char *ptr; union { long capa; VALUE shared; } aux; } heap; char ary[RSTRING_EMBED_LEN_MAX + 1]; } as; };
無いのは当然だ。
でも、ちょっと待って…
その下に、RSTRING_LEN とか、RSTRING_PTR がある。
ということは、置換すればいけるんじゃないか?
やってくる〜〜