libcwdversion 2.0.0
The C++ Debugging Support Library
Loading...
Searching...
No Matches
LockInterface.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2002-2005, 2018-2019, 2026 Carlo Wood
2// SPDX-License-Identifier: MIT
3
4#pragma once
5
9
10#ifndef LIBCWD_PRIVATE_LOCK_INTERFACE_H
11#define LIBCWD_PRIVATE_LOCK_INTERFACE_H
12
13#ifndef HIDE_FROM_DOXYGEN
14namespace libcwd::_private_ {
15
16class LockInterfaceBase
17{
18 public:
19 virtual int try_lock() = 0;
20 virtual void lock() = 0;
21 virtual void unlock() = 0;
22 virtual ~LockInterfaceBase() { }
23};
24
25template <class T>
26class LockInterface : public LockInterfaceBase
27{
28 private:
29 T* mutex_;
30 virtual int try_lock() { return mutex_->try_lock(); }
31 virtual void lock() { mutex_->lock(); }
32 virtual void unlock() { mutex_->unlock(); }
33
34 public:
35 LockInterface(T* mutex) : mutex_(mutex) { }
36};
37
38} // namespace libcwd::_private_
39#endif // HIDE_FROM_DOXYGEN
40
41#endif // LIBCWD_PRIVATE_LOCK_INTERFACE_H