40 lines
1001 B
C++
40 lines
1001 B
C++
// Copyright 2008-2010 Gordon Woodhull
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
#ifndef BOOST_MSM_MPL_GRAPH_SEARCH_COLORS_HPP_INCLUDED
|
|
#define BOOST_MSM_MPL_GRAPH_SEARCH_COLORS_HPP_INCLUDED
|
|
|
|
namespace boost {
|
|
namespace msm {
|
|
namespace mpl_graph {
|
|
|
|
namespace search_colors {
|
|
struct White {};
|
|
struct Gray {};
|
|
struct Black {};
|
|
}
|
|
|
|
struct create_search_color_map : mpl::map<> {};
|
|
|
|
struct search_color_map_ops {
|
|
template<typename Node, typename Color, typename State>
|
|
struct set_color :
|
|
mpl::insert<State, mpl::pair<Node, Color> >
|
|
{};
|
|
template<typename Node, typename State>
|
|
struct get_color :
|
|
mpl::if_<mpl::has_key<State, Node>,
|
|
mpl::at<State, Node>,
|
|
search_colors::White>
|
|
{};
|
|
};
|
|
|
|
|
|
} // namespace mpl_graph
|
|
} // namespace msm
|
|
} // namespace boost
|
|
|
|
|
|
#endif // BOOST_MSM_MPL_GRAPH_SEARCH_COLORS_HPP_INCLUDED
|