Re: [Vala] Storing a list of delegates with targets?



On Sun, 2016-02-21 at 00:30 +0100, marcin saepia net wrote:
Hello,

I am writing a program where I would like to have possibility to add
arbitrary amount of callbacks which must be delegates.

I would like to store them somewhere, and then call one after another
when
it's appropriate.

My first step was

public class Test : Object {

  public void delegate MyFunc();
  private List<MyFunc> funcs = new List<MyFunc>();

  public void add(MyFunc func) {
    this.funcs.append(func);
  }
}

But vala compiler complains about the fact that delegates with
targets
can't be used as generics.

Is there any clear way of doing this at the moment (I am using vala
0.30).

You would need to create a type to hold the delegate and use that as
your generic type argument instead of the delegate itself.  Something
like

public class Test : Object {
  public void delegate MyFunc();

  private class MyFuncData {
    public MyFunc func;

    public MyFuncData (owned MyFunc func) {
      this.func = (owned) func;
    }
  }

  private List<MyFunc> funcs = new List<MyFunc>();

  public void add (owned MyFunc func) {
    this.funcs.append (new MyFuncData ((owned) func));
  }
}

Attachment: signature.asc
Description: This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]