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 /** Translated dependency type (capitalized).
84 * \return The capitalized constants names translated.
86 std::string asUserString() const;
88 /** Enumarator provided for use in \c switch statement. */
89 for_use_in_switch inSwitch() const
93 /** Ctor to initialize the dependency type contants. */
94 Dep( for_use_in_switch type_r )
98 for_use_in_switch _type;
100 ///////////////////////////////////////////////////////////////////
102 /** \relates Dep Stream output */
103 inline std::ostream & operator<<( std::ostream & str, const Dep & obj )
104 { return str << obj.asString(); }
106 ///////////////////////////////////////////////////////////////////
109 inline bool operator==( const Dep & lhs, const Dep & rhs )
110 { return lhs._type == rhs._type; }
113 inline bool operator!=( const Dep & lhs, const Dep & rhs )
114 { return lhs._type != rhs._type; }
117 inline bool operator<( const Dep & lhs, const Dep & rhs )
118 { return lhs._type < rhs._type; }
120 /////////////////////////////////////////////////////////////////
122 ///////////////////////////////////////////////////////////////////