~ubuntu-branches/ubuntu/oneiric/psi/oneiric

« back to all changes in this revision

Viewing changes to third-party/cppunit/cppunit/include/cppunit/SynchronizedObject.h

  • Committer: Bazaar Package Importer
  • Author(s): Jan Niehusmann
  • Date: 2009-09-25 17:49:51 UTC
  • mfrom: (6.1.3 sid)
  • Revision ID: james.westby@ubuntu.com-20090925174951-lvm7kdap82o8xhn3
Tags: 0.13-1
* Updated to upstream version 0.13
* Set Standards-Version to 3.8.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef CPPUNIT_SYNCHRONIZEDOBJECT_H
2
 
#define CPPUNIT_SYNCHRONIZEDOBJECT_H
3
 
 
4
 
#include <cppunit/Portability.h>
5
 
 
6
 
 
7
 
CPPUNIT_NS_BEGIN
8
 
 
9
 
 
10
 
/*! \brief Base class for synchronized object.
11
 
 *
12
 
 * Synchronized object are object which members are used concurrently by mutiple
13
 
 * threads.
14
 
 *
15
 
 * This class define the class SynchronizationObject which must be subclassed
16
 
 * to implement an actual lock.
17
 
 *
18
 
 * Each instance of this class holds a pointer on a lock object.
19
 
 *
20
 
 * See src/msvc6/MfcSynchronizedObject.h for an example.
21
 
 */
22
 
class CPPUNIT_API SynchronizedObject
23
 
{
24
 
public:
25
 
  /*! \brief Abstract synchronization object (mutex)
26
 
   */
27
 
  class SynchronizationObject
28
 
  {
29
 
    public:
30
 
      SynchronizationObject() {}
31
 
      virtual ~SynchronizationObject() {}
32
 
 
33
 
      virtual void lock() {}
34
 
      virtual void unlock() {}
35
 
  };
36
 
 
37
 
  /*! Constructs a SynchronizedObject object.
38
 
   */
39
 
  SynchronizedObject( SynchronizationObject *syncObject =0 );
40
 
 
41
 
  /// Destructor.
42
 
  virtual ~SynchronizedObject();
43
 
 
44
 
protected:
45
 
  /*! \brief Locks a synchronization object in the current scope.
46
 
   */
47
 
  class ExclusiveZone
48
 
  {
49
 
    SynchronizationObject *m_syncObject;
50
 
 
51
 
  public:
52
 
    ExclusiveZone( SynchronizationObject *syncObject ) 
53
 
        : m_syncObject( syncObject ) 
54
 
    { 
55
 
      m_syncObject->lock(); 
56
 
    }
57
 
 
58
 
    ~ExclusiveZone() 
59
 
    { 
60
 
      m_syncObject->unlock (); 
61
 
    }
62
 
  };
63
 
 
64
 
  virtual void setSynchronizationObject( SynchronizationObject *syncObject );
65
 
 
66
 
protected:
67
 
  SynchronizationObject *m_syncObject;
68
 
 
69
 
private:
70
 
  /// Prevents the use of the copy constructor.
71
 
  SynchronizedObject( const SynchronizedObject &copy );
72
 
 
73
 
  /// Prevents the use of the copy operator.
74
 
  void operator =( const SynchronizedObject &copy );
75
 
};
76
 
 
77
 
 
78
 
CPPUNIT_NS_END
79
 
 
80
 
#endif  // CPPUNIT_SYNCHRONIZEDOBJECT_H