libzypp 17.38.7
Edition.h
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\---------------------------------------------------------------------*/
12#ifndef ZYPP_EDITION_H
13#define ZYPP_EDITION_H
14
15#include <iosfwd>
16#include <string>
17
18#include <zypp/IdStringType.h>
19#include <zypp/RelCompare.h>
20#include <zypp/Range.h>
21
23namespace zypp
24{
25
27 //
28 // CLASS NAME : Edition
29 //
59 class ZYPP_API Edition : public IdStringType<Edition>
60 {
61 public:
63 using epoch_t = unsigned int;
64
66 static const epoch_t noepoch = 0;
67
72 static const Edition noedition;
73
74 public:
77
79 explicit Edition( IdString::IdType id_r ) : _str( id_r ) {}
80 explicit Edition( const IdString & idstr_r ) : _str( idstr_r ) {}
81 explicit Edition( const std::string & str_r ) : _str( str_r ) {}
82 explicit Edition( const char * cstr_r ) : _str( cstr_r ) {}
83
85 Edition( const std::string & version_r,
86 const std::string & release_r,
87 epoch_t epoch_r = noepoch );
89 Edition( const char * version_r,
90 const char * release_r,
91 epoch_t epoch_r = noepoch );
92
94 Edition( const std::string & version_r,
95 const std::string & release_r,
96 const std::string & epoch_r );
98 Edition( const char * version_r,
99 const char * release_r,
100 const char * epoch_r );
101
102 public:
104 epoch_t epoch() const;
105
107 std::string version() const;
108
110 std::string release() const;
111
112 public:
117
122
123 public:
129 static int match( const Edition & lhs, const Edition & rhs ) { return match( lhs.idStr(), rhs.idStr() ); }
130 static int match( const Edition & lhs, const IdString & rhs ) { return match( lhs.idStr(), rhs ); }
131 static int match( const Edition & lhs, const std::string & rhs ) { return _doMatch( lhs.c_str(), rhs.c_str() ); }
132 static int match( const Edition & lhs, const char * rhs ) { return _doMatch( lhs.c_str(), rhs );}
133
134 static int match( const IdString & lhs, const Edition & rhs ) { return match( lhs, rhs.idStr() ); }
135 static int match( const IdString & lhs, const IdString & rhs ) { return lhs.compareEQ( rhs ) ? 0 :
136 _doMatch( lhs.c_str(), rhs.c_str() ); }
137 static int match( const IdString & lhs, const std::string & rhs ) { return _doMatch( lhs.c_str(), rhs.c_str() ); }
138 static int match( const IdString & lhs, const char * rhs ) { return _doMatch( lhs.c_str(), rhs ); }
139
140 static int match( const std::string & lhs, const Edition & rhs ) { return _doMatch( lhs.c_str(), rhs.c_str() );}
141 static int match( const std::string & lhs, const IdString & rhs ) { return _doMatch( lhs.c_str(), rhs.c_str() ); }
142 static int match( const std::string & lhs, const std::string & rhs ) { return _doMatch( lhs.c_str(), rhs.c_str() ); }
143 static int match( const std::string & lhs, const char * rhs ) { return _doMatch( lhs.c_str(), rhs ); }
144
145 static int match( const char * lhs, const Edition & rhs ) { return _doMatch( lhs, rhs.c_str() );}
146 static int match( const char * lhs, const IdString & rhs ) { return _doMatch( lhs, rhs.c_str() ); }
147 static int match( const char * lhs, const std::string & rhs ) { return _doMatch( lhs, rhs.c_str() ); }
148 static int match( const char * lhs, const char * rhs ) { return _doMatch( lhs, rhs ); }
149
150 int match( const Edition & rhs ) const { return match( idStr(), rhs.idStr() ); }
151 int match( const IdString & rhs ) const { return match( idStr(), rhs ); }
152 int match( const std::string & rhs ) const { return _doMatch( c_str(), rhs.c_str() ); }
153 int match( const char * rhs ) const { return _doMatch( c_str(), rhs ); }
155
159 struct Match
160 {
161 int operator()( const Edition & lhs, const Edition & rhs ) const
162 { return Edition::match( lhs, rhs ); }
163 };
164
169
170 private:
171 static int _doCompare( const char * lhs, const char * rhs ) ZYPP_API;
172 static int _doMatch( const char * lhs, const char * rhs );
173
174 private:
175 friend class IdStringType<Edition>;
177 };
178
179
181 inline std::ostream & dumpAsXmlOn( std::ostream & str, const Edition & obj )
182 { return str << "<edition"
183 << " epoch=\"" << obj.epoch() << "\""
184 << " version=\"" << obj.version() << "\""
185 << " release=\"" << obj.release() << "\""
186 << "/>";
187 }
188
190} // namespace zypp
192#endif // ZYPP_EDITION_H
Edition represents [epoch:]version[-release].
Definition Edition.h:60
static int match(const IdString &lhs, const IdString &rhs)
Definition Edition.h:135
static int match(const Edition &lhs, const Edition &rhs)
Definition Edition.h:129
Range< Edition, Match > MatchRange
Edition Range based on Match.
Definition Edition.h:168
int match(const std::string &rhs) const
Definition Edition.h:152
IdString _str
Definition Edition.h:176
std::string version() const
Version.
Definition Edition.cc:96
static int match(const std::string &lhs, const Edition &rhs)
Definition Edition.h:140
zypp::Compare< Edition > Compare
compare functor.
Definition Edition.h:116
static int match(const char *lhs, const Edition &rhs)
Definition Edition.h:145
static const epoch_t noepoch
Value representing noepoch.
Definition Edition.h:66
int match(const char *rhs) const
Definition Edition.h:153
Edition()
Default ctor: noedition.
Definition Edition.h:76
int match(const IdString &rhs) const
Definition Edition.h:151
static int match(const Edition &lhs, const char *rhs)
Definition Edition.h:132
Edition(const char *cstr_r)
Definition Edition.h:82
static int match(const std::string &lhs, const std::string &rhs)
Definition Edition.h:142
int match(const Edition &rhs) const
Definition Edition.h:150
static int match(const std::string &lhs, const char *rhs)
Definition Edition.h:143
unsigned int epoch_t
Type of an epoch.
Definition Edition.h:63
std::string release() const
Release.
Definition Edition.cc:112
Edition(const IdString &idstr_r)
Definition Edition.h:80
static int match(const IdString &lhs, const char *rhs)
Definition Edition.h:138
static int match(const Edition &lhs, const std::string &rhs)
Definition Edition.h:131
static int match(const char *lhs, const std::string &rhs)
Definition Edition.h:147
static int match(const char *lhs, const char *rhs)
Definition Edition.h:148
Edition(IdString::IdType id_r)
Ctor taking edition as string.
Definition Edition.h:79
static int _doMatch(const char *lhs, const char *rhs)
Definition Edition.cc:129
epoch_t epoch() const
Epoch.
Definition Edition.cc:84
static int _doCompare(const char *lhs, const char *rhs) ZYPP_API
Definition Edition.cc:122
Range< Edition > CompareRange
Edition Range based on Compare.
Definition Edition.h:121
static int match(const IdString &lhs, const std::string &rhs)
Definition Edition.h:137
static int match(const Edition &lhs, const IdString &rhs)
Definition Edition.h:130
static int match(const char *lhs, const IdString &rhs)
Definition Edition.h:146
Edition(const std::string &str_r)
Definition Edition.h:81
static const Edition noedition
Value representing noedition ("") This is in fact a valid Edition.
Definition Edition.h:72
static int match(const std::string &lhs, const IdString &rhs)
Definition Edition.h:141
static int match(const IdString &lhs, const Edition &rhs)
Definition Edition.h:134
Access to the sat-pools string space.
Definition IdString.h:55
const char * c_str() const
Conversion to const char *.
Definition IdString.cc:51
sat::detail::IdType IdType
Definition IdString.h:57
bool compareEQ(const IdString &rhs) const
Fast compare equal.
Definition IdString.h:129
IdString idStr() const
const char * c_str() const
String related utilities and Regular expression matching.
Easy-to use interface to the ZYPP dependency resolver.
std::ostream & dumpAsXmlOn(std::ostream &str, const Repository &obj)
relates: Repository XML output
const Arch Arch_empty ZYPP_API
relates: Arch This is an empty Arch represented by an empty string.
Definition Arch.h:173
General compare functor returning -1, 0, 1.
Definition RelCompare.h:85
match functor.
Definition Edition.h:160
int operator()(const Edition &lhs, const Edition &rhs) const
Definition Edition.h:161