Re: [Vala] using a non-glib C library in vala
- From: Jan Hudec <bulb ucw cz>
- To: "Mr. Maxwell ." <mr_maxwell live com>
- Cc: vala-list gnome org
- Subject: Re: [Vala] using a non-glib C library in vala
- Date: Wed, 16 Sep 2009 06:49:27 +0200
On Tue, Sep 15, 2009 at 17:14:38 -0500, Mr. Maxwell . wrote:
What do I do with the typedef struct declarations? This is what I have but I don't think it's right.
c code
typedef struct { char _dummy; } ID3Tag;
They would have done better if they had
typedef struct _ID3Tag ID3Tag
It's clearly not the real type, so why on earth they pretend it's complete...
vala code
[CCode(cname = "typedef struct")]
public struct ID3Tag { private char _dummy; }
Given it's not the real type, it can't be a struct, because it can't be
allocated on the stack. You were already told the correct solution -- you
even quoted it below.
On Tue, 15 Sep 2009 18:14:24 -0300 mfpuente ar gmail com wrote:
if the namespace will be called Id3 you can do this
[Compact]
[CCode (cname="ID3Tag")]
public class Tag
{
[CCode (cname="ID3Tag_New")]
public Tag ();
[CCode (cname="ID3Tag_HasChanged")]
public bool has_changed ();
// add the others
}
Yes, that's the right solution.
Compact class is something, that is allocated on the heap and passed by
pointer (while struct is allocated on stack and passed by value) but unlike
normal classes does not support reference-counting.
I don't remeber well how to add the free function (in this case
ID3Tag_Delete), i think that in the CCode of the class you should add
free_funcion="ID3Tag_Delete", but it's just a guess.
That is a correct guess. It would be
[Compact]
[CCode (cname = "ID3Tag", free_function = "IR3Tag_Delete")]
public class Tag { ...
--
Jan 'Bulb' Hudec <bulb ucw cz>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]