]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/graph/adjacency_list_io.hpp
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / boost / boost / graph / adjacency_list_io.hpp
index aaba8a43c3e5dc0d074eceeb7a26a8a6356a82da..4a85bebd997e354af78eb71d5b4461dbfea965c8 100644 (file)
@@ -23,7 +23,8 @@
 // cout << write( G );
 // cout << write( G, NodePropertySubset(), EdgepropertySubset() );
 
-namespace boost {
+namespace boost
+{
 
 /* outline
         - basic property input
@@ -37,165 +38,164 @@ namespace boost {
 //===========================================================================
 // basic property input
 
-template<class Tag, class Value, class Next>
-std::istream& operator >> ( std::istream& in, property<Tag,Value,Next>& p )
+template < class Tag, class Value, class Next >
+std::istream& operator>>(std::istream& in, property< Tag, Value, Next >& p)
 {
-        in >> p.m_value >> p.m_base; // houpla !!
-        return in;
+    in >> p.m_value >> p.m_base; // houpla !!
+    return in;
 }
 
-template<class Tag, class Value>
-std::istream& operator >> ( std::istream& in, property<Tag,Value,no_property>& p )
+template < class Tag, class Value >
+std::istream& operator>>(
+    std::istream& in, property< Tag, Value, no_property >& p)
 {
-        in >> p.m_value;
-        return in;
+    in >> p.m_value;
+    return in;
 }
 
-inline std::istream& operator >> ( std::istream& in, no_property& )
-{
-        return in;
-}
+inline std::istream& operator>>(std::istream& in, no_property&) { return in; }
 
 // basic property input
 //===========================================================================
 // get property subsets
 
 // get a single property tagged Stag
-template<class Tag, class Value, class Next, class V, class Stag>
-void get
-( property<Tag,Value,Next>& p, const V& v, Stag s )
+template < class Tag, class Value, class Next, class V, class Stag >
+void get(property< Tag, Value, Next >& p, const V& v, Stag s)
 {
-        get( p.m_base,v,s );
+    get(p.m_base, v, s);
 }
 
-template<class Value, class Next, class V, class Stag>
-void get
-( property<Stag,Value,Next>& p, const V& v, Stag )
+template < class Value, class Next, class V, class Stag >
+void get(property< Stag, Value, Next >& p, const V& v, Stag)
 {
-        p.m_value = v;
+    p.m_value = v;
 }
 
 // get a subset of properties tagged Stag
-template<class Tag, class Value, class Next, 
-        class Stag, class Svalue, class Snext>
-void getSubset
-( property<Tag,Value,Next>& p, const property<Stag,Svalue,Snext>& s )
+template < class Tag, class Value, class Next, class Stag, class Svalue,
+    class Snext >
+void getSubset(
+    property< Tag, Value, Next >& p, const property< Stag, Svalue, Snext >& s)
 {
-        get( p, s.m_value, Stag() );
-        getSubset( p, s.m_base );
+    get(p, s.m_value, Stag());
+    getSubset(p, s.m_base);
 }
 
-template<class Tag, class Value, class Next, 
-        class Stag, class Svalue>
-void getSubset
-( property<Tag,Value,Next>& p, const property<Stag,Svalue,no_property>& s)
+template < class Tag, class Value, class Next, class Stag, class Svalue >
+void getSubset(property< Tag, Value, Next >& p,
+    const property< Stag, Svalue, no_property >& s)
 {
-        get( p, s.m_value, Stag() );
+    get(p, s.m_value, Stag());
 }
 
-inline void getSubset
-( no_property&, const no_property& )
-{
-}
+inline void getSubset(no_property&, const no_property&) {}
 
 #if !defined(BOOST_GRAPH_NO_BUNDLED_PROPERTIES)
-template<typename T, typename U>
-void getSubset(T& p, const U& s)
-{
-  p = s;
-}
-
-template<typename T>
-void getSubset(T&, const no_property&)
-{
-}
+template < typename T, typename U > void getSubset(T& p, const U& s) { p = s; }
 
+template < typename T > void getSubset(T&, const no_property&) {}
 
 #endif
 
 //  get property subset
 //===========================================================================
 // graph parser
-typedef enum{ PARSE_NUM_NODES, PARSE_VERTEX, PARSE_EDGE } GraphParserState;
+typedef enum
+{
+    PARSE_NUM_NODES,
+    PARSE_VERTEX,
+    PARSE_EDGE
+} GraphParserState;
 
-template<class Graph_t, class VertexProperty, class EdgeProperty, class VertexPropertySubset,
-class EdgePropertySubset>
+template < class Graph_t, class VertexProperty, class EdgeProperty,
+    class VertexPropertySubset, class EdgePropertySubset >
 struct GraphParser
 {
 
-        typedef Graph_t Graph;
-        
-        GraphParser( Graph* g ): graph(g)
-        {}      
-        
-        GraphParser& operator () ( std::istream& in )
-        {
-                typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-                std::vector<Vertex> nodes;
+    typedef Graph_t Graph;
 
-                GraphParserState state = PARSE_VERTEX;
+    GraphParser(Graph* g) : graph(g) {}
 
-                unsigned int numLine = 1;
-                char c;
-                while ( in.get(c) )
-                {
-                        if( c== '#' ) skip(in);
-                        else if( c== 'n' ) state = PARSE_NUM_NODES;
-                        else if( c== 'v' ) state = PARSE_VERTEX;
-                        else if( c== 'e' ) state = PARSE_EDGE;
-                        else if( c== '\n' ) numLine++;
-                        else if( !std::isspace(c) ){
-                                in.putback(c);
-                                if( state == PARSE_VERTEX ){
-                                        VertexPropertySubset readProp;
-                                        if( in >> readProp )
-                                        {
-                                                VertexProperty vp;
-                                                getSubset( vp, readProp );
-                                                nodes.push_back( add_vertex(vp, *graph) );
-                                        }
-                                        else
-                                                std::cerr<<"read vertex, parse error at line"<<numLine<<std::endl;
-                                }
-                                else if( state == PARSE_EDGE ) {
-                                        int source, target;
-                                        EdgePropertySubset readProp;
-                                        in >> source >> target;
-                                        if( in >> readProp ) 
-                                        {
-                                                EdgeProperty ep;
-                                                getSubset( ep, readProp );
-                                                add_edge(nodes[source], nodes[target], ep, *graph);
-                                        }
-                                        else
-                                                std::cerr<<"read edge, parse error at line"<<numLine<<std::endl;
-                                }
-                                else { // state == PARSE_NUM_NODES
-                                        int n;
-                                        if( in >> n ){
-                                                for( int i=0; i<n; ++i )
-                                                        nodes.push_back( add_vertex( *graph ));
-                                        }
-                                        else 
-                                                std::cerr<<"read num_nodes, parse error at line "<< numLine << std::endl;
-                                }
-                        }
-                }
-        return (*this);
-        }
-        
-        
-protected:
+    GraphParser& operator()(std::istream& in)
+    {
+        typedef typename graph_traits< Graph >::vertex_descriptor Vertex;
+        std::vector< Vertex > nodes;
 
-        Graph* graph;
-        
-        void skip( std::istream& in )
+        GraphParserState state = PARSE_VERTEX;
+
+        unsigned int numLine = 1;
+        char c;
+        while (in.get(c))
         {
-                char c = 0;
-                while( c!='\n' && !in.eof() ) 
-                       in.get(c);
+            if (c == '#')
+                skip(in);
+            else if (c == 'n')
+                state = PARSE_NUM_NODES;
+            else if (c == 'v')
+                state = PARSE_VERTEX;
+            else if (c == 'e')
+                state = PARSE_EDGE;
+            else if (c == '\n')
+                numLine++;
+            else if (!std::isspace(c))
+            {
                 in.putback(c);
+                if (state == PARSE_VERTEX)
+                {
+                    VertexPropertySubset readProp;
+                    if (in >> readProp)
+                    {
+                        VertexProperty vp;
+                        getSubset(vp, readProp);
+                        nodes.push_back(add_vertex(vp, *graph));
+                    }
+                    else
+                        std::cerr << "read vertex, parse error at line"
+                                  << numLine << std::endl;
+                }
+                else if (state == PARSE_EDGE)
+                {
+                    int source, target;
+                    EdgePropertySubset readProp;
+                    in >> source >> target;
+                    if (in >> readProp)
+                    {
+                        EdgeProperty ep;
+                        getSubset(ep, readProp);
+                        add_edge(nodes[source], nodes[target], ep, *graph);
+                    }
+                    else
+                        std::cerr << "read edge, parse error at line" << numLine
+                                  << std::endl;
+                }
+                else
+                { // state == PARSE_NUM_NODES
+                    int n;
+                    if (in >> n)
+                    {
+                        for (int i = 0; i < n; ++i)
+                            nodes.push_back(add_vertex(*graph));
+                    }
+                    else
+                        std::cerr << "read num_nodes, parse error at line "
+                                  << numLine << std::endl;
+                }
+            }
         }
+        return (*this);
+    }
+
+protected:
+    Graph* graph;
+
+    void skip(std::istream& in)
+    {
+        char c = 0;
+        while (c != '\n' && !in.eof())
+            in.get(c);
+        in.putback(c);
+    }
 };
 
 // parser
@@ -203,148 +203,142 @@ protected:
 // property printer
 
 #if defined(BOOST_GRAPH_NO_BUNDLED_PROPERTIES)
-template<class Graph, class Property>
-struct PropertyPrinter
+template < class Graph, class Property > struct PropertyPrinter
 {
-        typedef typename Property::value_type Value;
-        typedef typename Property::tag_type Tag;
-        typedef typename Property::next_type Next;
-        
-        PropertyPrinter( const Graph& g ):graph(&g){}
-        
-        template<class Val>
-        PropertyPrinter& operator () ( std::ostream& out, const Val& v )
-        {
-                typename property_map<Graph,Tag>::const_type ps = get(Tag(), *graph);
-                out << ps[ v ] <<" ";
-                PropertyPrinter<Graph,Next> print(*graph);
-                print(out, v);
-                return (*this);
-        }
+    typedef typename Property::value_type Value;
+    typedef typename Property::tag_type Tag;
+    typedef typename Property::next_type Next;
+
+    PropertyPrinter(const Graph& g) : graph(&g) {}
+
+    template < class Val >
+    PropertyPrinter& operator()(std::ostream& out, const Val& v)
+    {
+        typename property_map< Graph, Tag >::const_type ps = get(Tag(), *graph);
+        out << ps[v] << " ";
+        PropertyPrinter< Graph, Next > print(*graph);
+        print(out, v);
+        return (*this);
+    }
+
 private:
-        const Graph* graph;
+    const Graph* graph;
 };
 #else
-template<class Graph, typename Property>
-struct PropertyPrinter
+template < class Graph, typename Property > struct PropertyPrinter
 {
-        PropertyPrinter( const Graph& g ):graph(&g){}
-        
-        template<class Val>
-        PropertyPrinter& operator () ( std::ostream& out, const Val& v )
-        {
-                out << (*graph)[ v ] <<" ";
-                return (*this);
-        }
+    PropertyPrinter(const Graph& g) : graph(&g) {}
+
+    template < class Val >
+    PropertyPrinter& operator()(std::ostream& out, const Val& v)
+    {
+        out << (*graph)[v] << " ";
+        return (*this);
+    }
+
 private:
-        const Graph* graph;
+    const Graph* graph;
 };
 
-template<class Graph, typename Tag, typename Value, typename Next>
-struct PropertyPrinter<Graph, property<Tag, Value, Next> >
+template < class Graph, typename Tag, typename Value, typename Next >
+struct PropertyPrinter< Graph, property< Tag, Value, Next > >
 {
-        PropertyPrinter( const Graph& g ):graph(&g){}
-        
-        template<class Val>
-        PropertyPrinter& operator () ( std::ostream& out, const Val& v )
-        {
-                typename property_map<Graph,Tag>::const_type ps = get(Tag(), *graph);
-                out << ps[ v ] <<" ";
-                PropertyPrinter<Graph,Next> print(*graph);
-                print(out, v);
-                return (*this);
-        }
+    PropertyPrinter(const Graph& g) : graph(&g) {}
+
+    template < class Val >
+    PropertyPrinter& operator()(std::ostream& out, const Val& v)
+    {
+        typename property_map< Graph, Tag >::const_type ps = get(Tag(), *graph);
+        out << ps[v] << " ";
+        PropertyPrinter< Graph, Next > print(*graph);
+        print(out, v);
+        return (*this);
+    }
+
 private:
-        const Graph* graph;
+    const Graph* graph;
 };
 #endif
 
-template<class Graph>
-struct PropertyPrinter<Graph, no_property>
+template < class Graph > struct PropertyPrinter< Graph, no_property >
 {
-        PropertyPrinter( const Graph& ){}
+    PropertyPrinter(const Graph&) {}
 
-        template<class Val>
-        PropertyPrinter& operator () ( std::ostream&, const Val& ){ return *this; }
+    template < class Val >
+    PropertyPrinter& operator()(std::ostream&, const Val&)
+    {
+        return *this;
+    }
 };
 
 // property printer
 //=========================================================================
 // graph printer
 
-template<class Graph_t, class EdgeProperty>
-struct EdgePrinter
+template < class Graph_t, class EdgeProperty > struct EdgePrinter
 {
 
-        typedef Graph_t Graph;
-        typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-        
-        EdgePrinter( const Graph& g )
-                : graph(g)
-        {}      
-        
-        const EdgePrinter& operator () ( std::ostream& out ) const
-        {
-                // assign indices to vertices
-                std::map<Vertex,int> indices;
-                int num = 0;
-                BGL_FORALL_VERTICES_T(v, graph, Graph) {
-                        indices[v] = num++;
-                }
+    typedef Graph_t Graph;
+    typedef typename graph_traits< Graph >::vertex_descriptor Vertex;
 
-                // write edges
-                PropertyPrinter<Graph, EdgeProperty> print_Edge(graph);
-                out << "e" << std::endl;
-                BGL_FORALL_EDGES_T(e, graph, Graph) {
-                        out << indices[source(e,graph)] <<  " " << indices[target(e,graph)] << "  "; 
-                        print_Edge(out,e); 
-                        out << std::endl;
-                }
-                out << std::endl;            
-                return (*this);
+    EdgePrinter(const Graph& g) : graph(g) {}
+
+    const EdgePrinter& operator()(std::ostream& out) const
+    {
+        // assign indices to vertices
+        std::map< Vertex, int > indices;
+        int num = 0;
+        BGL_FORALL_VERTICES_T(v, graph, Graph) { indices[v] = num++; }
+
+        // write edges
+        PropertyPrinter< Graph, EdgeProperty > print_Edge(graph);
+        out << "e" << std::endl;
+        BGL_FORALL_EDGES_T(e, graph, Graph)
+        {
+            out << indices[source(e, graph)] << " " << indices[target(e, graph)]
+                << "  ";
+            print_Edge(out, e);
+            out << std::endl;
         }
-        
-protected:
+        out << std::endl;
+        return (*this);
+    }
 
-        const Graph& graph;
-        
+protected:
+    const Graph& graph;
 };
 
-template<class Graph, class V, class E>
-struct GraphPrinter: public EdgePrinter<Graph,E>
+template < class Graph, class V, class E >
+struct GraphPrinter : public EdgePrinter< Graph, E >
 {
-        GraphPrinter( const Graph& g )
-          : EdgePrinter<Graph,E>(g)
-        {}
-        
-        const GraphPrinter& operator () ( std::ostream& out ) const
+    GraphPrinter(const Graph& g) : EdgePrinter< Graph, E >(g) {}
+
+    const GraphPrinter& operator()(std::ostream& out) const
+    {
+        PropertyPrinter< Graph, V > printNode(this->graph);
+        out << "v" << std::endl;
+        BGL_FORALL_VERTICES_T(v, this->graph, Graph)
         {
-                PropertyPrinter<Graph, V> printNode(this->graph);
-                out << "v"<<std::endl;
-                BGL_FORALL_VERTICES_T(v, this->graph, Graph) {
-                        printNode(out,v); 
-                        out << std::endl;
-                }
-                
-                EdgePrinter<Graph,E>::operator ()( out );
-                return (*this);
+            printNode(out, v);
+            out << std::endl;
         }
+
+        EdgePrinter< Graph, E >::operator()(out);
+        return (*this);
+    }
 };
 
-template<class Graph, class E>
-struct GraphPrinter<Graph,no_property,E> 
-  : public EdgePrinter<Graph,E>
+template < class Graph, class E >
+struct GraphPrinter< Graph, no_property, E > : public EdgePrinter< Graph, E >
 {
-        GraphPrinter( const Graph& g )
-          : EdgePrinter<Graph,E>(g)
-        {}
-        
-        const GraphPrinter& operator () ( std::ostream& out ) const
-        {
-                out << "n "<< num_vertices(this->graph) << std::endl;
-                EdgePrinter<Graph,E>::operator ()( out );
-                return (*this);
-        }
+    GraphPrinter(const Graph& g) : EdgePrinter< Graph, E >(g) {}
+
+    const GraphPrinter& operator()(std::ostream& out) const
+    {
+        out << "n " << num_vertices(this->graph) << std::endl;
+        EdgePrinter< Graph, E >::operator()(out);
+        return (*this);
+    }
 };
 
 // graph printer
@@ -352,55 +346,60 @@ struct GraphPrinter<Graph,no_property,E>
 // user methods
 
 /// input stream for reading a graph
-template<class Graph, class VP, class EP, class VPS, class EPS>
-std::istream& operator >> ( std::istream& in, GraphParser<Graph,VP,EP,VPS,EPS> gp ) 
-{ 
-        gp(in); 
-        return in; 
+template < class Graph, class VP, class EP, class VPS, class EPS >
+std::istream& operator>>(
+    std::istream& in, GraphParser< Graph, VP, EP, VPS, EPS > gp)
+{
+    gp(in);
+    return in;
 }
 
 /// graph parser for given subsets of internal vertex and edge properties
-template<class EL, class VL, class D, class VP, class EP, class GP, class VPS, class EPS>
-GraphParser<adjacency_list<EL,VL,D,VP,EP,GP>,VP,EP,VPS,EPS> 
-read( adjacency_list<EL,VL,D,VP,EP,GP>& g, VPS vps, EPS eps )
+template < class EL, class VL, class D, class VP, class EP, class GP, class VPS,
+    class EPS >
+GraphParser< adjacency_list< EL, VL, D, VP, EP, GP >, VP, EP, VPS, EPS > read(
+    adjacency_list< EL, VL, D, VP, EP, GP >& g, VPS vps, EPS eps)
 {
-        return GraphParser<adjacency_list<EL,VL,D,VP,EP,GP>,VP,EP,VPS,EPS>(&g);
+    return GraphParser< adjacency_list< EL, VL, D, VP, EP, GP >, VP, EP, VPS,
+        EPS >(&g);
 }
 
 /// graph parser for all internal vertex and edge properties
-template<class EL, class VL, class D, class VP, class EP, class GP>
-GraphParser<adjacency_list<EL,VL,D,VP,EP,GP>,VP,EP,VP,EP> 
-read( adjacency_list<EL,VL,D,VP,EP,GP>& g )
+template < class EL, class VL, class D, class VP, class EP, class GP >
+GraphParser< adjacency_list< EL, VL, D, VP, EP, GP >, VP, EP, VP, EP > read(
+    adjacency_list< EL, VL, D, VP, EP, GP >& g)
 {
-        return GraphParser<adjacency_list<EL,VL,D,VP,EP,GP>,VP,EP,VP,EP>(&g);
+    return GraphParser< adjacency_list< EL, VL, D, VP, EP, GP >, VP, EP, VP,
+        EP >(&g);
 }
 
-
 /// output stream for writing a graph
-template<class Graph, class VP, class EP>
-std::ostream& operator << ( std::ostream& out, const GraphPrinter<Graph,VP,EP>& gp ) 
-{ 
-        gp(out); 
-        return out; 
+template < class Graph, class VP, class EP >
+std::ostream& operator<<(
+    std::ostream& out, const GraphPrinter< Graph, VP, EP >& gp)
+{
+    gp(out);
+    return out;
 }
 
 /// write the graph with given property subsets
-template<class EL, class VL, class D, class VP, class EP, class GP, class VPS, class EPS>
-GraphPrinter<adjacency_list<EL,VL,D,VP,EP,GP>,VPS,EPS> 
-write( const adjacency_list<EL,VL,D,VP,EP,GP>& g, VPS, EPS )
+template < class EL, class VL, class D, class VP, class EP, class GP, class VPS,
+    class EPS >
+GraphPrinter< adjacency_list< EL, VL, D, VP, EP, GP >, VPS, EPS > write(
+    const adjacency_list< EL, VL, D, VP, EP, GP >& g, VPS, EPS)
 {
-        return GraphPrinter<adjacency_list<EL,VL,D,VP,EP,GP>,VPS,EPS>(g);
+    return GraphPrinter< adjacency_list< EL, VL, D, VP, EP, GP >, VPS, EPS >(g);
 }
 
 /// write the graph with all internal vertex and edge properties
-template<class EL, class VL, class D, class VP, class EP, class GP>
-GraphPrinter<adjacency_list<EL,VL,D,VP,EP,GP>,VP,EP> 
-write( const adjacency_list<EL,VL,D,VP,EP,GP>& g )
+template < class EL, class VL, class D, class VP, class EP, class GP >
+GraphPrinter< adjacency_list< EL, VL, D, VP, EP, GP >, VP, EP > write(
+    const adjacency_list< EL, VL, D, VP, EP, GP >& g)
 {
-        return GraphPrinter<adjacency_list<EL,VL,D,VP,EP,GP>,VP,EP>(g);
+    return GraphPrinter< adjacency_list< EL, VL, D, VP, EP, GP >, VP, EP >(g);
 }
 
 // user methods
 //=========================================================================
-}// boost
+} // boost
 #endif