]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/graph/adj_list_serialize.hpp
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / boost / boost / graph / adj_list_serialize.hpp
index 01db50282fd5527c241192cf6d77dc329ea0a1c6..85f7e2ed4125ff82a81f4624c42610309dc70e7c 100644 (file)
@@ -6,8 +6,8 @@
 // accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 //=======================================================================
-#ifndef ADJ_LIST_SERIALIZE_HPP
-#define ADJ_LIST_SERIALIZE_HPP
+#ifndef BOOST_GRAPH_ADJ_LIST_SERIALIZE_HPP
+#define BOOST_GRAPH_ADJ_LIST_SERIALIZE_HPP
 
 #include <boost/graph/adjacency_list.hpp>
 #include <boost/graph/iteration_macros.hpp>
 #include <boost/serialization/collections_load_imp.hpp>
 #include <boost/serialization/split_free.hpp>
 
-namespace boost { 
-
-namespace serialization {
-
-// Turn off tracking for adjacency_list. It's not polymorphic, and we
-// need to do this to enable saving of non-const adjacency lists.
-template<class OEL, class VL, class D, class VP, class EP, class GP, class EL>
-struct tracking_level<boost::adjacency_list<OEL,VL,D,VP,EP,GP,EL> > {
-  typedef mpl::integral_c_tag tag;
-  typedef mpl::int_<track_never> type;
-  BOOST_STATIC_CONSTANT(int, value = tracking_level::type::value);
-};
-
-template<class Archive, class OEL, class VL, class D, 
-     class VP, class EP, class GP, class EL>
-inline void save(
-    Archive & ar,
-    const boost::adjacency_list<OEL,VL,D,VP,EP,GP,EL> &graph,
-    const unsigned int /* file_version */
-){
-  typedef adjacency_list<OEL,VL,D,VP,EP,GP,EL> Graph;
-  typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-
-  int V = num_vertices(graph);
-  int E = num_edges(graph);
-  ar << BOOST_SERIALIZATION_NVP(V);
-  ar << BOOST_SERIALIZATION_NVP(E);
-
-  // assign indices to vertices
-  std::map<Vertex,int> indices;
-  int num = 0;
-  BGL_FORALL_VERTICES_T(v, graph, Graph) {
-    indices[v] = num++;
-    ar << serialization::make_nvp("vertex_property", get(vertex_all_t(), graph, v) );
-  }
-  
-  // write edges
-  BGL_FORALL_EDGES_T(e, graph, Graph) {
-    ar << serialization::make_nvp("u" , indices[source(e,graph)]);
-    ar << serialization::make_nvp("v" , indices[target(e,graph)]);
-    ar << serialization::make_nvp("edge_property", get(edge_all_t(), graph, e) );
-  }
-
-  ar << serialization::make_nvp("graph_property", get_property(graph, graph_all_t()) );
-}
-
-
-template<class Archive, class OEL, class VL, class D,
-     class VP, class EP, class GP, class EL>
-inline void load(
-    Archive & ar,
-    boost::adjacency_list<OEL,VL,D,VP,EP,GP,EL> &graph,
-    const unsigned int /* file_version */
-){
-  typedef adjacency_list<OEL,VL,D,VP,EP,GP,EL> Graph;
-  typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-  typedef typename graph_traits<Graph>::edge_descriptor Edge;
-
-  unsigned int V;
-  ar >> BOOST_SERIALIZATION_NVP(V);
-  unsigned int E;
-  ar >> BOOST_SERIALIZATION_NVP(E);
-  
-  std::vector<Vertex> verts(V);
-  int i = 0;
-  while(V-- > 0){
-    Vertex v = add_vertex(graph);
-    verts[i++] = v;
-    ar >> serialization::make_nvp("vertex_property", get(vertex_all_t(), graph, v) );
-  }
-  while(E-- > 0){
-    int u; int v;
-    ar >> BOOST_SERIALIZATION_NVP(u);
-    ar >> BOOST_SERIALIZATION_NVP(v);
-    Edge e; bool inserted;
-    boost::tie(e,inserted) = add_edge(verts[u], verts[v], graph);
-    ar >> serialization::make_nvp("edge_property", get(edge_all_t(), graph, e) );
-  }
-  ar >> serialization::make_nvp("graph_property", get_property(graph, graph_all_t()) );
-}
-
-template<class Archive, class OEL, class VL, class D, class VP, class EP, class GP, class EL>
-inline void serialize(
-    Archive & ar,
-    boost::adjacency_list<OEL,VL,D,VP,EP,GP,EL> &graph,
-    const unsigned int file_version
-){
-    boost::serialization::split_free(ar, graph, file_version);
-}
-
-}//serialization
-}//boost
-
-
-#endif // ADJ_LIST_SERIALIZE_HPP
+namespace boost
+{
+
+namespace serialization
+{
+
+    // Turn off tracking for adjacency_list. It's not polymorphic, and we
+    // need to do this to enable saving of non-const adjacency lists.
+    template < class OEL, class VL, class D, class VP, class EP, class GP,
+        class EL >
+    struct tracking_level< boost::adjacency_list< OEL, VL, D, VP, EP, GP, EL > >
+    {
+        typedef mpl::integral_c_tag tag;
+        typedef mpl::int_< track_never > type;
+        BOOST_STATIC_CONSTANT(int, value = tracking_level::type::value);
+    };
+
+    template < class Archive, class OEL, class VL, class D, class VP, class EP,
+        class GP, class EL >
+    inline void save(Archive& ar,
+        const boost::adjacency_list< OEL, VL, D, VP, EP, GP, EL >& graph,
+        const unsigned int /* file_version */
+    )
+    {
+        typedef adjacency_list< OEL, VL, D, VP, EP, GP, EL > Graph;
+        typedef typename graph_traits< Graph >::vertex_descriptor Vertex;
+
+        int V = num_vertices(graph);
+        int E = num_edges(graph);
+        ar << BOOST_SERIALIZATION_NVP(V);
+        ar << BOOST_SERIALIZATION_NVP(E);
+
+        // assign indices to vertices
+        std::map< Vertex, int > indices;
+        int num = 0;
+        BGL_FORALL_VERTICES_T(v, graph, Graph)
+        {
+            indices[v] = num++;
+            ar << serialization::make_nvp(
+                "vertex_property", get(vertex_all_t(), graph, v));
+        }
+
+        // write edges
+        BGL_FORALL_EDGES_T(e, graph, Graph)
+        {
+            ar << serialization::make_nvp("u", indices[source(e, graph)]);
+            ar << serialization::make_nvp("v", indices[target(e, graph)]);
+            ar << serialization::make_nvp(
+                "edge_property", get(edge_all_t(), graph, e));
+        }
+
+        ar << serialization::make_nvp(
+            "graph_property", get_property(graph, graph_all_t()));
+    }
+
+    template < class Archive, class OEL, class VL, class D, class VP, class EP,
+        class GP, class EL >
+    inline void load(
+        Archive& ar, boost::adjacency_list< OEL, VL, D, VP, EP, GP, EL >& graph,
+        const unsigned int /* file_version */
+    )
+    {
+        typedef adjacency_list< OEL, VL, D, VP, EP, GP, EL > Graph;
+        typedef typename graph_traits< Graph >::vertex_descriptor Vertex;
+        typedef typename graph_traits< Graph >::edge_descriptor Edge;
+
+        unsigned int V;
+        ar >> BOOST_SERIALIZATION_NVP(V);
+        unsigned int E;
+        ar >> BOOST_SERIALIZATION_NVP(E);
+
+        std::vector< Vertex > verts(V);
+        int i = 0;
+        while (V-- > 0)
+        {
+            Vertex v = add_vertex(graph);
+            verts[i++] = v;
+            ar >> serialization::make_nvp(
+                "vertex_property", get(vertex_all_t(), graph, v));
+        }
+        while (E-- > 0)
+        {
+            int u;
+            int v;
+            ar >> BOOST_SERIALIZATION_NVP(u);
+            ar >> BOOST_SERIALIZATION_NVP(v);
+            Edge e;
+            bool inserted;
+            boost::tie(e, inserted) = add_edge(verts[u], verts[v], graph);
+            ar >> serialization::make_nvp(
+                "edge_property", get(edge_all_t(), graph, e));
+        }
+        ar >> serialization::make_nvp(
+            "graph_property", get_property(graph, graph_all_t()));
+    }
+
+    template < class Archive, class OEL, class VL, class D, class VP, class EP,
+        class GP, class EL >
+    inline void serialize(Archive& ar,
+        boost::adjacency_list< OEL, VL, D, VP, EP, GP, EL >& graph,
+        const unsigned int file_version)
+    {
+        boost::serialization::split_free(ar, graph, file_version);
+    }
+
+} // serialization
+} // boost
+
+#endif // BOOST_GRAPH_ADJ_LIST_SERIALIZE_HPP