$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r48678 - in sandbox/SOC/2007/signals: boost/dataflow/blueprint libs/dataflow/build/vc8ide libs/dataflow/example/extension libs/dataflow/example/signals
From: stipe_at_[hidden]
Date: 2008-09-08 19:36:06
Author: srajko
Date: 2008-09-08 19:36:05 EDT (Mon, 08 Sep 2008)
New Revision: 48678
URL: http://svn.boost.org/trac/boost/changeset/48678
Log:
extension example completed
Text files modified: 
   sandbox/SOC/2007/signals/boost/dataflow/blueprint/binary_operation.hpp         |     4 ++++                                    
   sandbox/SOC/2007/signals/boost/dataflow/blueprint/component.hpp                |     2 ++                                      
   sandbox/SOC/2007/signals/libs/dataflow/build/vc8ide/example.vcproj             |    20 ++++++++++++++++++++                    
   sandbox/SOC/2007/signals/libs/dataflow/example/extension/extension_example.cpp |    28 +++++++++++++++++++++++++++-            
   sandbox/SOC/2007/signals/libs/dataflow/example/signals/modifier_example.cpp    |     2 +-                                      
   5 files changed, 54 insertions(+), 2 deletions(-)
Modified: sandbox/SOC/2007/signals/boost/dataflow/blueprint/binary_operation.hpp
==============================================================================
--- sandbox/SOC/2007/signals/boost/dataflow/blueprint/binary_operation.hpp	(original)
+++ sandbox/SOC/2007/signals/boost/dataflow/blueprint/binary_operation.hpp	2008-09-08 19:36:05 EDT (Mon, 08 Sep 2008)
@@ -60,6 +60,10 @@
     get_binary_operation<operations::extract>(producer, consumer)->invoke(producer, consumer);
 }
 
+inline void connect(port & producer, port & consumer)
+{
+    get_binary_operation<operations::connect>(producer, consumer)->invoke(producer, consumer);
+}
 
 
 } } } // namespace boost::dataflow::blueprint
Modified: sandbox/SOC/2007/signals/boost/dataflow/blueprint/component.hpp
==============================================================================
--- sandbox/SOC/2007/signals/boost/dataflow/blueprint/component.hpp	(original)
+++ sandbox/SOC/2007/signals/boost/dataflow/blueprint/component.hpp	2008-09-08 19:36:05 EDT (Mon, 08 Sep 2008)
@@ -107,6 +107,8 @@
     component_t(const T0 &t0) : c(t0) {component_t_();}
     template<typename T0>
     component_t(T0 &t0) : c(t0) {component_t_();}
+    template<typename T0, typename T1>
+    component_t(const T0 &t0, const T1 &t1) : c(t0, t1) {component_t_();}
     component_t(const component_t &rhs) : c(rhs.c)
     {   component_t_(); }
     
Modified: sandbox/SOC/2007/signals/libs/dataflow/build/vc8ide/example.vcproj
==============================================================================
--- sandbox/SOC/2007/signals/libs/dataflow/build/vc8ide/example.vcproj	(original)
+++ sandbox/SOC/2007/signals/libs/dataflow/build/vc8ide/example.vcproj	2008-09-08 19:36:05 EDT (Mon, 08 Sep 2008)
@@ -205,6 +205,26 @@
 				>
                         </File>
                 </Filter>
+		<Filter
+			Name="threadpool"
+			>
+			<File
+				RelativePath="..\..\example\threadpool\threadpool_component_example.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="extension"
+			>
+			<File
+				RelativePath="..\..\example\extension\component_add.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\example\extension\extension_example.cpp"
+				>
+			</File>
+		</Filter>
                 <File
                         RelativePath="..\..\example\edit_distance.cpp"
 			>
Modified: sandbox/SOC/2007/signals/libs/dataflow/example/extension/extension_example.cpp
==============================================================================
--- sandbox/SOC/2007/signals/libs/dataflow/example/extension/extension_example.cpp	(original)
+++ sandbox/SOC/2007/signals/libs/dataflow/example/extension/extension_example.cpp	2008-09-08 19:36:05 EDT (Mon, 08 Sep 2008)
@@ -4,11 +4,16 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 
 #include <boost/dataflow/blueprint/component.hpp>
+#include <boost/dataflow/blueprint/binary_operation.hpp>
+#include <boost/dataflow/signals/component/storage.hpp>
+#include <boost/dataflow/signals/runtime_support.hpp>
 
 #include <boost/extension/factory_map.hpp>
 #include <boost/extension/shared_library.hpp>
 #include <boost/extension/convenience.hpp>
 
+#include <boost/fusion/include/make_vector.hpp>
+#include <boost/scoped_ptr.hpp>
 #include <iostream>
 #include <list>
 #include <map>
@@ -23,8 +28,29 @@
     std::cout << "load_single_library returned: "
         << load_single_library(fm, library_path, "extension_export_components") << std::endl;
 
-    std::map<std::string, boost::extensions::factory<boost::dataflow::blueprint::component> > map = fm.get<blueprint::component, std::string>();
+    typedef std::map<std::string, boost::extensions::factory<boost::dataflow::blueprint::component> > map_type;
+    map_type map = fm.get<blueprint::component, std::string>();
     std::cout << "Loaded " << map.size() << " components" << std::endl;
 
+    if(map.find("add") != map.end())
+    {
+        // create the component
+        boost::scoped_ptr<blueprint::component> filter(map["add"].create());
+        std::cout << "Created component with " << filter->num_ports() << " ports.";
+
+        // storage components for the input and the result
+        blueprint::component_t<boost::signals::storage<void(int, int)>,boost::dataflow::signals::tag > one_two(boost::fusion::make_vector(1, 2));
+        blueprint::component_t<boost::signals::storage<void(int)>,boost::dataflow::signals::tag > result;
+
+        std::cout << "Connecting component with input storage (1,2) and result storage..." << std::endl;
+        blueprint::connect(one_two.get_port(0), filter->get_port(1));
+        blueprint::connect(filter->get_port(0), result.get_port(1));
+
+        // invoke the input to send and process its contents
+        one_two.invoke();
+        // print the result
+        std::cout << "Result storage: " << result.get().at<0>() << std::endl;
+    }
+
     return 0;
 }
Modified: sandbox/SOC/2007/signals/libs/dataflow/example/signals/modifier_example.cpp
==============================================================================
--- sandbox/SOC/2007/signals/libs/dataflow/example/signals/modifier_example.cpp	(original)
+++ sandbox/SOC/2007/signals/libs/dataflow/example/signals/modifier_example.cpp	2008-09-08 19:36:05 EDT (Mon, 08 Sep 2008)
@@ -34,7 +34,7 @@
     template<typename T>
     T operator()(T t) const
     {
-        return t * m_factor;
+        return static_cast<T>(t * m_factor);
     }
     
     double m_factor;