Files CCore/inc/gadget/LockObject.h CCore/src/gadget/LockObject.cpp
LockObject is a simple class, implementing the scope lock pattern:
template <class T>
class LockObject : NoCopy
{
T &obj;
public:
explicit LockObject(T &obj_) : obj(obj_) { obj_.lock(); }
~LockObject() { obj.unlock(); }
};
If you have an object of the type C with methods lock() and unlock(), you can use LockObject to "lock" this object for a scope duration:
class C { public: void lock(); void unlock(); }; .... C obj; .... { LockObject<C> lock(obj); // obj.lock() is called // obj.unlock() will be called whenever scope is exited ... }