$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r61964 - sandbox/metagraph/libs/metagraph/example
From: gordon_at_[hidden]
Date: 2010-05-14 05:13:31
Author: gordon.woodhull
Date: 2010-05-14 05:13:28 EDT (Fri, 14 May 2010)
New Revision: 61964
URL: http://svn.boost.org/trac/boost/changeset/61964
Log:
test bfs on msm and timing ifdefs
Text files modified: 
   sandbox/metagraph/libs/metagraph/example/msm_adaptor.cpp |    46 +++++++++++++++++++++++++++++++++------ 
   1 files changed, 38 insertions(+), 8 deletions(-)
Modified: sandbox/metagraph/libs/metagraph/example/msm_adaptor.cpp
==============================================================================
--- sandbox/metagraph/libs/metagraph/example/msm_adaptor.cpp	(original)
+++ sandbox/metagraph/libs/metagraph/example/msm_adaptor.cpp	2010-05-14 05:13:28 EDT (Fri, 14 May 2010)
@@ -18,18 +18,27 @@
 //front-end
 #include <boost/msm/front/state_machine_def.hpp>
 
-#ifndef SKIP_DFS
+#ifdef SKIP_DFS
+#define DO_DFS 0
+#else
+#ifndef DO_DFS
+#define DO_DFS 5
+#endif
+#endif
 
+#if DO_DFS>1
 // mpl_graph graph implementation and depth first search
 #include <boost/metagraph/mpl_graph/incidence_list_graph.hpp>
 #include <boost/metagraph/mpl_graph/depth_first_search.hpp>
-
+#if DO_BFS>0
+#include <boost/metagraph/mpl_graph/breadth_first_search.hpp>
+#endif
 #endif
 
 namespace msm = boost::msm;
 namespace mpl = boost::mpl;
 
-#ifndef SKIP_DFS
+#if DO_DFS>1
 namespace mpl_graph = boost::metagraph::mpl_graph;
 #endif
 
@@ -171,7 +180,7 @@
         }
 
 
-#ifndef SKIP_DFS
+#if DO_DFS>2
 
         // transition table is already an incidence list; 
         // select Edge, Source, Target  =  pair<Start,Event>, Start, Next
@@ -189,23 +198,44 @@
         typedef mpl_graph::incidence_list_graph<transition_incidence_list>
             transition_graph;
         
-        struct preordering_visitor : mpl_graph::dfs_default_visitor_operations {    
+        struct preordering_dfs_visitor : mpl_graph::dfs_default_visitor_operations {    
             template<typename Node, typename Graph, typename State>
             struct discover_vertex :
                 mpl::push_back<State, Node>
             {};
         };
 
+#if DO_DFS>3
         typedef mpl::first<mpl_graph::
             depth_first_search<transition_graph, 
-                               preordering_visitor,
+                               preordering_dfs_visitor,
                                mpl::vector<>,
                                player_::initial_state>::type>::type
                     dfs_from_initial_state;
-                    
+#if DO_DFS>4        
         BOOST_MPL_ASSERT(( mpl::equal<dfs_from_initial_state, 
                                       mpl::vector<Empty,Open,Stopped,Playing,Paused> > ));
-                                      
+#endif
+#endif
+
+#if DO_BFS>0
+        struct preordering_bfs_visitor : mpl_graph::bfs_default_visitor_operations {    
+            template<typename Node, typename Graph, typename State>
+            struct discover_vertex :
+                mpl::push_back<State, Node>
+            {};
+        };
+        typedef mpl::first<mpl_graph::
+            breadth_first_search<transition_graph, 
+                               preordering_bfs_visitor,
+                               mpl::vector<>,
+                               player_::initial_state>::type>::type
+                    bfs_from_initial_state;
+        BOOST_MPL_ASSERT(( mpl::equal<bfs_from_initial_state, 
+                                      mpl::vector<Empty,Open,Stopped,Playing,Paused> > ));
+#endif
+
+                          
 #endif