From: Daniel Berger Date: 2006-10-01T22:00:12+09:00 Subject: Re: Calling an existing method with RubyInline - how? Eric Hodel wrote: > On Sep 29, 2006, at 9:49 PM, Daniel Berger wrote: > > > How do you call an existing function from an included header file > > using > > RubyInline? Do I have to wrap it in a 'built' function? > > This should help: > > require 'inline' > > class Foo > inline do |builder| > builder.include "" > > builder.c <<-EOF > int c_atoi(char * nptr) { > return atoi(nptr); > } > EOF > > builder.c_singleton <<-EOF > int c_atol(char * nptr) { > return atol(nptr); > } > EOF > end > > class << self; alias atol c_atol; end > alias atoi c_atoi > > end > > puts Foo.atol("5") > puts Foo.new.atoi("5") > > > For example, say I have this bit of code, and that test.h has a > > function > > defined as "const char* test_version(void)". > > From your example, probably: > > require 'inline' > > class Foo > inline do |builder| > builder.include "" > builder.add_compile_flags "-ltest" > > builder.c_singleton <<-EOF > char * foo_test_version() { > return test_version(); > } > EOF > end > > class << self; alias version foo_test_version; end > end Hm, so I have to wrap each function with a custom generated function. Is there any chance of adding support for direct calls? Something like: inline{ "return test_version();" } Or is that just not possible? Thanks, Dan