libzypp 17.37.10

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>
12#include <zypp/repo/RepoException.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" |"rpm"|"rpmmd"|"repomd"|"yum"|"up2date";
28 _t( RepoType::YAST2_e ) | "yast2" |"yast"|"susetags";
29 _t( RepoType::RPMPLAINDIR_e ) | "plaindir";
30 _t( RepoType::NONE_e ) | "N/A" |"n/a"|"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 );
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:
NamedValue.h
RepoException.h
RepoType.h
zypp::repo::RepoUnknownTypeException
thrown when it was impossible to determine this repo type.
Definition RepoException.h:143
zypp::repo
Definition DeltaCandidates.cc:30
zypp::str::toLower
std::string toLower(const std::string &s)
Return lowercase version of s.
Definition String.cc:180
zypp
Easy-to use interface to the ZYPP dependency resolver.
Definition Application.cc:20
zypp::repo::RepoType
Repository type enumeration.
Definition RepoType.h:29
zypp::repo::RepoType::parse
RepoType::Type parse(const std::string &strval_r)
Definition RepoType.cc:46
zypp::repo::RepoType::YAST2
static const RepoType YAST2
Definition RepoType.h:31
zypp::repo::RepoType::asString
const std::string & asString() const
Definition RepoType.cc:56
zypp::repo::RepoType::RepoType
RepoType()
Definition RepoType.h:43
zypp::repo::RepoType::Type
Type
Definition RepoType.h:36
zypp::repo::RepoType::RPMMD_e
@ RPMMD_e
Definition RepoType.h:38
zypp::repo::RepoType::NONE_e
@ NONE_e
Definition RepoType.h:37
zypp::repo::RepoType::YAST2_e
@ YAST2_e
Definition RepoType.h:39
zypp::repo::RepoType::RPMPLAINDIR_e
@ RPMPLAINDIR_e
Definition RepoType.h:40
zypp::repo::RepoType::RPMMD
static const RepoType RPMMD
Definition RepoType.h:30
zypp::repo::RepoType::_type
Type _type
Definition RepoType.h:55
zypp::repo::RepoType::NONE
static const RepoType NONE
Definition RepoType.h:33
zypp::repo::RepoType::RPMPLAINDIR
static const RepoType RPMPLAINDIR
Definition RepoType.h:32
ZYPP_THROW
#define ZYPP_THROW(EXCPT)
Drops a logline and throws the Exception.
Definition Exception.h:459