Re: [Vala] help with writting vapi...
- From: Andre Masella <andre masella name>
- To: Vala List <vala-list gnome org>
- Subject: Re: [Vala] help with writting vapi...
- Date: Mon, 23 Nov 2015 09:12:34 -0500
I would extend this idea to make it a little easier to write for the user:
Create a binding as follows:
[SimpleType]
[CCode(cname = "struct timeval")]
private struct TimeVal {
[CCode(cname = "*")]
public static TimeVal(Posix.timeval v);
}
private Redis.Context redisConnectWithTimeout(string ip, int port, TimeVal
tv);
public Redis.Context connect_with_timeout(string ip, int port,
Posix.timeval tv) {
return redisConnectWithTimeout(ip, port, TimeVal(tv));
}
This will pass the time val as a pointer and then create a second struct
that is really just a dereference operation.
I don't know if there's an easy way to use GLib.TimeVal instead of
Posix.timeval or if they are guaranteed to be compatible of every machine.
On 22 November 2015 at 21:01, Evan Nemerson <evan coeus-group com> wrote:
On Sun, 2015-11-22 at 16:07 +0800, Matrix wrote:
Hi :
i'm writting hiredis vala's binding..
here is a function like this:
redisContext *redisConnectWithTimeout(const char *ip, int port, const
struct timeval tv);
so, how to tell the valac that the 3rd param is struct value not
struct
pointer?
Unfortunately, this is done on a per-type basis, and virtually everyone
passes struct timeval as a pointer so that's what the bindings assume.
Before seeing this function, I don't know that I've ever seen it passed
as anything but a pointer.
AFAIK the only way to do this would be to create a local binding for
struct timeval (in the redis vapi) with a [SimpleType] annotation on
it, and have redis use that type instead of the one in glib-2.0.
FWIW it might be possible to add an annotation to allow for passing a
non-SimpleType struct as a value. I don't spend much time in the
compiler, but I believe a small change to
valaccodemethodcallmodule.vala would do the trick.
-Evan
_______________________________________________
vala-list mailing list
vala-list gnome org
https://mail.gnome.org/mailman/listinfo/vala-list
--
--Andre Masella<andre masella name>
http://www.masella.name/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]