libzypp 17.31.23
SerialNumber.h
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\---------------------------------------------------------------------*/
12#ifndef ZYPP_BASE_SERIALNUMBER_H
13#define ZYPP_BASE_SERIALNUMBER_H
14
15#include <iosfwd>
16
17#include <zypp/base/PtrTypes.h>
18
20namespace zypp
21{
22
24 //
25 // CLASS NAME : SerialNumber
26 //
45 {
46 friend std::ostream & operator<<( std::ostream & str, const SerialNumber & obj );
47
48 public:
50 SerialNumber( bool dirty_r = false );
52 virtual ~SerialNumber();
53
54 public:
55 void setDirty()
56 { _dirty = true; }
57
58 public:
59 bool dirty() const
60 { return _dirty; }
61
62 bool clean() const
63 { return !_dirty; }
64
65 unsigned serial() const
66 {
67 if ( _dirty )
68 {
69 ++_serial;
70 _dirty = false;
71 }
72 return _serial;
73 }
74
75 private:
76 mutable bool _dirty;
77 mutable unsigned _serial;
78 };
80
82 std::ostream & operator<<( std::ostream & str, const SerialNumber & obj );
83
85 //
86 // CLASS NAME : SerialNumberWatcher
87 //
123 {
124 friend std::ostream & operator<<( std::ostream & str, const SerialNumberWatcher & obj );
125
126 public:
137 SerialNumberWatcher( unsigned serial_r = (unsigned)-1 );
139 SerialNumberWatcher( const SerialNumber & serial_r );
141 virtual ~SerialNumberWatcher();
142
143 public:
145 bool isDirty( unsigned serial_r ) const
146 { return( _serial != serial_r ); }
148 bool isDirty( const SerialNumber & serial_r ) const
149 { return( _serial != serial_r.serial() ); }
150
152 bool isClean( unsigned serial_r ) const
153 { return( _serial == serial_r ); }
155 bool isClean( const SerialNumber & serial_r ) const
156 { return( _serial == serial_r.serial() ); }
157
158 public:
160 bool remember( unsigned serial_r ) const
161 {
162 if ( isDirty( serial_r ) )
163 {
164 _serial = serial_r;
165 return true;
166 }
167 return false;
168 }
170 bool remember( const SerialNumber & serial_r ) const
171 { return remember( serial_r.serial() ); }
172
173 private:
174 mutable unsigned _serial;
175 };
177
179 std::ostream & operator<<( std::ostream & str, const SerialNumberWatcher & obj );
180
182} // namespace zypp
184#endif // ZYPP_BASE_SERIALNUMBER_H
Simple serial number watcher.
Definition: SerialNumber.h:123
bool isClean(const SerialNumber &serial_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: SerialNumber.h:155
bool remember(unsigned serial_r) const
Return isDirty, storing serial_r as new value.
Definition: SerialNumber.h:160
bool isClean(unsigned serial_r) const
Return whether serial_r is still unchanged.
Definition: SerialNumber.h:152
bool isDirty(unsigned serial_r) const
Return whether serial_r differs.
Definition: SerialNumber.h:145
bool isDirty(const SerialNumber &serial_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: SerialNumber.h:148
virtual ~SerialNumberWatcher()
Dtor.
Definition: SerialNumber.cc:86
friend std::ostream & operator<<(std::ostream &str, const SerialNumberWatcher &obj)
Definition: SerialNumber.cc:94
bool remember(const SerialNumber &serial_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: SerialNumber.h:170
Simple serial number provider.
Definition: SerialNumber.h:45
virtual ~SerialNumber()
Dtor.
Definition: SerialNumber.cc:44
friend std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
Definition: SerialNumber.cc:52
bool clean() const
Definition: SerialNumber.h:62
unsigned serial() const
Definition: SerialNumber.h:65
bool dirty() const
Definition: SerialNumber.h:59
String related utilities and Regular expression matching.
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:2
std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
Definition: SerialNumber.cc:52