What I've done:

[Compact, CCode (cname = "void")]
    public class Handle {
      // ...
    }

    [CCode (has_target = false)]
    public delegate void DescriptorConnectPort(Handle? instance, ulong
port, ref double dataLocation);

    [CCode (copy_function="", destroy_function="")]
    public struct Descriptor
    {
        [CCode (cname = "UniqueID")]
        public ulong unique_id;
        [CCode (cname = "Label")]
        public unowned string label;
        [CCode (cname = "Properties")]
        public Properties properties;
        [CCode (cname = "Name")]
        public unowned string name;
        [CCode (cname = "Maker")]
        public unowned string maker;
        [CCode (cname = "Copyright")]
        public unowned string copyright;
        [CCode (cname = "PortCount")]
        public ulong port_count;
        [CCode (cname = "PortDescriptors")]
        public const PortDescriptor[] port_descriptors;
        [CCode (cname = "PortNames")]
        public unowned string[] port_names;
        [CCode (cname = "PortRangeHints")]
        public const PortRangeHint[] port_range_hints;
        [CCode (cname = "ImplementationData")]
        public void[] implementation_data;

        public Handle? instantiate(Handle? descriptor, ulong sampleRate);

        public DescriptorConnectPort? connect_port;

        public void activate(Handle? instance);

        public void run(Handle? instance, ulong sampleCount);

        public void run_adding(Handle? instance, ulong sampleCount);

        public void set_run_adding_gain(Handle? instance, Data gain);

        public void deactivate(Handle? instance);

        public void cleanup(Handle? instance);
    }

but...

src/CompressorBackend.c: In function ‘ajami_compressor_backend_connect’:
src/CompressorBackend.c:674:2: error: unknown type name
‘LADSPA_DescriptorConnectPort’
  LADSPA_DescriptorConnectPort _tmp2_ = NULL;
src/CompressorBackend.c:745:2: error: called object ‘_tmp2_’ is not a
function or function pointer
  _tmp2_ (_tmp4_, (gulong) AJAMI_COMPRESSOR_FLAGS_RMS_PEAK, &(*s).rms_peak);

2016-09-11 14:27 GMT-03:00 Al Thomas <astav...@yahoo.co.uk>:
>
>
>
>
> ----- Original Message -----
>> From: Victor Aurélio Santos <victoraur.san...@gmail.com>
>> Sent: Sunday, 11 September 2016, 17:08
>> Subject: Re: [Vala] LADSPA bindings
>
>> The valac complaints:
>
>> LADSPA.vapi:52.9-52.41: error: unexpected declaration
>>        public delegate void connect_port(Descriptor* instance, ulong
>> port, double* dataLocation);
>
>
> A delegate is a type, it identifies the function signature of the callback.
> So the delegate should be defined outside of the struct. Then in the struct
> you identify the callback with its type (the delegate name you've used) and
> the identifier for the callback. I hope that gets you a step further forward.
> Handling APIs in structs is something that I don't fully understand yet.



-- 
Victor Aurélio Santos
_______________________________________________
vala-list mailing list
vala-list@gnome.org
https://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to