libzypp  15.28.6
RepoType.cc
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
9 
10 #include <iostream>
11 #include "zypp/base/NamedValue.h"
13 #include "RepoType.h"
14 
15 namespace zypp
16 {
17 namespace repo
18 {
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
36 
37  const RepoType RepoType::RPMMD ( RepoType::RPMMD_e );
38  const RepoType RepoType::YAST2 ( RepoType::YAST2_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:
thrown when it was impossible to determine this repo type.
#define ZYPP_THROW(EXCPT)
Drops a logline and throws the Exception.
Definition: Exception.h:321
RepoType::Type parse(const std::string &strval_r)
Definition: RepoType.cc:46
const std::string & asString() const
Definition: RepoType.cc:56
static const RepoType NONE
Definition: RepoType.h:32
std::string toLower(const std::string &s)
Return lowercase version of s.
Definition: String.cc:175
static const RepoType RPMMD
Definition: RepoType.h:29
static const RepoType YAST2
Definition: RepoType.h:30
static const RepoType RPMPLAINDIR
Definition: RepoType.h:31