Boost logo

Boost :

From: Tomasz Kowalczyk (tomek_at_[hidden])
Date: 2000-04-07 21:42:40


Thomas Matelich wrote:
>
> Tomasz Kowalczyk wrote:
>
> > If you need explanation of the concepts, you should have a look in
> > http://libsigc.sourceforge.net. It is a similar library for Gtk-- (Gtk+
> > wrapper in C++). They use more modern C++ and have nice narrative
> > explanations on their site. They have done a pretty good work and
> > libsigc was my main inspiration.
>
> I'm not being confrontational, just curious.

Let me state it clearly that it is not my aim to promote one or another
library. I just believe that presented techniques are so widely used in
various forms in different libraries that they deserve more attention
from C++ community.

> Could you tell me why I would use
> your library and not libsigc?

You might consider some reasons, to name a few:
- doing approximately the same, is about 5 times smaller,
also unlike libsigc:
- is exception safe,
- contains headers only, there is no need for linking,
- allows to easily connect to a signal anything that can be called as a
function,
- allows to copy signal objects - you can store them in a container for
example,
- avoids circular references by not using reference counting for signal
receivers,
- has no casts in the implementation,
- uses standard library where appropriate,
- makes writing generic code easier by using consistent naming
(signal<>, signal<A> vs Signal0<>, Signal1<A> etc.)

To be fair, I have to write what you cannot find in my library:
- signals returning values
- user-defined marshaling of arguments

First was a design decision. Second was a tradeoff, and can be added if
needed.

Tomek


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