1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
15 #include "zypp/RelCompare.h"
17 ///////////////////////////////////////////////////////////////////
19 { /////////////////////////////////////////////////////////////////
21 namespace range_detail
23 bool overlaps( Rel lhs, Rel rhs, int cmp );
26 ///////////////////////////////////////////////////////////////////
33 template<class _Tp, class _Compare = Compare<_Tp> >
41 /** Default ctor: \ref Rel::ANY. */
46 /** Ctor taking \a _Tp (\ref Rel::EQ). */
47 Range( const _Tp & value_r )
52 /** Ctor taking \ref Rel and \a _Tp. */
53 Range( Rel op_r, const _Tp & value_r )
58 /** Return whether two Ranges overlap. */
59 bool overlaps( const Range & rhs ) const
61 return range_detail::overlaps( op, rhs.op,
62 _Compare()( value, rhs.value ) );
65 ///////////////////////////////////////////////////////////////////
67 template<class _Tp, class _Compare>
68 inline bool overlaps( const Range<_Tp,_Compare> & lhs,
69 const Range<_Tp,_Compare> & rhs )
70 { return lhs.overlaps( rhs ); }
72 ///////////////////////////////////////////////////////////////////
74 template<class _Tp, class _Compare>
75 inline bool operator==( const Range<_Tp,_Compare> & lhs,
76 const Range<_Tp,_Compare> & rhs )
78 return( lhs.op == rhs.op
79 && ( lhs.op == Rel::ANY
80 || lhs.op == Rel::NONE
81 || relCompare( Rel::EQ, lhs.value, rhs.value,
87 template<class _Tp, class _Compare>
88 inline bool operator!=( const Range<_Tp,_Compare> & lhs,
89 const Range<_Tp,_Compare> & rhs )
90 { return ! ( lhs == rhs ); }
92 /////////////////////////////////////////////////////////////////
94 ///////////////////////////////////////////////////////////////////
95 #endif // ZYPP_RANGE_H