Boost logo

Boost :

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:

http://groups.yahoo.com/group/boost/files/Callback/signals-20011118.tgz

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
callback parameters.
  - 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
executables)
  - Exception safety greatly improved (it is now safe for slots to throw
exceptions)
  - Uses Boost.Build
  - Documentation (reference & tutorial)
  - Updated to work with newer versions of Iterator Adaptors

  Thanks,
  Doug Gregor
  gregod_at_[hidden]


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk