libzypp  15.28.6
ProvideNumericId.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_BASE_PROVIDENUMERICID_H
13 #define ZYPP_BASE_PROVIDENUMERICID_H
14 
16 namespace zypp
17 {
18  namespace base
20  {
21 
23  //
24  // CLASS NAME : ProvideNumericId
25  //
44  template<class TDerived, class TNumericIdType>
46  {
47  public:
49  TNumericIdType numericId() const
50  { return _numericId; }
51 
52  protected:
55  : _numericId( nextId() )
56  {}
59  : _numericId( nextId() )
60  {}
63  { return *this; }
66  {}
67  protected:
71  ProvideNumericId( const void *const )
72  : _numericId( 0 )
73  {}
74  private:
76  static TNumericIdType nextId()
77  {
78  static TNumericIdType _staticCounter = 0;
79  // Assert not returning 0
80  return ++_staticCounter;
81  }
83  const TNumericIdType _numericId;
84  };
86 
88  } // namespace base
91 } // namespace zypp
93 #endif // ZYPP_BASE_PROVIDENUMERICID_H
ProvideNumericId(const ProvideNumericId &)
Copy ctor.
static TNumericIdType nextId()
Provide the next Id to use.
Base class for objects providing a numeric Id.
ProvideNumericId & operator=(const ProvideNumericId &)
Assign.
TNumericIdType numericId() const
ProvideNumericId(const void *const )
No-Id ctor (0).
const TNumericIdType _numericId