zypper port starts. zypp2 to zypp
[platform/upstream/libzypp.git] / zypp / repo / RepoType.cc
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9
10 #include <map>
11 #include "zypp/base/Exception.h"
12 #include "RepoType.h"
13
14 namespace zypp
15 {
16 namespace repo
17 {
18
19   static std::map<std::string,RepoType::Type> _table;
20
21   const RepoType RepoType::RPMMD(RepoType::RPMMD_e);
22   const RepoType RepoType::YAST2(RepoType::YAST2_e);
23   //const RepoType RepoType::NONE(RepoType::NONE_e);
24
25   RepoType::RepoType(const std::string & strval_r)
26     : _type(parse(strval_r))
27   {}
28
29   RepoType::Type RepoType::parse(const std::string & strval_r)
30   {
31     if (_table.empty())
32     {
33       // initialize it
34       _table["repomd"] = RepoType::RPMMD_e;
35       _table["rpmmd"] = RepoType::RPMMD_e;
36       _table["rpm-md"] = RepoType::RPMMD_e;
37       _table["yum"] = RepoType::RPMMD_e;
38       _table["susetags"] = RepoType::YAST2_e;
39       _table["yast"] = RepoType::YAST2_e;
40       _table["yast2"] = RepoType::YAST2_e;
41       _table["NONE"] = _table["none"] = RepoType::NONE_e;
42     }
43
44     std::map<std::string,RepoType::Type>::const_iterator it
45       = _table.find(strval_r);
46     if (it == _table.end())
47     {
48       ZYPP_THROW(Exception(
49         "RepoType parse: illegal string value '" + strval_r + "'"));
50     }
51     return it->second;
52   }
53
54
55   const std::string & RepoType::asString() const
56   {
57     static std::map<Type, std::string> _table;
58     if ( _table.empty() )
59     {
60       // initialize it
61       _table[RPMMD_e]   = "rpm-md";
62       _table[YAST2_e]   = "yast2";
63       _table[NONE_e] = "NONE";
64     }
65     return _table[_type];
66   }
67
68
69   } // ns repo
70 } // ns zypp
71
72 // vim: set ts=2 sts=2 sw=2 et ai: