libzypp  13.10.6
Dep.cc
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #include <map>
13 #include <iostream>
14 
15 #include "zypp/base/Exception.h"
16 #include "zypp/base/String.h"
17 
18 #include "zypp/Dep.h"
19 
21 namespace zypp
22 {
23 
24  namespace
25  {
26 
27  std::map<std::string,Dep::for_use_in_switch> _table;
28 
29  Dep::for_use_in_switch parse( const std::string & strval_r )
30  {
31  if ( _table.empty() )
32  {
33  // initialize it
34  _table["provides"] = Dep::PROVIDES_e;
35  _table["prerequires"] = Dep::PREREQUIRES_e;
36  _table["requires"] = Dep::REQUIRES_e;
37  _table["conflicts"] = Dep::CONFLICTS_e;
38  _table["obsoletes"] = Dep::OBSOLETES_e;
39  _table["recommends"] = Dep::RECOMMENDS_e;
40  _table["suggests"] = Dep::SUGGESTS_e;
41  _table["enhances"] = Dep::ENHANCES_e;
42  _table["supplements"] = Dep::SUPPLEMENTS_e;
43  }
44 
45  std::map<std::string,Dep::for_use_in_switch>::const_iterator it
46  = _table.find( str::toLower( strval_r ) );
47  if ( it == _table.end() )
48  {
49  ZYPP_THROW( Exception("Dep parse: illegal string value '"+strval_r+"'") );
50  }
51  return it->second;
52  }
53  }
54 
56 
57  const Dep Dep::PROVIDES ( Dep::PROVIDES_e );
59  const Dep Dep::REQUIRES ( Dep::REQUIRES_e );
60  const Dep Dep::CONFLICTS ( Dep::CONFLICTS_e );
61  const Dep Dep::OBSOLETES ( Dep::OBSOLETES_e );
62  const Dep Dep::RECOMMENDS ( Dep::RECOMMENDS_e );
63  const Dep Dep::SUGGESTS ( Dep::SUGGESTS_e );
64  const Dep Dep::ENHANCES ( Dep::ENHANCES_e );
66 
68  //
69  // METHOD NAME : Dep::Dep
70  // METHOD TYPE : Ctor
71  //
72  Dep::Dep( const std::string & strval_r )
73  : _type( parse( strval_r ) )
74  {}
75 
77  //
78  // METHOD NAME : Dep::asString
79  // METHOD TYPE : const std::string &
80  //
81  const std::string & Dep::asString() const
82  {
83  static std::map<for_use_in_switch,std::string> _table;
84  if ( _table.empty() )
85  {
86  // initialize it
87  _table[PROVIDES_e] = "provides";
88  _table[PREREQUIRES_e] = "prerequires";
89  _table[REQUIRES_e] = "requires";
90  _table[CONFLICTS_e] = "conflicts";
91  _table[OBSOLETES_e] = "obsoletes";
92  _table[RECOMMENDS_e] = "recommends";
93  _table[SUGGESTS_e] = "suggests";
94  _table[ENHANCES_e] = "enhances";
95  _table[SUPPLEMENTS_e] = "supplements";
96  }
97  return _table[_type];
98  }
99 
101 } // namespace zypp
Dep(const std::string &strval_r)
Ctor from string.
Definition: Dep.cc:72
static const Dep RECOMMENDS
Definition: Dep.h:47
static const Dep SUPPLEMENTS
Definition: Dep.h:50
static const Dep CONFLICTS
Definition: Dep.h:45
for_use_in_switch
Enumarators provided only for use inSwitch statement.
Definition: Dep.h:56
static std::map< std::string, ServiceType::Type > _table
Definition: ServiceType.cc:21
#define ZYPP_THROW(EXCPT)
Drops a logline and throws the Exception.
Definition: Exception.h:320
static const Dep SUGGESTS
Definition: Dep.h:48
static const Dep ENHANCES
Definition: Dep.h:49
static const Dep REQUIRES
Definition: Dep.h:44
static const Dep PROVIDES
Definition: Dep.h:42
std::string toLower(const std::string &s)
Return lowercase version of s.
Definition: String.cc:166
const std::string & asString() const
String representation of dependency type.
Definition: Dep.cc:81
static const Dep OBSOLETES
Definition: Dep.h:46
static const Dep PREREQUIRES
Definition: Dep.h:43
for_use_in_switch _type
The operator.
Definition: Dep.h:93