Chris@16: // Copyright (C) 2009 Andrew Sutton Chris@16: Chris@16: // Use, modification and distribution is subject to the Boost Software Chris@16: // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: #ifndef BOOST_GRAPH_LABELED_GRAPH_HPP Chris@16: #define BOOST_GRAPH_LABELED_GRAPH_HPP Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: // This file implements a utility for creating mappings from arbitrary Chris@16: // identifiers to the vertices of a graph. Chris@16: Chris@16: namespace boost { Chris@16: Chris@16: // A type selector that denotes the use of some default value. Chris@16: struct defaultS { }; Chris@16: Chris@16: /** @internal */ Chris@16: namespace graph_detail { Chris@16: /** Returns true if the selector is the default selector. */ Chris@16: template Chris@16: struct is_default Chris@16: : mpl::bool_::value> Chris@16: { }; Chris@16: Chris@16: /** Chris@16: * Choose the default map instance. If Label is an unsigned integral type Chris@16: * the we can use a vector to store the information. Chris@16: */ Chris@16: template Chris@16: struct choose_default_map { Chris@16: typedef typename mpl::if_< Chris@16: is_unsigned