Re: [Vala] Questions about structs: printing, copying, ArrayList<StructType?>
- From: bsquared <bwcode4u gmail com>
- To: Evan Nemerson <evan coeus-group com>
- Cc: vala-list <vala-list gnome org>
- Subject: Re: [Vala] Questions about structs: printing, copying, ArrayList<StructType?>
- Date: Wed, 24 Aug 2011 07:04:38 -0700
On Tue, Aug 23, 2011 at 10:43 AM, Evan Nemerson <evan coeus-group com> wrote:
On Mon, 2011-08-22 at 08:36 -0700, bsquared wrote:
I ran into a couple of issues regarding structs.
1. When using a struct from a pkg, as opposed to one of my creation,
an error is raised in the c code when attempting to access the
"built-in" to_string() method for an element.
Context.State state = ctx.get_state();
print (state.to_string());
/.../Source/vala/pulse-device-chooser/src/main.t c:160:47: error:
‘PA_CONTEXT_TYPE_STATE’ undeclared (first use in this function)
Looks like a missing CCode annotation in the VAPI. Depending on whether
Context.State has a GType
[CCode (type_id = "pa_context_state_get_type ()")]
or
[CCode (has_type_id = false)]
2. What is the correct method to copy a struct? Attempting to copy
struct by assignment to variable, or Memory.copy causes "undefined
reference to `pulse_audio_sink_info_copy'" errors in c code.
There is no generic way to copy a struct. It depends on the library.
There may even be no way to copy, in which case you would likely need to
make judicious use of the "unowned" keyword.
where i & si are type PulseAudio.SinkInfo
context.get_sink_info_by_index (index, (context, i, eol) => {
Memory.copy(&i, &si, sizeof(SinkInfo));
si = i;
});
3. Attempting to box struct from pkg in an ArrayList causes an error
in c code similar to question 1.
Gee.ArrayList<SinkInfo?> sink_info = new Gee.ArrayList<SinkInfo?>();
main.c:643:31: error: ‘PULSE_AUDIO_TYPE_SINK_INFO’ undeclared (first
use in this function)
The solution is the same as above... either specify the correct type id
or set has_type_id = false for SinkInfo.
Thanks. This bug was reported on freedesktop. I added your comment there.
https://bugs.freedesktop.org/show_bug.cgi?id=40290
--
Regards,
-Brian
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]