On 2014-01-06 11:13, Vladimir Panteleev wrote:

Apologies, I missed this review thread. So, some questions / observations:

IMO, the effort to disallow third parties to "emit" signals on your
object by far exceeds its worth.

For this purpose, you have needed:
- string mixins
   - ...which declare, by convention, a field with a name not explicitly
given by the user
   - ...with a workaround for when they don't work
- an enumeration type
- two different signal struct types
- a boatload of documentation
- a nontrivial cognitive effort on the user to grok all of the above

This little feature steals too much focus, and IMO is not worth it.

I agree that it's not so nice looking. But I feel that it could be quite important to restrict emitting to the module the signal is declared in.

a.valueChanged.connect!"watch"(o);        // o.watch is the slot

This is really ugly, but I don't see any way to improve it either. Maybe
if the type of &classInstance.method was actually a special
"pointer-to-class-method" type that implicitly down-casted to a
delegate, it would be possible to safely use &o.watch instead...

I agree. Is the only reason to have a weak connection?


--
/Jacob Carlborg

Reply via email to