Some cleanup for clang/clang-tidy.
This commit is contained in:
parent
dae28a9db5
commit
10dc3c3e54
@ -140,7 +140,7 @@ auto RemoveStopTask(Task<tRet, RefType, Resumable>& in_taskToStop)
|
||||
template <typename tRet, eTaskRef RefType, eTaskResumable Resumable, typename promise_type>
|
||||
struct TaskAwaiterBase
|
||||
{
|
||||
TaskAwaiterBase(const Task<tRet, RefType, Resumable>& in_task)
|
||||
TaskAwaiterBase(const Task<tRet, RefType, Resumable>& /* in_task */)
|
||||
{
|
||||
// This constructor exists to minimize downstream compile-error spam when co_awaiting a non-copyable Task by copy
|
||||
}
|
||||
@ -417,7 +417,7 @@ public:
|
||||
return std::suspend_never();
|
||||
}
|
||||
|
||||
auto await_transform(GetStopContext in_awaiter)
|
||||
auto await_transform(GetStopContext /* in_awaiter */)
|
||||
{
|
||||
struct GetStopContextAwaiter : public std::suspend_never
|
||||
{
|
||||
|
@ -26,8 +26,8 @@
|
||||
#define DEBUG_STR , std::string in_debugStr
|
||||
#define PASS_DEBUG_STR , in_debugStr
|
||||
#define MANUAL_DEBUG_STR(debugStr) , debugStr
|
||||
#define WaitUntilImpl(...) _WaitUntil(__VA_ARGS__, #__VA_ARGS__)
|
||||
#define WaitWhileImpl(...) _WaitWhile(__VA_ARGS__, #__VA_ARGS__)
|
||||
#define WaitUntilImpl(...) WaitUntil_Impl(__VA_ARGS__, #__VA_ARGS__)
|
||||
#define WaitWhileImpl(...) WaitWhile_Impl(__VA_ARGS__, #__VA_ARGS__)
|
||||
#ifndef IN_DOXYGEN
|
||||
#define WaitUntil(...) WaitUntilImpl(__VA_ARGS__)
|
||||
#define WaitWhile(...) WaitWhileImpl(__VA_ARGS__)
|
||||
@ -38,8 +38,8 @@
|
||||
#define PASS_DEBUG_STR
|
||||
#define MANUAL_DEBUG_STR(...)
|
||||
#ifndef IN_DOXYGEN
|
||||
#define WaitUntil(...) _WaitUntil(__VA_ARGS__)
|
||||
#define WaitWhile(...) _WaitWhile(__VA_ARGS__)
|
||||
#define WaitUntil(...) WaitUntil_Impl(__VA_ARGS__)
|
||||
#define WaitWhile(...) WaitWhile_Impl(__VA_ARGS__)
|
||||
#endif //IN_DOXYGEN
|
||||
#endif //SQUID_ENABLE_TASK_DEBUG
|
||||
|
||||
@ -95,7 +95,7 @@ struct Suspend : public std::suspend_always
|
||||
/// Context for a task's stop requests (undefined behavior if used after the underlying task is destroyed)
|
||||
struct StopContext
|
||||
{
|
||||
bool IsStopRequested() const
|
||||
[[nodiscard]] bool IsStopRequested() const
|
||||
{
|
||||
return *m_isStoppedPtr;
|
||||
}
|
||||
@ -213,10 +213,8 @@ public:
|
||||
// Prohibit illegal task types
|
||||
static_assert(RefType == eTaskRef::Strong || std::is_void<tRet>::value, "Illegal task type (cannot combine weak reference type with non-void return type");
|
||||
|
||||
Task() /// Default constructor (constructs an invalid handle)
|
||||
{
|
||||
}
|
||||
Task(nullptr_t) /// Null-pointer constructor (constructs an invalid handle)
|
||||
Task() = default; /// Default constructor (constructs an invalid handle)
|
||||
Task(std::nullptr_t) /// Null-pointer constructor (constructs an invalid handle)
|
||||
{
|
||||
}
|
||||
Task(std::shared_ptr<tTaskInternal> in_taskInternal) /// @private
|
||||
@ -240,7 +238,7 @@ public:
|
||||
{
|
||||
// NOTE: No need to alter logical reference here (this is a move)
|
||||
}
|
||||
Task& operator=(nullptr_t) noexcept /// Null-pointer assignment operator (makes the handle invalid)
|
||||
Task& operator=(std::nullptr_t) noexcept /// Null-pointer assignment operator (makes the handle invalid)
|
||||
{
|
||||
RemoveRef(); // Remove logical reference from old internal task
|
||||
m_taskInternal = nullptr;
|
||||
@ -248,6 +246,9 @@ public:
|
||||
}
|
||||
Task& operator=(const Task& in_otherTask) /// Copy assignment operator (TaskHandle/WeakTaskHandle only)
|
||||
{
|
||||
if (&in_otherTask == this) {
|
||||
return *this;
|
||||
}
|
||||
static_assert(IsCopyable(), "Cannot copy-assign Task/WeakTask (only TaskHandle/WeakTaskHandle)");
|
||||
RemoveRef(); // Remove logical reference from our current internal task
|
||||
m_taskInternal = in_otherTask.m_taskInternal;
|
||||
@ -280,7 +281,7 @@ public:
|
||||
// If the internal task can never be resumed again, kill it immediately
|
||||
KillIfResumable();
|
||||
}
|
||||
bool IsValid() const /// Returns whether the underlying coroutine is valid
|
||||
[[nodiscard]] bool IsValid() const /// Returns whether the underlying coroutine is valid
|
||||
{
|
||||
return m_taskInternal.get();
|
||||
}
|
||||
@ -288,11 +289,11 @@ public:
|
||||
{
|
||||
return IsValid();
|
||||
}
|
||||
bool IsDone() const /// Returns whether the task has terminated
|
||||
[[nodiscard]] bool IsDone() const /// Returns whether the task has terminated
|
||||
{
|
||||
return IsValid() ? m_taskInternal->IsDone() : true;
|
||||
}
|
||||
bool IsStopRequested() const /// Returns whether a stop request has been issued for the task
|
||||
[[nodiscard]] bool IsStopRequested() const /// Returns whether a stop request has been issued for the task
|
||||
{
|
||||
return IsValid() ? m_taskInternal->IsStopRequested() : true;
|
||||
}
|
||||
@ -323,13 +324,13 @@ public:
|
||||
}
|
||||
|
||||
#if SQUID_ENABLE_TASK_DEBUG
|
||||
std::string GetDebugName(std::optional<TaskDebugStackFormatter> in_formatter = {}) const /// Gets this task's debug name (use TASK_NAME to set the debug name)
|
||||
[[nodiscard]] std::string GetDebugName(std::optional<TaskDebugStackFormatter> in_formatter = {}) const /// Gets this task's debug name (use TASK_NAME to set the debug name)
|
||||
{
|
||||
const char* defaultRetVal = Resumable == eTaskResumable::Yes ? "[empty task]" : "[empty task handle]";
|
||||
auto debugName = IsValid() ? m_taskInternal->GetDebugName() : defaultRetVal;
|
||||
return in_formatter ? in_formatter.value().Format(debugName) : debugName;
|
||||
}
|
||||
std::string GetDebugStack(std::optional<TaskDebugStackFormatter> in_formatter = {}) const /// Gets this task's debug stack (use TASK_NAME to set a task's debug name)
|
||||
[[nodiscard]] std::string GetDebugStack(std::optional<TaskDebugStackFormatter> in_formatter = {}) const /// Gets this task's debug stack (use TASK_NAME to set a task's debug name)
|
||||
{
|
||||
if(IsValid())
|
||||
{
|
||||
@ -338,11 +339,11 @@ public:
|
||||
return GetDebugName(in_formatter);
|
||||
}
|
||||
#else
|
||||
std::string GetDebugName(std::optional<TaskDebugStackFormatter> in_formatter = {}) const /// @private
|
||||
[[nodiscard]] std::string GetDebugName(std::optional<TaskDebugStackFormatter> in_formatter = {}) const /// @private
|
||||
{
|
||||
return ""; // Returns an empty string when task debug is disabled
|
||||
}
|
||||
std::string GetDebugStack(std::optional<TaskDebugStackFormatter> in_formatter = {}) const /// @private
|
||||
[[nodiscard]] std::string GetDebugStack(std::optional<TaskDebugStackFormatter> in_formatter = {}) const /// @private
|
||||
{
|
||||
return ""; // Returns an empty string when task debug is disabled
|
||||
}
|
||||
@ -507,7 +508,7 @@ private:
|
||||
std::shared_ptr<TaskInternalBase> m_taskInternal;
|
||||
|
||||
// Casts the internal task storage pointer to a concrete (non-TaskInternalBase) pointer
|
||||
std::shared_ptr<tTaskInternal> GetInternalTask() const
|
||||
[[nodiscard]] std::shared_ptr<tTaskInternal> GetInternalTask() const
|
||||
{
|
||||
// We can safely downcast from TaskInternalBase to TaskInternal<void>
|
||||
return std::static_pointer_cast<tTaskInternal>(m_taskInternal);
|
||||
@ -515,7 +516,7 @@ private:
|
||||
|
||||
// Copy/Move Implementations
|
||||
template <typename tNewRet, eTaskRef NewRefType, eTaskResumable NewResumable>
|
||||
Task<tNewRet, NewRefType, NewResumable> CopyToTask() const
|
||||
[[nodiscard]] Task<tNewRet, NewRefType, NewResumable> CopyToTask() const
|
||||
{
|
||||
Task<tNewRet, NewRefType, NewResumable> ret;
|
||||
ret.m_taskInternal = m_taskInternal;
|
||||
@ -663,7 +664,7 @@ struct TaskWrapper
|
||||
{
|
||||
public:
|
||||
TaskWrapper(Task<> in_task) : task(std::move(in_task)) {}
|
||||
~TaskWrapper() {}
|
||||
~TaskWrapper() = default;
|
||||
Task<> task;
|
||||
|
||||
template <typename tRet>
|
||||
@ -731,9 +732,9 @@ struct TaskSelectEntry
|
||||
#define TASK_NAME_ENTRIES(name, entries) \
|
||||
TASK_NAME(name, [entries]() { \
|
||||
std::string debugStr; \
|
||||
for(auto entry : entries) \
|
||||
for(auto entry : (entries)) \
|
||||
{ \
|
||||
debugStr += debugStr.size() ? "\n" : "\n`"; \
|
||||
debugStr += debugStr.empty() ? "\n`" : "\n"; \
|
||||
debugStr += entry.taskWrapper->task.GetDebugStack(); \
|
||||
} \
|
||||
debugStr += "`\n"; \
|
||||
@ -743,9 +744,9 @@ struct TaskSelectEntry
|
||||
#define TASK_NAME_ENTRIES_ALL(name, entries) \
|
||||
TASK_NAME(name, [entries]() { \
|
||||
std::string debugStr; \
|
||||
for(auto entry : entries) \
|
||||
for(auto entry : (entries)) \
|
||||
{ \
|
||||
debugStr += debugStr.size() ? "\n" : "\n`"; \
|
||||
debugStr += debugStr.empty() ? "\n`" : "\n"; \
|
||||
debugStr += entry.taskWrapper->task.GetDebugStack() + (entry.taskWrapper->task.IsDone() ? " [DONE]" : " [RUNNING]"); \
|
||||
} \
|
||||
debugStr += "`\n"; \
|
||||
@ -817,11 +818,11 @@ Task<tValue> Select(std::vector<TaskSelectEntry<tValue>> in_entries)
|
||||
|
||||
while(true)
|
||||
{
|
||||
for(size_t i = 0; i < in_entries.size(); ++i)
|
||||
for(size_t idx = 0; idx < in_entries.size(); ++idx)
|
||||
{
|
||||
if(in_entries[i].Resume() == eTaskStatus::Done)
|
||||
if(in_entries[idx].Resume() == eTaskStatus::Done)
|
||||
{
|
||||
co_return in_entries[i].GetValue();
|
||||
co_return in_entries[idx].GetValue();
|
||||
}
|
||||
}
|
||||
co_await Suspend();
|
||||
@ -837,13 +838,13 @@ inline Task<> WaitUntil(tTaskReadyFn in_readyFn) {}
|
||||
inline Task<> WaitWhile(tTaskReadyFn in_readyFn) {}
|
||||
#endif // IN_DOXYGEN
|
||||
|
||||
inline Task<> _WaitUntil(tTaskReadyFn in_readyFn DEBUG_STR) /// @private
|
||||
inline Task<> WaitUntil_Impl(tTaskReadyFn in_readyFn DEBUG_STR) /// @private
|
||||
{
|
||||
TASK_NAME("WaitUntil", [debugStr = FormatDebugString(in_debugStr)]{ return debugStr; });
|
||||
|
||||
co_await in_readyFn; // Wait until the ready functor returns true
|
||||
}
|
||||
inline Task<> _WaitWhile(tTaskReadyFn in_readyFn DEBUG_STR) /// @private
|
||||
inline Task<> WaitWhile_Impl(tTaskReadyFn in_readyFn DEBUG_STR) /// @private
|
||||
{
|
||||
TASK_NAME("WaitWhile", [debugStr = FormatDebugString(in_debugStr)]{ return debugStr; });
|
||||
|
||||
@ -853,7 +854,7 @@ inline Task<> _WaitWhile(tTaskReadyFn in_readyFn DEBUG_STR) /// @private
|
||||
/// Awaiter function that waits forever (only for use in tasks that will be killed externally)
|
||||
inline Task<> WaitForever()
|
||||
{
|
||||
return _WaitUntil([]() { return false; } MANUAL_DEBUG_STR("WaitForever"));
|
||||
return WaitUntil_Impl([]() { return false; } MANUAL_DEBUG_STR("WaitForever"));
|
||||
}
|
||||
|
||||
/// Awaiter function that waits N seconds in a given time-stream
|
||||
|
@ -102,7 +102,7 @@ public:
|
||||
return taskHandle;
|
||||
}
|
||||
template <typename tRet>
|
||||
SQUID_NODISCARD TaskHandle<tRet> Run(const Task<tRet>& in_task) /// @private Illegal copy implementation
|
||||
SQUID_NODISCARD TaskHandle<tRet> Run(const Task<tRet>& /* in_task */) /// @private Illegal copy implementation
|
||||
{
|
||||
static_assert(static_false<tRet>::value, "Cannot run an unmanaged task by copy (try Run(std::move(task)))");
|
||||
return {};
|
||||
@ -120,7 +120,7 @@ public:
|
||||
return weakTaskHandle;
|
||||
}
|
||||
template <typename tRet>
|
||||
WeakTaskHandle RunManaged(const Task<tRet>& in_task) /// @private Illegal copy implementation
|
||||
WeakTaskHandle RunManaged(const Task<tRet>& /* in_task */) /// @private Illegal copy implementation
|
||||
{
|
||||
static_assert(static_false<tRet>::value, "Cannot run a managed task by copy (try RunManaged(std::move(task)))");
|
||||
return {};
|
||||
|
Loading…
x
Reference in New Issue
Block a user