diff options
Diffstat (limited to 'libcult/cult/sched/lock.hxx')
-rw-r--r-- | libcult/cult/sched/lock.hxx | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/libcult/cult/sched/lock.hxx b/libcult/cult/sched/lock.hxx deleted file mode 100644 index 1ecf3fb..0000000 --- a/libcult/cult/sched/lock.hxx +++ /dev/null @@ -1,58 +0,0 @@ -// file : cult/sched/lock.hxx -// author : Boris Kolpackov <boris@kolpackov.net> -// copyright : Copyright (c) 2005-2010 Boris Kolpackov -// license : GNU GPL v2 + exceptions; see accompanying LICENSE file - -#ifndef CULT_SCHED_LOCK_HXX -#define CULT_SCHED_LOCK_HXX - -#include <cult/types/fundamental.hxx> - -namespace Cult -{ - namespace Sched - { - class Lock: public NonCopyable - { - public: - ~Lock () - { - unlock (); - } - - template <typename X> - Lock (X& x) - : x_ (reinterpret_cast<Void*>(&x)), - unlock_ (&unlock<X>), - locked_ (true) - { - x.lock (); - } - - Void - unlock () - { - if (locked_) - { - unlock_ (x_); - locked_ = false; - } - } - - private: - template <typename X> - static Void - unlock (Void* p) - { - reinterpret_cast<X*> (p)->unlock (); - } - - private: - Void* x_; - Void (*unlock_) (Void*); - Boolean locked_; - }; - } -} - -#endif // CULT_SCHED_LOCK_HXX |