]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/libs/graph/example/edge_iterator_constructor.cpp
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / boost / libs / graph / example / edge_iterator_constructor.cpp
index e8fe0a3afd9bae791e2da8b1c6f5044b133996f8..837a2c810a7a136075594b6180d2090f00ee7fec 100644 (file)
 
   Sample output:
 
-  0 --> 1 
-  1 --> 2 3 0 
-  2 --> 4 1 
-  3 --> 4 1 
-  4 --> 2 3 
+  0 --> 1
+  1 --> 2 3 0
+  2 --> 4 1
+  3 --> 4 1
+  4 --> 2 3
 
  */
 
 #include <boost/graph/graph_utility.hpp>
 #include <boost/graph/adjacency_list.hpp>
 
-class edge_stream_iterator {
+class edge_stream_iterator
+{
 public:
-  typedef std::input_iterator_tag  iterator_category;
-  typedef std::pair<int,int>  value_type;
-  typedef std::ptrdiff_t      difference_type;
-  typedef const value_type*   pointer;
-  typedef const value_type&   reference;
+    typedef std::input_iterator_tag iterator_category;
+    typedef std::pair< int, int > value_type;
+    typedef std::ptrdiff_t difference_type;
+    typedef const value_type* pointer;
+    typedef const value_type& reference;
 
-  edge_stream_iterator() : m_stream(0), m_end_marker(false) {}
-  edge_stream_iterator(std::istream& s) : m_stream(&s) { m_read(); }
-  reference operator*() const { return m_edge; }
-  edge_stream_iterator& operator++() { 
-    m_read(); 
-    return *this;
-  }
-  edge_stream_iterator operator++(int)  {
-    edge_stream_iterator tmp = *this;
-    m_read();
-    return tmp;
-  }
-protected:
-  std::istream* m_stream;
-  value_type m_edge;
-  bool m_end_marker;
-  void m_read() {
-    m_end_marker = (*m_stream) ? true : false;
-    if (m_end_marker) {
-      *m_stream >> m_edge.first >> m_edge.second;
+    edge_stream_iterator() : m_stream(0), m_end_marker(false) {}
+    edge_stream_iterator(std::istream& s) : m_stream(&s) { m_read(); }
+    reference operator*() const { return m_edge; }
+    edge_stream_iterator& operator++()
+    {
+        m_read();
+        return *this;
+    }
+    edge_stream_iterator operator++(int)
+    {
+        edge_stream_iterator tmp = *this;
+        m_read();
+        return tmp;
     }
-    m_end_marker = (*m_stream) ? true : false;
-  }
-  friend bool operator==(const edge_stream_iterator& x,
-                         const edge_stream_iterator& y);
 
+protected:
+    std::istream* m_stream;
+    value_type m_edge;
+    bool m_end_marker;
+    void m_read()
+    {
+        m_end_marker = (*m_stream) ? true : false;
+        if (m_end_marker)
+        {
+            *m_stream >> m_edge.first >> m_edge.second;
+        }
+        m_end_marker = (*m_stream) ? true : false;
+    }
+    friend bool operator==(
+        const edge_stream_iterator& x, const edge_stream_iterator& y);
 };
-bool operator==(const edge_stream_iterator& x,
-                const edge_stream_iterator& y)
+bool operator==(const edge_stream_iterator& x, const edge_stream_iterator& y)
 {
-  return (x.m_stream == y.m_stream && x.m_end_marker == y.m_end_marker) 
-    || (x.m_end_marker == false && y.m_end_marker == false);
+    return (x.m_stream == y.m_stream && x.m_end_marker == y.m_end_marker)
+        || (x.m_end_marker == false && y.m_end_marker == false);
 }
-bool operator!=(const edge_stream_iterator& x,
-                const edge_stream_iterator& y)
+bool operator!=(const edge_stream_iterator& x, const edge_stream_iterator& y)
 {
-  return !(x == y);
+    return !(x == y);
 }
 
-
-
-int
-main(int argc, const char** argv)
+int main(int argc, const char** argv)
 {
-  typedef boost::adjacency_list<> IteratorConstructibleGraph;
-  typedef boost::graph_traits<IteratorConstructibleGraph> Traits;
-  Traits::vertices_size_type size_V;
-  Traits::edges_size_type size_E;
+    typedef boost::adjacency_list<> IteratorConstructibleGraph;
+    typedef boost::graph_traits< IteratorConstructibleGraph > Traits;
+    Traits::vertices_size_type size_V;
+    Traits::edges_size_type size_E;
 
-  std::ifstream f(argc >= 2 ? argv[1] : "edge_iterator_constructor.dat");
-  f >> size_V >> size_E;
+    std::ifstream f(argc >= 2 ? argv[1] : "edge_iterator_constructor.dat");
+    f >> size_V >> size_E;
 
-  edge_stream_iterator edge_iter(f), end;
+    edge_stream_iterator edge_iter(f), end;
 #if defined(BOOST_MSVC) && BOOST_MSVC <= 1300
-  // VC++ can't handle the iterator constructor
-  IteratorConstructibleGraph G(size_V);
-  while (edge_iter != end) {
-    int i, j;
-    boost::tie(i, j) = *edge_iter++;
-    boost::add_edge(i, j, G);
-  }
+    // VC++ can't handle the iterator constructor
+    IteratorConstructibleGraph G(size_V);
+    while (edge_iter != end)
+    {
+        int i, j;
+        boost::tie(i, j) = *edge_iter++;
+        boost::add_edge(i, j, G);
+    }
 #else
-  IteratorConstructibleGraph G(edge_iter, end, size_V);
+    IteratorConstructibleGraph G(edge_iter, end, size_V);
 #endif
-  boost::print_graph(G);
+    boost::print_graph(G);
 
-  return 0;
+    return 0;
 }