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 TCompare = 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
60 { return range_detail::overlaps( op, rhs.op, TCompare()( value, rhs.value ) ); }
62 ///////////////////////////////////////////////////////////////////
64 template<class Tp, class TCompare>
65 inline bool overlaps( const Range<Tp,TCompare> & lhs,
66 const Range<Tp,TCompare> & rhs )
67 { return lhs.overlaps( rhs ); }
69 ///////////////////////////////////////////////////////////////////
71 template<class Tp, class TCompare>
72 inline bool operator==( const Range<Tp,TCompare> & lhs,
73 const Range<Tp,TCompare> & rhs )
75 return( lhs.op == rhs.op
76 && ( lhs.op == Rel::ANY
77 || lhs.op == Rel::NONE
78 || relCompare( Rel::EQ, lhs.value, rhs.value, TCompare() )
83 template<class Tp, class TCompare>
84 inline bool operator!=( const Range<Tp,TCompare> & lhs,
85 const Range<Tp,TCompare> & rhs )
86 { return ! ( lhs == rhs ); }
88 /////////////////////////////////////////////////////////////////
90 ///////////////////////////////////////////////////////////////////
91 #endif // ZYPP_RANGE_H