Re: [Vala] Generating bindings for non-GLib/GObject based API



Hello,

2010/4/22 Michael Wild <themiwi users sourceforge net>:
I don't understand this, does the function still alocate the instance,
or does it just initialize it?

It does both, it just doesn't return the result in the return argument, but in one of the parameters. I 
found an example with the same issue, but I don't understand how Vala can be doing the right thing. Looking 
at zlib.vapi I see

[CCode (cname = "z_stream", destroy_function = "deflateEnd")]
public struct DeflateStream : Stream {
   [CCode (cname = "deflateInit")]
   public DeflateStream (int level = Level.DEFAULT_COMPRESSION);
   // ...
}

but deflateInit has the following (sanitized) signature:

int deflateInit(z_stream *strm, int level);

How does Vala know that it must pick the first argument and not the return value?
Because the function doesn't allocate the struct, only initializes it.
So it's used :

z_stream strm;
deflateInit(&strm, ...);

this way you have to declare your type as a struct (and not a class).

HTH,
Abderrahim



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