This page attempts to provide a comprehensive comparison of various features of various signals/slots libraries. You'll find compared here :
Each feature is qualified as good, bad or unknown. Of course it's always to argue to know if a particular feature is either good or bad. For example, I consider the possibility to copy signals objects a good thing, but you can consider it's a bad thing. So don't start a flame.
Not surprisingly, SlotSig is the one which has the most "good" features - after all, I designed it to "fix" things I considered as "bad" in others. If however you find errors, or if you think something is missing, please let me know.
|Compilation and general features|
|Needs some special preprocessor||N||Y||N||N|
|Compile-time type checking||Y||N||Y||Y|
|Free use of templates for signals, slots, and their containing class||Y||N||Y||Y|
|Needs partial template specialization somewhere||Y||N||Y||Y|
|Provides an easy way to identify a signal or a slot by a char string||N||Y||N||N|
|Able to get back values returned by slots (signal level)||N||N||Y||Y|
|Can be cloned, copied||Y||N||Y||N|
|Can be public||Y||N||Y||Y|
|Can be protected||Y||N||Y||Y|
|Can be private||Y||Y||Y||Y|
|Can call arbitrary global function||Y||N||Y||Y|
|Can call arbitraty class method (but see the next one)||Y||N||Y||Y(4)|
|Class containing slots MUST inherit from a provided class||N(3)||Y||Y||N(5)|
|Connections and emitting|
|Ensure unicity of each connection||Y(2)||Y||N||N|
|Can connect a signal to a signal||Y||Y||Y||Y|
|Avoid cycling (a slot emitting a signal being emitted)||Y||N||N||N|
|Conditionnal emitting (a running signal can be interrupted)||Y||N||N||N|
|Able to get back values returned by slots (emit level)||Y||N||N||N|
|Automatic disconnection when an instance containing slots is deleted||Y (1)||Y||Y||Y(5)|
|Can change signature between signal and slot (bindable arguments)||N||N||Y||Y|
|Provide some type of connection identifier||N||N||Y||Y|
|Can disconnect using some kind of identifier||N||N||Y||Y|
|MUST disconnect using some kind of identifier||N||N||Y||Y|
|Disconnecting is a "mirror" of connecting||Y||Y||N||N|
|Optimised parameters sending (use references on non-trivial values)||Y||Y||Y||N|
|Global score (numbers of good, bad, unknown)||19, 7, 0||9, 17, 0||16, 10, 0||15, 11, 0|
(1) Only if the class
SlotSig::SlotsSetBase, otherwise you must use
(2) Optional, enabled by default.
(3) But if not, some manual steps are required to avoid crash - see (1).
(4) But through a binder.
(5) A base class is provided
to avoid crashes (
trackable), a bit like SlotSig.
Last updated 2006-04-17