Added support for completely disabling noexcept using MIJIN_TEST_NO_NOEXCEPT (for testing).
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
#define MIJIN_ASYNC_TASK_MUTEX_HPP_INCLUDED 1
|
||||
|
||||
#include "./coroutine.hpp"
|
||||
#include "../internal/common.hpp"
|
||||
|
||||
namespace mijin
|
||||
{
|
||||
@@ -14,13 +15,13 @@ private:
|
||||
class TaskMutex* mutex_;
|
||||
|
||||
public:
|
||||
explicit TaskMutexLock(class TaskMutex* mutex) noexcept : mutex_(mutex) {}
|
||||
explicit TaskMutexLock(class TaskMutex* mutex) MIJIN_NOEXCEPT : mutex_(mutex) {}
|
||||
TaskMutexLock(const TaskMutexLock&) = delete;
|
||||
TaskMutexLock(TaskMutexLock&& other) noexcept : mutex_(std::exchange(other.mutex_, nullptr)) {}
|
||||
TaskMutexLock(TaskMutexLock&& other) MIJIN_NOEXCEPT : mutex_(std::exchange(other.mutex_, nullptr)) {}
|
||||
|
||||
TaskMutexLock& operator=(const TaskMutexLock&) = delete;
|
||||
inline TaskMutexLock& operator=(TaskMutexLock&& other) noexcept;
|
||||
inline ~TaskMutexLock() noexcept;
|
||||
inline TaskMutexLock& operator=(TaskMutexLock&& other) MIJIN_NOEXCEPT;
|
||||
inline ~TaskMutexLock() MIJIN_NOEXCEPT;
|
||||
};
|
||||
|
||||
class TaskMutex
|
||||
@@ -37,12 +38,12 @@ public:
|
||||
locked_ = true;
|
||||
co_return TaskMutexLock(this);
|
||||
}
|
||||
[[nodiscard]] inline bool isLocked() const noexcept { return locked_; }
|
||||
[[nodiscard]] inline bool isLocked() const MIJIN_NOEXCEPT { return locked_; }
|
||||
|
||||
friend class TaskMutexLock;
|
||||
};
|
||||
|
||||
TaskMutexLock::~TaskMutexLock() noexcept
|
||||
TaskMutexLock::~TaskMutexLock() MIJIN_NOEXCEPT
|
||||
{
|
||||
if (mutex_)
|
||||
{
|
||||
@@ -50,7 +51,7 @@ TaskMutexLock::~TaskMutexLock() noexcept
|
||||
}
|
||||
}
|
||||
|
||||
TaskMutexLock& TaskMutexLock::operator=(TaskMutexLock&& other) noexcept
|
||||
TaskMutexLock& TaskMutexLock::operator=(TaskMutexLock&& other) MIJIN_NOEXCEPT
|
||||
{
|
||||
if (mutex_)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user