1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
18 ///////////////////////////////////////////////////////////////////
20 { /////////////////////////////////////////////////////////////////
22 ///////////////////////////////////////////////////////////////////
26 /** Enumeration class of dependency types.
27 * \ingroup g_EnumerationClass
31 friend bool operator==( const Dep & lhs, const Dep & rhs );
32 friend bool operator!=( const Dep & lhs, const Dep & rhs );
33 /** Arbitrary order to allow Dep as key in std::container. */
34 friend bool operator<( const Dep & lhs, const Dep & rhs );
36 /** \name Dependency types
37 * These are the \em real dependency type contants to
38 * use. Don't mind that it's not an enum.
39 * \see \ref zypp::Dep::inSwitch
42 static const Dep PROVIDES;
43 static const Dep PREREQUIRES;
44 static const Dep REQUIRES;
45 static const Dep CONFLICTS;
46 static const Dep OBSOLETES;
47 static const Dep RECOMMENDS;
48 static const Dep SUGGESTS;
49 static const Dep FRESHENS;
50 static const Dep ENHANCES;
51 static const Dep SUPPLEMENTS;
54 /** Enumarators provided \b only for use \ref inSwitch statement.
57 enum for_use_in_switch {
71 * Legal values for \a strval_r are the constants names
72 * (case insignificant).
74 * \throw PARSE if \a strval_r is not legal.
75 * \todo refine exceptions and check throw.
78 Dep( const std::string & strval_r );
80 /** String representation of dependency type.
81 * \return The constants names lowercased.
83 const std::string & asString() const;
85 /** Enumarator provided for use in \c switch statement. */
86 for_use_in_switch inSwitch() const
90 /** Ctor to initialize the dependency type contants. */
91 Dep( for_use_in_switch type_r )
95 for_use_in_switch _type;
97 ///////////////////////////////////////////////////////////////////
99 /** \relates Dep Stream output */
100 inline std::ostream & operator<<( std::ostream & str, const Dep & obj )
101 { return str << obj.asString(); }
103 ///////////////////////////////////////////////////////////////////
106 inline bool operator==( const Dep & lhs, const Dep & rhs )
107 { return lhs._type == rhs._type; }
110 inline bool operator!=( const Dep & lhs, const Dep & rhs )
111 { return lhs._type != rhs._type; }
114 inline bool operator<( const Dep & lhs, const Dep & rhs )
115 { return lhs._type < rhs._type; }
117 /////////////////////////////////////////////////////////////////
119 ///////////////////////////////////////////////////////////////////