1 /////////////////////////////////////////////////////////////////////////////
2 //
3 // (C) Copyright Ion Gaztanaga 2008
4 //
5 // Distributed under the Boost Software License, Version 1.0.
6 //    (See accompanying file LICENSE_1_0.txt or copy at
7 //          http://www.boost.org/LICENSE_1_0.txt)
8 //
9 // See http://www.boost.org/libs/intrusive for documentation.
10 //
11 /////////////////////////////////////////////////////////////////////////////
12 
13 #ifndef BOOST_INTRUSIVE_PRIORITY_COMPARE_HPP
14 #define BOOST_INTRUSIVE_PRIORITY_COMPARE_HPP
15 
16 #include <boost/intrusive/detail/config_begin.hpp>
17 #include <boost/intrusive/intrusive_fwd.hpp>
18 
19 #include <boost/intrusive/detail/minimal_less_equal_header.hpp>
20 
21 #if defined(BOOST_HAS_PRAGMA_ONCE)
22 #  pragma once
23 #endif
24 
25 namespace boost {
26 namespace intrusive {
27 
28 template <class T>
29 struct priority_compare
30 {
31    //Compatibility with std::binary_function
32    typedef T      first_argument_type;
33    typedef T      second_argument_type;
34    typedef bool   result_type;
35 
operator ()boost::intrusive::priority_compare36    bool operator()(const T &val, const T &val2) const
37    {
38       return priority_order(val, val2);
39    }
40 };
41 
42 /// @cond
43 
44 template<class Less, class T>
45 struct get_prio
46 {
47    typedef Less type;
48 };
49 
50 
51 template<class T>
52 struct get_prio<void, T>
53 {
54    typedef ::boost::intrusive::priority_compare<T> type;
55 };
56 
57 /// @endcond
58 
59 } //namespace intrusive
60 } //namespace boost
61 
62 #include <boost/intrusive/detail/config_end.hpp>
63 
64 #endif //BOOST_INTRUSIVE_PRIORITY_COMPARE_HPP
65