LCOV - code coverage report
Current view: top level - usr/include/boost/pending - indirect_cmp.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 0 2 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             : 
      12             : #ifndef BOOST_INDIRECT_CMP_HPP
      13             : #define BOOST_INDIRECT_CMP_HPP
      14             : 
      15             : #include <functional>
      16             : #include <boost/config.hpp>
      17             : #include <boost/property_map/property_map.hpp>
      18             : 
      19             : namespace boost {
      20             : 
      21             :   //: indirect_cmp
      22             :   //
      23             :   // could also do this with compose_f_gx_hx, and the member binder...
      24             :   //
      25             :   //!category: functors
      26             :   //!component: type
      27             :   //!tparam: ReadablePropertyMap - a model of ReadablePropertyMap
      28             :   //!definition: functor.h
      29             :   template <class ReadablePropertyMap, class Compare>
      30             :   class indirect_cmp {
      31             :   public:
      32             :     typedef typename boost::property_traits<ReadablePropertyMap>::value_type T;
      33             :     typedef typename boost::property_traits<ReadablePropertyMap>::key_type K;
      34             :     typedef K first_argument_type;
      35             :     typedef K second_argument_type;
      36             :     typedef bool result_type;
      37           0 :     inline indirect_cmp(const ReadablePropertyMap& df, const Compare& c = Compare())
      38           0 :       : d(df), cmp(c) { }
      39             : 
      40             :     template <class A, class B>
      41             :     inline bool 
      42             :     operator()(const A& u, const B& v) const {
      43             :       const T& du = get(d, u);
      44             :       const T& dv = get(d, v);
      45             :       return cmp(du, dv);
      46             :     }
      47             :   protected:
      48             :     ReadablePropertyMap d;
      49             :     Compare cmp;
      50             :   };
      51             : 
      52             :   template <typename Compare, typename ReadablePropertyMap>
      53             :   indirect_cmp<ReadablePropertyMap, Compare>
      54             :   make_indirect_cmp(const Compare& cmp, ReadablePropertyMap pmap) {
      55             :     indirect_cmp<ReadablePropertyMap, Compare> p(pmap, cmp);
      56             :     return p;
      57             :   }
      58             : 
      59             :   template <class ReadablePropertyMap>
      60             :   class indirect_pmap {
      61             :   public:
      62             :     typedef typename boost::property_traits<ReadablePropertyMap>::value_type T;
      63             :     typedef typename boost::property_traits<ReadablePropertyMap>::key_type K;
      64             :     typedef K argument_type;
      65             :     typedef T result_type;
      66             :     inline indirect_pmap(const ReadablePropertyMap& df)
      67             :       : d(df) { }
      68             : 
      69             :     inline T operator()(const K& u) const {
      70             :       return get(d, u);
      71             :     }
      72             :   protected:
      73             :     ReadablePropertyMap d;
      74             :   };
      75             : 
      76             :   template <typename ReadablePropertyMap>
      77             :   indirect_pmap<ReadablePropertyMap>
      78             :   make_indirect_pmap(ReadablePropertyMap pmap) {
      79             :     indirect_pmap<ReadablePropertyMap> f(pmap);
      80             :     return f;
      81             :   }
      82             : 
      83             : 
      84             : } // namespace boost
      85             : 
      86             : 
      87             : #endif // GGCL_INDIRECT_CMP_HPP

Generated by: LCOV version 1.14