gloox  1.0.9
atomicrefcount.h
1 /*
2  Copyright (c) 2007-2013 by Jakob Schroeter <js@camaya.net>
3  This file is part of the gloox library. http://camaya.net/gloox
4 
5  This software is distributed under a license. The full license
6  agreement can be found in the file LICENSE in this distribution.
7  This software may not be copied, modified, sold or distributed
8  other than expressed in the named license agreement.
9 
10  This software is distributed without any warranty.
11 */
12 
13 
14 #ifndef ATOMICREFCOUNT_H__
15 #define ATOMICREFCOUNT_H__
16 
17 #include "macros.h"
18 #include "mutex.h"
19 
20 namespace gloox
21 {
22 
23  namespace util
24  {
34  class GLOOX_API AtomicRefCount
35  {
36  public:
41 
46  int increment();
47 
52  int decrement();
53 
58  void reset();
59 
60  private:
61  AtomicRefCount& operator=( const AtomicRefCount& );
62 
63  volatile int m_count;
64 
65  // The mutex is only used if a native function is unavailable.
66  Mutex m_lock;
67 
68  };
69 
70  }
71 
72 }
73 
74 #endif // ATOMICREFCOUNT_H__
75