libzypp 17.31.23
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#include <functional>
18
19#include <zypp/IdStringType.h>
20#include <zypp/RelCompare.h>
21#include <zypp/Range.h>
22
24namespace zypp
25{
26
28 //
29 // CLASS NAME : Edition
30 //
60 class Edition : public IdStringType<Edition>
61 {
62 public:
64 typedef unsigned epoch_t;
65
67 static const epoch_t noepoch = 0;
68
73 static const Edition noedition;
74
75 public:
78
80 explicit Edition( IdString::IdType id_r ) : _str( id_r ) {}
81 explicit Edition( const IdString & idstr_r ) : _str( idstr_r ) {}
82 explicit Edition( const std::string & str_r ) : _str( str_r ) {}
83 explicit Edition( const char * cstr_r ) : _str( cstr_r ) {}
84
86 Edition( const std::string & version_r,
87 const std::string & release_r,
88 epoch_t epoch_r = noepoch );
90 Edition( const char * version_r,
91 const char * release_r,
92 epoch_t epoch_r = noepoch );
93
95 Edition( const std::string & version_r,
96 const std::string & release_r,
97 const std::string & epoch_r );
99 Edition( const char * version_r,
100 const char * release_r,
101 const char * epoch_r );
102
103 public:
105 epoch_t epoch() const;
106
108 std::string version() const;
109
111 std::string release() const;
112
113 public:
118
123
124 public:
130 static int match( const Edition & lhs, const Edition & rhs ) { return match( lhs.idStr(), rhs.idStr() ); }
131 static int match( const Edition & lhs, const IdString & rhs ) { return match( lhs.idStr(), rhs ); }
132 static int match( const Edition & lhs, const std::string & rhs ) { return _doMatch( lhs.c_str(), rhs.c_str() ); }
133 static int match( const Edition & lhs, const char * rhs ) { return _doMatch( lhs.c_str(), rhs );}
134
135 static int match( const IdString & lhs, const Edition & rhs ) { return match( lhs, rhs.idStr() ); }
136 static int match( const IdString & lhs, const IdString & rhs ) { return lhs.compareEQ( rhs ) ? 0 :
137 _doMatch( lhs.c_str(), rhs.c_str() ); }
138 static int match( const IdString & lhs, const std::string & rhs ) { return _doMatch( lhs.c_str(), rhs.c_str() ); }
139 static int match( const IdString & lhs, const char * rhs ) { return _doMatch( lhs.c_str(), rhs ); }
140
141 static int match( const std::string & lhs, const Edition & rhs ) { return _doMatch( lhs.c_str(), rhs.c_str() );}
142 static int match( const std::string & lhs, const IdString & rhs ) { return _doMatch( lhs.c_str(), rhs.c_str() ); }
143 static int match( const std::string & lhs, const std::string & rhs ) { return _doMatch( lhs.c_str(), rhs.c_str() ); }
144 static int match( const std::string & lhs, const char * rhs ) { return _doMatch( lhs.c_str(), rhs ); }
145
146 static int match( const char * lhs, const Edition & rhs ) { return _doMatch( lhs, rhs.c_str() );}
147 static int match( const char * lhs, const IdString & rhs ) { return _doMatch( lhs, rhs.c_str() ); }
148 static int match( const char * lhs, const std::string & rhs ) { return _doMatch( lhs, rhs.c_str() ); }
149 static int match( const char * lhs, const char * rhs ) { return _doMatch( lhs, rhs ); }
150
151 int match( const Edition & rhs ) const { return match( idStr(), rhs.idStr() ); }
152 int match( const IdString & rhs ) const { return match( idStr(), rhs ); }
153 int match( const std::string & rhs ) const { return _doMatch( c_str(), rhs.c_str() ); }
154 int match( const char * rhs ) const { return _doMatch( c_str(), rhs ); }
156
160 struct Match
161 {
162 int operator()( const Edition & lhs, const Edition & rhs ) const
163 { return Edition::match( lhs, rhs ); }
164 };
165
170
171 private:
172 static int _doCompare( const char * lhs, const char * rhs );
173 static int _doMatch( const char * lhs, const char * rhs );
174
175 private:
176 friend class IdStringType<Edition>;
178 };
180
182 inline std::ostream & dumpAsXmlOn( std::ostream & str, const Edition & obj )
183 { return str << "<edition"
184 << " epoch=\"" << obj.epoch() << "\""
185 << " version=\"" << obj.version() << "\""
186 << " release=\"" << obj.release() << "\""
187 << "/>";
188 }
189
191} // namespace zypp
193#endif // ZYPP_EDITION_H
Edition represents [epoch:]version[-release]
Definition: Edition.h:61
static int match(const IdString &lhs, const IdString &rhs)
Definition: Edition.h:136
static int match(const Edition &lhs, const Edition &rhs)
Definition: Edition.h:130
int match(const std::string &rhs) const
Definition: Edition.h:153
IdString _str
Definition: Edition.h:177
unsigned epoch_t
Type of an epoch.
Definition: Edition.h:64
std::string version() const
Version.
Definition: Edition.cc:94
static int match(const std::string &lhs, const Edition &rhs)
Definition: Edition.h:141
static int match(const char *lhs, const Edition &rhs)
Definition: Edition.h:146
std::ostream & dumpAsXmlOn(std::ostream &str, const Edition &obj)
XML output.
Definition: Edition.h:182
static const epoch_t noepoch
Value representing noepoch.
Definition: Edition.h:67
int match(const char *rhs) const
Definition: Edition.h:154
Edition()
Default ctor: noedition.
Definition: Edition.h:77
zypp::Compare< Edition > Compare
compare functor.
Definition: Edition.h:117
int match(const IdString &rhs) const
Definition: Edition.h:152
static int match(const Edition &lhs, const char *rhs)
Definition: Edition.h:133
Edition(const char *cstr_r)
Definition: Edition.h:83
static int match(const std::string &lhs, const std::string &rhs)
Definition: Edition.h:143
int match(const Edition &rhs) const
Definition: Edition.h:151
static int match(const std::string &lhs, const char *rhs)
Definition: Edition.h:144
Range< Edition, Match > MatchRange
Edition Range based on Match.
Definition: Edition.h:169
std::string release() const
Release.
Definition: Edition.cc:110
Edition(const IdString &idstr_r)
Definition: Edition.h:81
Range< Edition > CompareRange
Edition Range based on Compare.
Definition: Edition.h:122
static int match(const IdString &lhs, const char *rhs)
Definition: Edition.h:139
static int match(const Edition &lhs, const std::string &rhs)
Definition: Edition.h:132
static int match(const char *lhs, const std::string &rhs)
Definition: Edition.h:148
static int match(const char *lhs, const char *rhs)
Definition: Edition.h:149
Edition(IdString::IdType id_r)
Ctor taking edition as string.
Definition: Edition.h:80
static int _doMatch(const char *lhs, const char *rhs)
Definition: Edition.cc:127
epoch_t epoch() const
Epoch.
Definition: Edition.cc:82
static int match(const IdString &lhs, const std::string &rhs)
Definition: Edition.h:138
static int match(const Edition &lhs, const IdString &rhs)
Definition: Edition.h:131
static int _doCompare(const char *lhs, const char *rhs)
Definition: Edition.cc:120
static int match(const char *lhs, const IdString &rhs)
Definition: Edition.h:147
Edition(const std::string &str_r)
Definition: Edition.h:82
static const Edition noedition
Value representing noedition ("") This is in fact a valid Edition.
Definition: Edition.h:73
static int match(const std::string &lhs, const IdString &rhs)
Definition: Edition.h:142
static int match(const IdString &lhs, const Edition &rhs)
Definition: Edition.h:135
Base class for creating IdString based types.
Definition: IdStringType.h:87
IdString idStr() const
Definition: IdStringType.h:101
const char * c_str() const
Definition: IdStringType.h:105
Access to the sat-pools string space.
Definition: IdString.h:43
const char * c_str() const
Conversion to const char *
Definition: IdString.cc:50
sat::detail::IdType IdType
Definition: IdString.h:45
bool compareEQ(const IdString &rhs) const
Fast compare equal.
Definition: IdString.h:107
String related utilities and Regular expression matching.
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:2
General compare functor returning -1, 0, 1.
Definition: RelCompare.h:87
match functor.
Definition: Edition.h:161
int operator()(const Edition &lhs, const Edition &rhs) const
Definition: Edition.h:162