Imported Upstream version 14.45.0
[platform/upstream/libzypp.git] / zypp / repo / RepoType.cc
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9
10 #include <iostream>
11 #include "zypp/base/NamedValue.h"
12 #include "zypp/repo/RepoException.h"
13 #include "RepoType.h"
14
15 namespace zypp
16 {
17 namespace repo
18 {
19   ///////////////////////////////////////////////////////////////////
20   namespace
21   {
22     static NamedValue<RepoType::Type> & table()
23     {
24       static NamedValue<RepoType::Type> & _t( *new NamedValue<RepoType::Type> );
25       if ( _t.empty() )
26       {
27         _t( RepoType::RPMMD_e )         | "rpm-md"      | "rpmmd"|"repomd"|"yum"|"up2date";
28         _t( RepoType::YAST2_e )         | "yast2"       | "yast"|"susetags";
29         _t( RepoType::RPMPLAINDIR_e )   | "plaindir";
30         _t( RepoType::NONE_e )          | "NONE"        | "none";
31       }
32       return _t;
33     }
34   } // namespace
35   ///////////////////////////////////////////////////////////////////
36
37   const RepoType RepoType::RPMMD        ( RepoType::RPMMD_e );
38   const RepoType RepoType::YAST2        ( RepoType::YAST2_e );
39   const RepoType RepoType::RPMPLAINDIR  ( RepoType::RPMPLAINDIR_e );
40   const RepoType RepoType::NONE         ( RepoType::NONE_e );
41
42   RepoType::RepoType(const std::string & strval_r)
43     : _type(parse(strval_r))
44   {}
45
46   RepoType::Type RepoType::parse( const std::string & strval_r )
47   {
48     RepoType::Type type;
49     if ( ! table().getValue( str::toLower( strval_r ), type ) )
50     {
51       ZYPP_THROW( RepoUnknownTypeException( "Unknown repository type '" + strval_r + "'") );
52     }
53     return type;
54   }
55
56   const std::string & RepoType::asString() const
57   {
58     return table().getName( _type );
59   }
60
61
62   } // ns repo
63 } // ns zypp
64
65 // vim: set ts=2 sts=2 sw=2 et ai: