global rb_funcall

S

Simon Kröger

Hi,

i'm embedding ruby into a C++, how do i call _global_ functions from C?

like

rb_funcall2(??, rb_intern("test"), 0, NULL);

thanks

Simon
 
E

Eero Saynatkari

=?ISO-8859-1?Q?Simon_Kr=F6ger?= said:
Hi,

i'm embedding ruby into a C++, how do i call _global_ functions from C?

like

rb_funcall2(??, rb_intern("test"), 0, NULL);

thanks

All of the global methods become singleton methods of
the top-level Object object, so you should be able to
refer to rb_cObject (I am unable to test). If that
does not work, see if README.EXT provides any clues.


E
 
S

Simon Kröger

Eero said:
All of the global methods become singleton methods of
the top-level Object object, so you should be able to
refer to rb_cObject (I am unable to test). If that
does not work, see if README.EXT provides any clues.





E

I was thinking of that possibility and dismissed the thought because
"thats the class, not the object..". Well, from time to time my past
trips me up.

Thanks !

Simon
 
N

nobuyoshi nakada

Hi,

At Tue, 27 Dec 2005 07:55:32 +0900,
Eero Saynatkari wrote in [ruby-talk:172589]:
All of the global methods become singleton methods of
the top-level Object object, so you should be able to
refer to rb_cObject (I am unable to test). If that
does not work, see if README.EXT provides any clues.

They are private instance methods of Object.

$ ruby -e 'def foo;end; p Object.private_instance_methods.grep(/foo/)'
["foo"]

So the receiver is not a matter,

rb_funcall2(Qnil, rb_intern("test"), 0, NULL);
rb_funcall2(INT2FIX(999), rb_intern("test"), 0, NULL);
rb_funcall2(rb_cArray, rb_intern("test"), 0, NULL);
rb_funcall2(rb_str_new(0, 0), rb_intern("test"), 0, NULL);
rb_funcall2(rb_ary_new(), rb_intern("test"), 0, NULL);
rb_funcall2(rb_hash_new(), rb_intern("test"), 0, NULL);
rb_funcall2(rb_module_new(), rb_intern("test"), 0, NULL);

all work.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top