Downloading
The latest development version is located in the Boost sandbox. Released versions are located in the Boost Vault.
The Dataflow library has been tested using a recent version of the Boost trunk, as well as the 1.35 release. Tests and examples have been built successfuly on OS X (GCC 4.0, 4.2), Linux (GCC 4.2), and Windows (MSVC 8.0 and to some degree MinGW GCC 4.2).
Version 0.9.1 [available in the Boost vault]
-
Generic Dataflow layer
- binary operations now propagate the return value
-
Dataflow.Signals
- connect
now returns the
signals::connectionobject - added tracking_call_consumer example
- added a GUI example using GLV
- connect
now returns the
-
Added new Dataflow.Managed framework
- added a gui example using GLV
Short term to-do list:
- keep working on docs, tests
-
default mechanisms for operations should be specified by the framework
Tag - propagate return values where they should be propagated
-
Key used for
KeyedPorts should be overridable (not always thePortTraits) -
binary_operation should take two
Tagparameters -
add support for cross-framework operations (
tag_adapter?) -
make dispatching possible on other than just the
PortTraits port_adaptershould be renamed toadapterInvocableshould be a part ofUnaryOperable
See the future_work section for more information on what is planned.
Version 0.9.0
-
Generic Dataflow layer
- Revamped concepts one more time
- added the port_adapter class to replace old ProxyPort functionality
- Started adding Doxygen-generated support layer reference.
-
Dataflow.Signals
- Adapted the Dataflow.Signals layer, tests, and examples to new generic layer.
- Dataflow.Signals components
should now all be
Components. - filter base class now offers simpler specification of consumer signatures
- added a consumer base class for input-only components.
-
slot_selector is now useless - replaced with just
boost::function - bind_object replaced with bind_mem_fn, replaced make_slot_selector with bind_mem_fn_overload.
-
Dataflow.Blueprint
- added a component bank class
- added an example GUI dataflow editor
Version 0.8.1
- Started the Dataflow.Blueprint layer (runtime reflection and network modeling).
-
Expanding the
Componentconcept (compile-time reflection of ports). - VTK example Jamfile now works work with Windows (not just Darwin+X11 VTK).
- Provided an example using Boost.GIL.
-
The
Mechanismconcept is now limited to port-related operations. In the future, an additional tag template parameter might be added to all dataflow templates to allow specifying completely independent dataflow support layers over the same types (the original intent of theMechanismparameter).
Version 0.8.0
- post-GSoC version
- generic dataflow support layer with tests and examples
- Dataflow.Signals layer (fusion-based implementation) with tests and examples
- VTK example
- quickbook docs
Building
The library comes with Boost.Build Jamfiles for all examples, tests, and docs. As long as your BOOST_ROOT environment variable is set, you should be able to build each one of those by going to the appropriate directory and running bjam.
The Jamfile for the VTK examples currently only works for Darwin with VTK built for X11, and for MSVC.
The library itself is header only, and requires no linking. However, parts of it depend on boost libraries which do need to be built and linked (see the linking information below).
Linking
The generic Dataflow support layer is header-only, and relies only on other Boost header-only libraries.
The Dataflow.Signals layer is dependent on the Boost.Signals library, which must be built and linked. A few of the components ( socket_sender and socket_receiver) are also dependent on Boost.Asio, which depends on the System library which must also be built and linked. A few other components ( mutex and condition) are dependent on Boost.Thread, which has to be linked as well.
The VTK example requires VTK, and the GUI dataflow editor example requires FLTK2.