libzypp  11.13.5
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 
20 namespace 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