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