]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/graph/st_connected.hpp
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / boost / boost / graph / st_connected.hpp
index 9801a275b4d04aeb4342c98de2cbe645ad09f6b8..2e8f444319279ecbf7870b8dd6b2bfa1276f83d2 100644 (file)
 #include <boost/graph/iteration_macros.hpp>
 #include <boost/pending/queue.hpp>
 
-namespace boost { namespace graph {
-
-template<typename Graph, typename ColorMap>
-bool 
-st_connected(const Graph& g, 
-             typename graph_traits<Graph>::vertex_descriptor s,
-             typename graph_traits<Graph>::vertex_descriptor t,
-             ColorMap color)
+namespace boost
+{
+namespace graph
 {
-  typedef typename property_traits<ColorMap>::value_type Color;
-  typedef color_traits<Color> ColorTraits;
-  typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
 
-  // Set all vertices to white (unvisited)
-  BGL_FORALL_VERTICES_T(v, g, Graph)
-    put(color, v, ColorTraits::white());
+    template < typename Graph, typename ColorMap >
+    bool st_connected(const Graph& g,
+        typename graph_traits< Graph >::vertex_descriptor s,
+        typename graph_traits< Graph >::vertex_descriptor t, ColorMap color)
+    {
+        typedef typename property_traits< ColorMap >::value_type Color;
+        typedef color_traits< Color > ColorTraits;
+        typedef typename graph_traits< Graph >::vertex_descriptor Vertex;
+
+        // Set all vertices to white (unvisited)
+        BGL_FORALL_VERTICES_T(v, g, Graph)
+        put(color, v, ColorTraits::white());
+
+        // Vertices found from the source are grey
+        put(color, s, ColorTraits::gray());
+
+        // Vertices found from the target are greeen
+        put(color, t, ColorTraits::green());
+        queue< Vertex > Q;
+        Q.push(s);
+        Q.push(t);
 
-  // Vertices found from the source are grey
-  put(color, s, ColorTraits::gray());
+        while (!Q.empty())
+        {
+            Vertex u = Q.top();
+            Q.pop();
+            Color u_color = get(color, u);
 
-  // Vertices found from the target are greeen
-  put(color, t, ColorTraits::green());
-  queue<Vertex> Q;
-  Q.push(s);
-  Q.push(t);
+            BGL_FORALL_OUTEDGES_T(u, e, g, Graph)
+            {
+                Vertex v = target(e, g);
+                Color v_color = get(color, v);
+                if (v_color == ColorTraits::white())
+                {
+                    // We have not seen "v" before; mark it with the same color
+                    // as u
+                    Color u_color = get(color, u);
+                    put(color, v, u_color);
 
-  while (!Q.empty()) {
-    Vertex u = Q.top(); Q.pop();
-    Color u_color = get(color, u);
+                    // Push it on the queue
+                    Q.push(v);
+                }
+                else if (v_color != ColorTraits::black() && u_color != v_color)
+                {
+                    // Colors have collided. We're done!
+                    return true;
+                }
+            }
+            // u is done, so mark it black
+            put(color, u, ColorTraits::black());
+        }
 
-    BGL_FORALL_OUTEDGES_T(u, e, g, Graph) {
-      Vertex v = target(e, g);
-      Color v_color = get(color, v);
-      if (v_color == ColorTraits::white()) {
-        // We have not seen "v" before; mark it with the same color as u
-        Color u_color = get(color, u);
-        put(color, v, u_color);
-        
-        // Push it on the queue
-        Q.push(v);
-      } else if (v_color != ColorTraits::black() && u_color != v_color) {
-        // Colors have collided. We're done!
-        return true;
-      }
+        return false;
     }
-    // u is done, so mark it black
-    put(color, u, ColorTraits::black());
-  }
 
-  return false;
-}
+    template < typename Graph >
+    inline bool st_connected(const Graph& g,
+        typename graph_traits< Graph >::vertex_descriptor s,
+        typename graph_traits< Graph >::vertex_descriptor t)
+    {
+        return st_connected(g, s, t,
+            make_two_bit_color_map(num_vertices(g), get(vertex_index, g)));
+    }
 
-template<typename Graph>
-inline bool 
-st_connected(const Graph& g, 
-             typename graph_traits<Graph>::vertex_descriptor s,
-             typename graph_traits<Graph>::vertex_descriptor t)
-{
-  return st_connected(g, s, t, 
-                      make_two_bit_color_map(num_vertices(g),
-                                             get(vertex_index, g)));
 }
-
-} } // end namespace boost::graph
+} // end namespace boost::graph
 
 #endif // BOOST_GRAPH_DISTRIBUTED_ST_CONNECTED_HPP