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 ENHANCES;
50 static const Dep SUPPLEMENTS;
53 /** Enumarators provided \b only for use \ref inSwitch statement.
56 enum for_use_in_switch {
69 * Legal values for \a strval_r are the constants names
70 * (case insignificant).
72 * \throw PARSE if \a strval_r is not legal.
73 * \todo refine exceptions and check throw.
76 Dep( const std::string & strval_r );
78 /** String representation of dependency type.
79 * \return The constants names lowercased.
81 const std::string & asString() const;
83 /** Enumarator provided for use in \c switch statement. */
84 for_use_in_switch inSwitch() const
88 /** Ctor to initialize the dependency type contants. */
89 Dep( for_use_in_switch type_r )
93 for_use_in_switch _type;
95 ///////////////////////////////////////////////////////////////////
97 /** \relates Dep Stream output */
98 inline std::ostream & operator<<( std::ostream & str, const Dep & obj )
99 { return str << obj.asString(); }
101 ///////////////////////////////////////////////////////////////////
104 inline bool operator==( const Dep & lhs, const Dep & rhs )
105 { return lhs._type == rhs._type; }
108 inline bool operator!=( const Dep & lhs, const Dep & rhs )
109 { return lhs._type != rhs._type; }
112 inline bool operator<( const Dep & lhs, const Dep & rhs )
113 { return lhs._type < rhs._type; }
115 /////////////////////////////////////////////////////////////////
117 ///////////////////////////////////////////////////////////////////