filename=ruby.h
macro=true
private=false
type=VALUE
name=Data_Make_Struct
params=(VALUE klass, type, RUBY_DATA_FUNC mark, RUBY_DATA_FUNC free, type *svar)


type 型の構造体をヒープに割り当ててそれへのポインタを
svar に代入し、クラス klass のインスタンスである
Ruby のオブジェクトを生成し、それを返します。mark
free はそれぞれマーク用・解放用の関数へのポインタです。
どちらも、必要ないときはかわりに 0 を渡します。

また RUBY_DATA_FUNC の定義は以下のようです。

    typedef void (*RUBY_DATA_FUNC)(void *st)

第一引数 st には svar の値が渡されます。

使用例

    struct mytype {
        int i;
        char *s;
    };

    VALUE
    my_s_new(klass)
        VALUE klass;
    {
        struct mytype *dummy;
        return Data_Make_Struct(MyClass, struct mytype,
                                mark_my, free_my, dummy);
    }

