在Ruby C扩展中调用proc

时间:2013-12-31 17:13:00

标签: c ruby ansi proc ruby-c-extension

我有以下结构:

typedef struct{
    int a;
    int (*init)(void);
} tObj;

我将它包装到Ruby中的对象'ObjExt'中。 Ruby初始化方法得到一个Proc'cb',它应该随时运行'init'函数在某处调用以生成一个整数。

类似的东西:

cb = Proc.new { 1 }
ruby_obj = ObjExt.new(cb)

我的第一个镜头是我将'cb'proc传递给全局VALUE类型变量并在我定义的包装函数“int(* wrapper)(void)”中运行rb_funcall,并且字面上指定了init =包装。但是如果我有多个ObjExt类的对象实例,那么这将不起作用,因为全局变量在实例之间共享,并在初始化第二个和第三个对象时被覆盖。

任何提示都将不胜感激。我可能以错误的方式解决问题。

0 个答案:

没有答案