Added support for completely disabling noexcept using MIJIN_TEST_NO_NOEXCEPT (for testing).
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include <atomic>
|
||||
#include <optional>
|
||||
#include <thread>
|
||||
#include "../internal/common.hpp"
|
||||
#include "../util/bitarray.hpp"
|
||||
|
||||
namespace mijin
|
||||
@@ -37,7 +38,7 @@ private:
|
||||
std::optional<value_type> message_;
|
||||
public:
|
||||
MessageQueueIterator() = default;
|
||||
explicit MessageQueueIterator(TMessageQueue& queue) noexcept : queue_(&queue) {
|
||||
explicit MessageQueueIterator(TMessageQueue& queue) MIJIN_NOEXCEPT : queue_(&queue) {
|
||||
message_ = queue_->tryPop();
|
||||
}
|
||||
MessageQueueIterator(const MessageQueueIterator&) = delete;
|
||||
@@ -46,26 +47,26 @@ public:
|
||||
MessageQueueIterator& operator=(const MessageQueueIterator&) = delete;
|
||||
MessageQueueIterator& operator=(MessageQueueIterator&&) = default;
|
||||
|
||||
bool operator==(const MessageQueueIterator& other) noexcept
|
||||
bool operator==(const MessageQueueIterator& other) MIJIN_NOEXCEPT
|
||||
{
|
||||
return message_.has_value() == other.message_.has_value();
|
||||
}
|
||||
bool operator!=(const MessageQueueIterator& other) noexcept
|
||||
bool operator!=(const MessageQueueIterator& other) MIJIN_NOEXCEPT
|
||||
{
|
||||
return !(*this == other);
|
||||
}
|
||||
|
||||
reference operator*() noexcept
|
||||
reference operator*() MIJIN_NOEXCEPT
|
||||
{
|
||||
return message_.value();
|
||||
}
|
||||
|
||||
pointer operator->() noexcept
|
||||
pointer operator->() MIJIN_NOEXCEPT
|
||||
{
|
||||
return &message_.value();
|
||||
}
|
||||
|
||||
MessageQueueIterator& operator++() noexcept
|
||||
MessageQueueIterator& operator++() MIJIN_NOEXCEPT
|
||||
{
|
||||
message_ = queue_->tryPop();
|
||||
return *this;
|
||||
@@ -86,10 +87,10 @@ private:
|
||||
public:
|
||||
MessageQueue() = default;
|
||||
MessageQueue(const MessageQueue&) = delete;
|
||||
MessageQueue(MessageQueue&&) noexcept = delete;
|
||||
MessageQueue(MessageQueue&&) = delete;
|
||||
|
||||
MessageQueue& operator=(const MessageQueue&) = delete;
|
||||
MessageQueue& operator=(MessageQueue&&) noexcept = delete;
|
||||
MessageQueue& operator=(MessageQueue&&) = delete;
|
||||
|
||||
[[nodiscard]] bool tryPushMaybeMove(TMessage& message);
|
||||
[[nodiscard]] bool tryPush(TMessage message) {
|
||||
@@ -99,8 +100,8 @@ public:
|
||||
[[nodiscard]] std::optional<TMessage> tryPop();
|
||||
[[nodiscard]] TMessage wait();
|
||||
|
||||
iterator_t begin() noexcept { return iterator_t(*this); }
|
||||
iterator_t end() noexcept { return iterator_t(); }
|
||||
iterator_t begin() MIJIN_NOEXCEPT { return iterator_t(*this); }
|
||||
iterator_t end() MIJIN_NOEXCEPT { return iterator_t(); }
|
||||
};
|
||||
|
||||
template<typename TRequest, typename TResponse, std::size_t requestBufferSize = 32, std::size_t responseBufferSize = 32>
|
||||
|
||||
Reference in New Issue
Block a user