libzypp  11.13.5
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 
24 namespace 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:
77  Edition() {}
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: public std::binary_function<Edition,Edition,int>
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 } // namespace zypp
184 #endif // ZYPP_EDITION_H