Re: [Vala] A problem with a vapi file

On Fri, Mar 4, 2011 at 6:15 PM, Luca Dionisi <luca dionisi gmail com> wrote:
We have a library with these sources:
 libfoo.c   []
 libfoo.h   []

Now I would like to use the library in vala with an interface like this:
 test_foo.vala   []
and I tried with the following vapi:
 libfoo.vapi     []

With this vapi the generated C file is the following:
 test_foo.c      []

The difference with the first C file is that the variable that is used
to carry a "Foo" object is of type foo_t*, while it should be a foo_t.

What do I have to change in the vapi file to obtain a mapping more precise?

The problem is that you are using a typedef'd pointer. Is there any
reason you need to use this typedef within Vala? Since "foo_t" is just
an alias for "struct foo_st*", just set the cname for your Foo class
to "struct foo_st" instead of "foo_t". Vala will now output the

void _vala_main (void) {
        struct foo_st* x;
        x = foo_new (3, 4);
        fprintf (stdout, "%d\n", foo_sum (x));
        _foo_destroy0 (x);

Which is just what your library expects, and I tried running this
code, and there are no compiler warnings and no errors:

$ valac --vapidir . --pkg foo -X -I. footest.vala libfoo.c
$ ./test

Hope that helps,
Alexander Krivács Schrøder

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]