diff options
author | Lorenz Wildberg <lorenz@wild-fisch.de> | 2021-12-04 19:05:42 +0000 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2022-01-04 14:51:37 +0100 |
commit | d74400bfaae61a1e2c246382e627b0a9adf8c304 (patch) | |
tree | ca0ae596870df270819adcfbcac35b9d83585280 /vala/valasignaltype.vala | |
parent | de1682099945edfd8d23958cf45186aecbd0015e (diff) | |
download | vala-d74400bfaae61a1e2c246382e627b0a9adf8c304.tar.gz |
Support "emit" for explicit signal emission
If "foo" is a signal then "foo.emit (...);" is allowed now additionally to
"foo (...);". This is required to emit dynamic signals.
Diffstat (limited to 'vala/valasignaltype.vala')
-rw-r--r-- | vala/valasignaltype.vala | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/vala/valasignaltype.vala b/vala/valasignaltype.vala index ca90186fc..93867ac54 100644 --- a/vala/valasignaltype.vala +++ b/vala/valasignaltype.vala @@ -35,6 +35,7 @@ public class Vala.SignalType : CallableType { Method? connect_method; Method? connect_after_method; Method? disconnect_method; + Method? emit_method; public SignalType (Signal signal_symbol, SourceReference? source_reference = null) { base (signal_symbol, source_reference); @@ -104,6 +105,16 @@ public class Vala.SignalType : CallableType { return disconnect_method; } + unowned Method get_emit_method () { + if (emit_method == null) { + emit_method = new Method ("emit", signal_symbol.return_type, source_reference); + emit_method.access = SymbolAccessibility.PUBLIC; + emit_method.external = true; + emit_method.owner = signal_symbol.scope; + } + return emit_method; + } + public override Symbol? get_member (string member_name) { if (member_name == "connect") { return get_connect_method (); @@ -111,6 +122,8 @@ public class Vala.SignalType : CallableType { return get_connect_after_method (); } else if (member_name == "disconnect") { return get_disconnect_method (); + } else if (member_name == "emit") { + return get_emit_method (); } return null; } |