- ServiceType introduced
[platform/upstream/libzypp.git] / zypp / repo / ServiceType.cc
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9
10 #include <iostream>
11 #include <map>
12 #include "zypp/repo/RepoException.h"
13 #include "ServiceType.h"
14
15 namespace zypp
16 {
17   namespace repo
18   {
19
20
21   static std::map<std::string,ServiceType::Type> _table;
22
23   const ServiceType ServiceType::RIS(ServiceType::RIS_e);
24   const ServiceType ServiceType::NONE(ServiceType::NONE_e);
25
26   ServiceType::ServiceType(const std::string & strval_r)
27     : _type(parse(strval_r))
28   {}
29
30   ServiceType::Type ServiceType::parse(const std::string & strval_r)
31   {
32     if (_table.empty())
33     {
34       // initialize it
35       _table["ris"] = ServiceType::RIS_e;
36       _table["RIS"] = ServiceType::RIS_e;
37       _table["nu"] = ServiceType::RIS_e;
38       _table["NU"] = ServiceType::RIS_e;
39       _table["NONE"] = _table["none"] = ServiceType::NONE_e;
40     }
41
42     std::map<std::string,ServiceType::Type>::const_iterator it
43       = _table.find(strval_r);
44     if (it == _table.end())
45     {
46       ZYPP_THROW(RepoUnknownTypeException(
47         "Unknown service type '" + strval_r + "'"));
48     }
49     return it->second;
50   }
51
52
53   const std::string & ServiceType::asString() const
54   {
55     static std::map<Type, std::string> _table;
56     if ( _table.empty() )
57     {
58       // initialize it
59       _table[RIS_e]  = "ris";
60       _table[NONE_e] = "NONE";
61     }
62     return _table[_type];
63   }
64
65
66   } // ns repo
67 } // ns zypp
68
69 // vim: set ts=2 sts=2 sw=2 et ai: