Hi.
I’m converting some of my ruby code to C extension for better perfomance.
I ran into problems with executing methods that take blocks.
I.e. in ruby i have
string.gsub!(/regexp/) { |subst| … }
and i can’t find the way to translate it to C. I tried to search through
ruby-talk archives, but I couldn’t find anything usefull.
As far as I was looking at problem, I found rb_iterate, rb_yield, but I
couldn’t clearly understand what’s their purpose, and how to get them all
together to achieve what I want.
Could somebody please explain me how can I implement this ruby code in C?
I’d really appreciate any help. Thanks in advance!
As far as I was looking at problem, I found rb_iterate, rb_yield, but I
couldn't clearly understand what's their purpose, and how to get them all
together to achieve what I want.
Look in enum.c in the distribution of ruby, you have examples for call to
rb_iterate
On Sat, Nov 22, 2003 at 10:34:27PM +0900, Dmitry V. Sabanin wrote:
Hi.
I’m converting some of my ruby code to C extension for better perfomance.
I ran into problems with executing methods that take blocks.
I.e. in ruby i have
string.gsub!(/regexp/) { |subst| … }
and i can’t find the way to translate it to C. I tried to search through
ruby-talk archives, but I couldn’t find anything usefull.
As far as I was looking at problem, I found rb_iterate, rb_yield, but I
couldn’t clearly understand what’s their purpose, and how to get them all
together to achieve what I want.
Could somebody please explain me how can I implement this ruby code in C?
I’d really appreciate any help. Thanks in advance!
On Saturday 22 November 2003 21:55, Mauricio Fernández wrote:
On Sat, Nov 22, 2003 at 10:34:27PM +0900, Dmitry V. Sabanin wrote:
Hi.
I’m converting some of my ruby code to C extension for better perfomance.
I ran into problems with executing methods that take blocks.
I.e. in ruby i have
string.gsub!(/regexp/) { |subst| … }
and i can’t find the way to translate it to C. I tried to search through
ruby-talk archives, but I couldn’t find anything usefull.
As far as I was looking at problem, I found rb_iterate, rb_yield, but I
couldn’t clearly understand what’s their purpose, and how to get them all
together to achieve what I want.
Could somebody please explain me how can I implement this ruby code in C?
I’d really appreciate any help. Thanks in advance!
I was surprised to see that rb_funcall propagates the block passed with
rb_iterate, so there’s 2 solutions (attached).
–
sdmitry -=- Dmitry V. Sabanin
MuraveyLabs.