On 29. Apr, 2010, at 21:22 , Jan Hudec wrote:

> On Sun, Apr 25, 2010 at 11:46:17 +0200, Michael Wild wrote:
>> On 23. Apr, 2010, at 22:29 , Jan Hudec wrote:
>>> Actually I believe
>>> 
>>>   [Compact]
>>>   [CCode (cname = "void", ...)]
>>>   class Thing ...
>>> 
>>> should work. It will give you void * passed around, so it's some kind of
>>> pointer and C implicitly casts to and from void *, so no errors and no
>>> warnings.
>> 
>> I don't think that I'd like that one particularly... I'd rather prefer to
>> use a Vala wrapper class then.
>> 
>>> 
>>> You can also just make it
>>> 
>>>   [Compact]
>>>   [CCode (cname = "struct unknown_type", ...)]
>>>   class Thing ...
>>> 
>>> with the real value for "unknown_type" from the library header. That will
>>> make the code more type-safe on the C side, but vala will check the types
>>> enough and it would be relying on something not officially documented.
>> 
>> Unfortunately that's impossible. The official standard states that there is
>> a opaque type Thing, but nothing more. Every implementor is free to do as
>> he pleases... Some even typedef it to an integer handle.
> 
> The void case would be OK if you knew it is always a pointer. But if it's
> a handle of any type, than you'll have to make it a "[SimpleType] struct"
> (SimpleType means it's passed by value).
> 
> Than you can try whether setting a copy_function and destroy_function on
> a simple type will do what you need and otherwise you'll just have to wrap
> it in a normal vala object.

That's what I'm doing right now. I treat it as a SimpleType with no 
memory-management and then wrap it in a separate vala library.

Thanks for all the help

Michael

_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to