LCOV - code coverage report
Current view: top level - usr/include/boost/graph/detail - edge.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 0 7 0.0 %
Date: 2022-12-08 13:48:47 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : //
       2             : //=======================================================================
       3             : // Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
       4             : // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
       5             : //
       6             : // Distributed under the Boost Software License, Version 1.0. (See
       7             : // accompanying file LICENSE_1_0.txt or copy at
       8             : // http://www.boost.org/LICENSE_1_0.txt)
       9             : //=======================================================================
      10             : 
      11             : #ifndef BOOST_GRAPH_DETAIL_EDGE_HPP
      12             : #define BOOST_GRAPH_DETAIL_EDGE_HPP
      13             : 
      14             : #include <iosfwd>
      15             : 
      16             : #include <boost/functional/hash.hpp>
      17             : 
      18             : namespace boost {
      19             : 
      20             :   namespace  detail {
      21             : 
      22             :     template <typename Directed, typename Vertex>
      23             :     struct edge_base
      24             :     {
      25           0 :       inline edge_base() {} 
      26           0 :       inline edge_base(Vertex s, Vertex d)
      27           0 :         : m_source(s), m_target(d) { }
      28             :       Vertex m_source;
      29             :       Vertex m_target;
      30             :     };
      31             : 
      32             :     template <typename Directed, typename Vertex>
      33             :     class edge_desc_impl  : public edge_base<Directed,Vertex> {
      34             :       typedef edge_desc_impl                              self;
      35             :       typedef edge_base<Directed,Vertex> Base;
      36             :     public: 
      37             :       typedef void                              property_type;
      38             :       
      39           0 :       inline edge_desc_impl() : m_eproperty(0) {} 
      40             :       
      41           0 :       inline edge_desc_impl(Vertex s, Vertex d, const property_type* eplug)
      42           0 :         : Base(s,d), m_eproperty(const_cast<property_type*>(eplug)) { }
      43             :       
      44           0 :       property_type* get_property() { return m_eproperty; }
      45             :       const property_type* get_property() const { return m_eproperty; }
      46             :       
      47             :       //  protected:
      48             :       property_type* m_eproperty;
      49             :     };
      50             : 
      51             :     template <class D, class V>
      52             :     inline bool
      53             :     operator==(const detail::edge_desc_impl<D,V>& a, 
      54             :                const detail::edge_desc_impl<D,V>& b)
      55             :     {
      56             :       return a.get_property() == b.get_property();
      57             :     }
      58             :     template <class D, class V>
      59             :     inline bool
      60             :     operator!=(const detail::edge_desc_impl<D,V>& a, 
      61             :                const detail::edge_desc_impl<D,V>& b)
      62             :     {
      63             :       return ! (a.get_property() == b.get_property());
      64             :     }
      65             : 
      66             :     // Order edges according to the address of their property object
      67             :     template <class D, class V>
      68             :     inline bool
      69             :     operator<(const detail::edge_desc_impl<D,V>& a, 
      70             :                const detail::edge_desc_impl<D,V>& b)
      71             :     {
      72             :       return a.get_property() < b.get_property();
      73             :     }
      74             :     template <class D, class V>
      75             :     inline bool
      76             :     operator<=(const detail::edge_desc_impl<D,V>& a, 
      77             :                const detail::edge_desc_impl<D,V>& b)
      78             :     {
      79             :       return a.get_property() <= b.get_property();
      80             :     }
      81             :     template <class D, class V>
      82             :     inline bool
      83             :     operator>(const detail::edge_desc_impl<D,V>& a, 
      84             :                const detail::edge_desc_impl<D,V>& b)
      85             :     {
      86             :       return a.get_property() > b.get_property();
      87             :     }
      88             :     template <class D, class V>
      89             :     inline bool
      90             :     operator>=(const detail::edge_desc_impl<D,V>& a, 
      91             :                const detail::edge_desc_impl<D,V>& b)
      92             :     {
      93             :       return a.get_property() >= b.get_property();
      94             :     }
      95             : 
      96             :   } //namespace detail
      97             :   
      98             : } // namespace boost
      99             : 
     100             : namespace std {
     101             :   template <class Char, class Traits, class D, class V>
     102             :   std::basic_ostream<Char, Traits>& 
     103             :   operator<<(std::basic_ostream<Char, Traits>& os,
     104             :              const boost::detail::edge_desc_impl<D,V>& e)
     105             :   {
     106             :     return os << "(" << e.m_source << "," << e.m_target << ")";
     107             :   }
     108             : }
     109             : 
     110             : // Boost's functional/hash
     111             : namespace boost {
     112             :   template<typename D, typename V>
     113             :   struct hash<boost::detail::edge_desc_impl<D, V> >
     114             :   {
     115             :     std::size_t operator()(const boost::detail::edge_desc_impl<D, V> & x) const
     116             :     { return hash_value(x.get_property()); }
     117             :   };
     118             : }
     119             : 
     120             : 
     121             : #endif // BOOST_GRAPH_DETAIL_DETAIL_EDGE_HPP

Generated by: LCOV version 1.14