[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

passing proc objects to ruby extensions

Stuart Trail

5/26/2007 5:04:00 PM

Hi list! Its a been a while since I was around here, but I remember it
being the place to ask these sorts of questions, especially since Yarv
has now merged into real Ruby.

How does a proc object get passed when writing a ruby extension in c?
ie

**Ruby**
a = Proc.new{|z| z*2}
f(a)

**C**
void f(VALUE a){
switch(TYPE(a)){
...
}
}


None of the usual types match. What is 'a' here? There doesn't seem to
be a struct for Procs in ruby.h. Might it be a pointer to the iseq
struct? :)

(FTR, I'm mesing around with what is now quite an old build -
yarv-0.4.1, I'm hoping it hasn't changed much since the merge?)

warm regards,
stu

--
Posted via http://www.ruby-....

1 Answer

Nobuyoshi Nakada

5/27/2007 6:36:00 AM

0

Hi,

At Sun, 27 May 2007 02:04:24 +0900,
Stuart Trail wrote in [ruby-talk:253118]:
> How does a proc object get passed when writing a ruby extension in c?

> None of the usual types match. What is 'a' here? There doesn't seem to
> be a struct for Procs in ruby.h. Might it be a pointer to the iseq
> struct? :)

T_DATA.

See rb_obj_is_proc() in proc.c.

--
Nobu Nakada