00001 #ifndef QRK_LOCK_H 00002 #define QRK_LOCK_H 00003 00013 #include "ConditionVariable.h" 00014 00015 00016 namespace qrk 00017 { 00021 class Lock { 00022 00023 friend class ConditionalVariable; 00024 friend bool ConditionVariable::wait(Lock* lock, int timeout); 00025 00026 Lock(const Lock& rhs); 00027 Lock& operator = (const Lock& rhs); 00028 00029 // !!! ? 00030 void* operator new (size_t); 00031 void* operator new[] (size_t); 00032 00033 struct pImpl; 00034 const std::auto_ptr<pImpl> pimpl; 00035 00036 public: 00037 Lock(void); 00038 ~Lock(void); 00039 00040 00044 void lock(void); 00045 00046 00050 void unlock(void); 00051 }; 00052 } 00053 00054 #endif /* !QRK_LOCK_GUARD_H */