From: Douglas Paul Gregor (gregod_at_[hidden])
Date: 2001-11-19 09:31:08
An updated version of the Signals library is now available at:
I would appreciate comments on any aspects of this library, and would like
to move toward a formal review in the near future.
Short summary of features:
- Signals can have any return type and any ("reasonable") number of
- Any function object that is callable given the callback parameter
types of a signal can be connected to that signal as a "slot".
- Coalescing of return values: return values from multiple slots can be
coalesced into a single return value for the signal in a user-defined way.
The interface to return values is a simple input iterator sequence.
- Control of slot calling: user-defined "combiners" (that coalesce
return values) can opt not to call all slots.
- Signal/slot connections can be broken at any time (including while the
signal is being called, the slot is being called, and in pathological
recursive cases where the signals calls a slot which calls the signal...).
- Automatic connection lifetime management: signal/slot connections will
disappear automatically when one of the objects involved is destructed.
This requires only a small change to the types of those objects (an
additional base class).
- Support for automatic connection lifetime management extensible to any
"binding" library. Currently only works with Boost.Bind.
Changes from the previous version:
- Refactoring of signal connection management code (= much smaller
- Exception safety greatly improved (it is now safe for slots to throw
- Uses Boost.Build
- Documentation (reference & tutorial)
- Updated to work with newer versions of Iterator Adaptors
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk