1 #ifndef color_generic_operation_compare_less_or_equal 2 #define color_generic_operation_compare_less_or_equal 3 4 // using namespace ::color::compare::less_or_equal 5 6 #include "../../generic/model.hpp" 7 8 9 10 11 12 namespace color 13 { 14 namespace compare 15 { 16 17 template < typename category_name > less_or_equal(::color::model<category_name> const & left,::color::model<category_name> const & right)18 bool less_or_equal 19 ( 20 ::color::model< category_name > const& left 21 ,::color::model< category_name > const& right 22 ) 23 { 24 return left.container() <= right.container(); 25 } 26 27 template< typename tag_name, typename category_name > less_or_equal(::color::constant::base<tag_name> const & left,::color::model<category_name> const & right)28 bool less_or_equal 29 ( 30 ::color::constant::base< tag_name > const& left 31 ,::color::model< category_name > const& right 32 ) 33 { 34 return ::color::compare::less_or_equal< category_name >( ::color::model< category_name >( left ), right ); 35 } 36 37 template < typename category_name, typename tag_name > less_or_equal(::color::model<category_name> const & left,::color::constant::base<tag_name> const & right)38 bool less_or_equal 39 ( 40 ::color::model< category_name > const& left 41 ,::color::constant::base< tag_name > const& right 42 ) 43 { 44 return ::color::compare::less_or_equal< category_name >( ::color::model< category_name >( left ), right ); 45 } 46 47 namespace operators 48 { 49 50 template< typename category_name > 51 inline 52 bool operator <=(::color::model<category_name> const & left,::color::model<category_name> const & right)53 operator <=( ::color::model< category_name > const& left, ::color::model< category_name > const& right ) 54 { 55 return ::color::compare::less_or_equal( left, right ); 56 } 57 58 template< typename tag_name, typename category_name > 59 inline 60 bool operator <=(::color::constant::base<tag_name> const & left,::color::model<category_name> const & right)61 operator <=( ::color::constant::base< tag_name > const& left, ::color::model< category_name > const& right ) 62 { 63 return ::color::compare::less_or_equal( left, right ); 64 } 65 66 template< typename category_name, typename tag_name > 67 inline 68 bool operator <=(::color::model<category_name> const & left,::color::constant::base<tag_name> const & right)69 operator <=(::color::model< category_name > const& left, ::color::constant::base< tag_name > const& right ) 70 { 71 return ::color::compare::less_or_equal( left, right ); 72 } 73 74 } 75 76 namespace functor 77 { 78 79 template< typename category_name > 80 class less_or_equal 81 { 82 public: 83 typedef ::color::model< category_name > value_type; operator ()(value_type const & left,value_type const & right) const84 bool operator ()( value_type const& left, value_type const& right )const 85 { 86 return ::color::compare::less_or_equal( left, right ); 87 } 88 }; 89 90 } 91 92 } 93 } 94 95 #if !defined( COLOR_DO_NOT_SPECIALIZE_STD_COMPARISON ) 96 97 namespace std 98 { 99 100 template< typename category_name > 101 struct less_equal< ::color::model< category_name > > 102 { 103 private: 104 typedef ::color::model< category_name > value_type; 105 public: operator ()std::less_equal106 bool operator ()( value_type const& left, value_type const& right )const 107 { 108 return ::color::compare::less_or_equal( left, right ); 109 } 110 }; 111 112 } 113 114 #endif 115 116 #endif 117