
Hello, A quick update on the status of the Signal Network GSoC project (a set of components and connection mechanisms based on Boost.Signals and geared towards dataflow-oriented programming): * Docs The documentation now has more introductory and motivational material. If you don't know what this library is about or why to use it, you can check it the Introduction section out (and please let me know if it's providing you with useful information - it would be very helpful feedback!). The URL is: http://dancinghacker.com/code/signet/ * Boost.Fusion Since changing the internal implementation of all of the components to use Boost.Fusion, I have added support of fused signals in addition to the regular unfused ones. For example, you may choose to transmit the signals the unfused way "as usual" (say via boost::signal<void (float, int &, const string &)>, or you may choose to transmit them fused (say via boost::signal<const fusion::vector<float, int &, const string &> &>). After running some simple timing tests, fused signals tend to be much more efficient in parameter forwarding, although I might be able to cut down the difference some after I look into where all I'm creating unnecessary temporaries in the unfused case. Note: if you want to test the code in the sandbox, note that it includes a small change to the Fusion library necessary if you're using the signet::storage component with a signal that carries a reference (as the timing_example does). If you're using the sort of compiler that complains about multiply defined copy constructors, blame the warnings on me and not the authors of fusion :-) * Components Pretty much all components now offer both a fused and unfused version. Perhaps the most exciting advance (to me) is the introduction of four generic components: * modifier: applies a member function object to any incoming signal and outputs the result * applicator: applies a function object to a member object each time it forwards a signal (say, it increases a counter) * instantiator: instantiates an object from a member object each time it forwards a signal (say, it instantiates a scoped_lock over a mutex) * conditional: forwards a signal if a function object evaluates to true * Tests tests have now been separated into different files, and cover most of the new fused / unfused functionality. all pass on OS X/darwin and Win/MSVC 8.0 The GSoC wiki page might have some more info and some proposed next steps. If you have anything to add, please feel free to update the wiki, or reply here (or off the list if you prefer): http://svn.boost.org/trac/boost/wiki/soc/2007/SignalNetwork All feedback is much appreciated! Thanks, Stjepan