Deprecate MediaAccess::downloads (accidentally deleted)
[platform/upstream/libzypp.git] / zypp / Dep.h
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9 /** \file       zypp/Dep.h
10  *
11 */
12 #ifndef ZYPP_DEP_H
13 #define ZYPP_DEP_H
14
15 #include <iosfwd>
16 #include <string>
17
18 ///////////////////////////////////////////////////////////////////
19 namespace zypp
20 { /////////////////////////////////////////////////////////////////
21
22   ///////////////////////////////////////////////////////////////////
23   //
24   //    CLASS NAME : Dep
25   //
26   /** Enumeration class of dependency types.
27    * \ingroup g_EnumerationClass
28   */
29   struct Dep
30   {
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 );
35
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
40     */
41     //@{
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;
51     //@}
52
53     /** Enumarators provided \b only for use \ref inSwitch statement.
54      * \see inSwitch
55     */
56     enum for_use_in_switch {
57       PROVIDES_e,
58       PREREQUIRES_e,
59       REQUIRES_e,
60       CONFLICTS_e,
61       OBSOLETES_e,
62       RECOMMENDS_e,
63       SUGGESTS_e,
64       ENHANCES_e,
65       SUPPLEMENTS_e,
66     };
67
68     /** Ctor from string.
69      * Legal values for \a strval_r are the constants names
70      * (case insignificant).
71      *
72      * \throw PARSE if \a strval_r is not legal.
73      * \todo refine exceptions and check throw.
74     */
75     explicit
76     Dep( const std::string & strval_r );
77
78     /** String representation of dependency type.
79      * \return The constants names lowercased.
80     */
81     const std::string & asString() const;
82
83     /** Enumarator provided for use in \c switch statement. */
84     for_use_in_switch inSwitch() const
85     { return _type; }
86
87   private:
88     /** Ctor to initialize the dependency type contants. */
89     Dep( for_use_in_switch type_r )
90     : _type( type_r )
91     {}
92     /** The operator. */
93     for_use_in_switch _type;
94   };
95   ///////////////////////////////////////////////////////////////////
96
97   /** \relates Dep Stream output */
98   inline std::ostream & operator<<( std::ostream & str, const Dep & obj )
99   { return str << obj.asString(); }
100
101   ///////////////////////////////////////////////////////////////////
102
103   /** \relates Dep */
104   inline bool operator==( const Dep & lhs, const Dep & rhs )
105   { return lhs._type == rhs._type; }
106
107   /** \relates Dep */
108   inline bool operator!=( const Dep & lhs, const Dep & rhs )
109   { return lhs._type != rhs._type; }
110
111   /** \relates Dep */
112   inline bool operator<( const Dep & lhs, const Dep & rhs )
113   { return lhs._type < rhs._type; }
114
115   /////////////////////////////////////////////////////////////////
116 } // namespace zypp
117 ///////////////////////////////////////////////////////////////////
118 #endif // ZYPP_DEP_H