Daniel Berger
10/1/2006 12:56:00 PM
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 "<stdlib.h>"
>
> 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 "<test.h>"
> 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