You're close. valac doesn't handle this very well because of the anonymous structs in the C API. It wants to assign to temporary variables even when all you're doing is accessing fields, and since they're structs the temporary variables aren't pointers, which will cause the CC to complain (even though the types are compatible). You can use pointers to assign temporary variables in vala to work around this:
Cairo.Path path = cr.copy_path ();
int i = 0;
while ( i < path.num_data ) {
unowned Cairo.PathData? data = path.data[i];
Cairo.PathDataHeader* header = &(path.data[i].header);
switch (header->type) {
case Cairo.PathDataType.MOVE_TO:
Cairo.PathDataPoint* point = &(path.data[i + 1].point);
do_move_to_things (point.x, point.y);
break;
}
i += header.length;
}
I didn't bother with the other cases in the switch—you should get the
idea.
-Evan
On Tue, 2013-10-15 at 14:45 -0600, Shawn Ferris wrote:
> nevermind.. I just noticed that's wrong too :D
>
>
> On Tue, Oct 15, 2013 at 2:42 PM, Shawn Ferris <[email protected]>wrote:
>
> > On Tue, Oct 15, 2013 at 12:48 PM, Donn Ingle <[email protected]> wrote:
> >
> >> > array.. A quick glance at the cairo vapi, and I think you really want
> >> this?:
> >> > Cairo.PathData[] data = path.data;
> >>
> >> I feel disturbed by that ;) Not sure why.
> >>
> >> The code I'm trying to Vala-ize is here:
> >> http://cairographics.org/manual/cairo-Paths.html#cairo-path-data-t
> >>
> >>
> > Ahh.. this makes a bit more sense.. I still don't know if this is the
> > correct way, but...
> >
> > Cairo.PathData[] data;
> >
> > for (int i = 0; i < this.path.num_data; i +=
> > this.path.data[i].header.length) {
> >
> > var data = &this.path.data[i];
> >
> > Shawn
> >
> _______________________________________________
> vala-list mailing list
> [email protected]
> https://mail.gnome.org/mailman/listinfo/vala-list
signature.asc
Description: This is a digitally signed message part
_______________________________________________ vala-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/vala-list
