2006-04-17 v. 1.0
Incorporated the Makefile from Leopold Palomo-Avellaneda, to generate a global shared library containing the very small amount of static code.
Updated benchmarks. The 1.x versions of SlotSig will remain binary-compatible. No major new feature is expected, mainly cosmetic changes and bugfixes. The main line of development will be done in a 1.99.x branch, maybe leading someday to a 2.0 version.
2005-12-09 v. 0.7
not much to say, just fixed a compile error due to better standard-conformance from GCC.
2004-06-10 v. 0.6
now signals can be copied and cloned ;
the internal storage is no more a policy, therefore it can't be customized anymore ; if this hurts you, let me know ;
code cleanup (all methods are lower-case), added some comments usable by Doxygen (http://www.doxygen.org) ;
it's now possible to parse the slots connected to a signal, using usual STL (Standard Template Library) syntax (see advanced documentation) ;
it's now possible (and easy I hope) to chain signals, i.e. to connect a signal to another signal (both must be of same type) ;
added some facilities to connect slots in classes that don't inherit from SlotsSetBase (see advanced documentation) ;
compiles fine with Intel compiler, icc ;
TODO :
threads, threads, threads...
better (faster) storage here and there ;
string-based (dis)connections, ala Qt ;
adaptors to (dis)connect functions with different number of parameters than the signal type (idea borrowed from libsigc++) ;
provide a way to know the sender of a signal ;
give back a kind of identifier for a connection, which can be used to disconnect a slot (this would probably be the slot type) ;
...and more...
2004-05-23 v. 0.5.1
Changed template parameters names, to fix an error given by gcc 3.3 under MacOSX - thanks to Ralph Brorsen, you found and solved the problem.
2004-05-20 v. 0.5
the uniqueness of a connection is now an option (enabled by default) ;
added disconnectAll()
methods in signal classes and
SlotsSetBase
;
better Qt-compatibility (avoid some remaining clashes with Qt's macros) ;
improved speed by using a more clever storage class for slots in signals ;
updated documentation, added an “advanced” page, and more detailed benchmarks ;
added many type-traits-like class to avoid useless parameters copying (for all basic types) ;
beginning of a mean to establish connections using strings, as Qt does (which allows to make connections based on external informations, such as a configuration text file) ;
TODO :
thread-safety !!
reduce the need to inherit from SlotsSetBase
for
classes containing slots ;
improve storage of connected signals in
SlotsSetBase
;
go further in string-based connections ;
...mail me for more !
2004-02-03 v. 0.4
now (almost) all methods in signal classes return an error code ;
to provide compatibility with Qt, the emit()
method has
been renamed to run()
;
added a run_if()
method, which can interrupts the
signal emission according to the boolean return value of a
predicate ;
the storage of slots in a signal can now be tweaked by a policy, see
<slotsig_storage_policies.h>
for more
details ;
the default storage is now a vector, which proved to be much faster than the previously-used set ;
added some sanity checks : don't allow to connect or disconnect a slot when a signal is being emitted, don't allow to emit a signal while it is being emitted.
TODO :
make connections faster ;
improve the trick used to avoid useless temporary instances
duplication when sending parameters (for now it just nicely
specialize for int
) ;
check and fix for other compilers ;
connection to a signal, to a functor ;
what about some thread-safety ?
...what more ?
2003-11-22 v. 0.3
complete rewrite : simpler code, hopefully more easily usable ;
new namespace and classes names ;
implemented features so far :
connecting a signal to either a global function or a class's method ;
handles the case when the class's method is
const
-qualified ;
correctly connect to inherited methods not redefined in subclass ;
should react nicely when a class's instance or a signal instance is destroyed.
last but not least, a Python script is provided to generate support for as many parameters as you might want ;
missing features :
connect a signal to a signal ;
direct connection to functors ;
allowing to know the signal's sender ;
trying to avoid signal/slot ping-pong (infinite recursion) ;
stop the signal emission when something critical happens (the slots set is changed, the signal destroyed, whatever) ;
...your idea here !
2003-06-09 v. 0.2
added support for const
-qualified class methods ;
enabled connecting a signal to any class method without explicit
creation of a slot clSlotInClass
(TODO : what if the class holding the method is
destroyed ?) ;
some changes to get a more robust code (added some checks for null-pointers) ;
added verbosity macros, to get messages about what is done internally ;
tested using Valgrind ;
modified tutorial to reflect previous changes.
2003-06-03 v. 0.1
Initial public release.