From a58da97f98697580bf128ed5723ba720cc30f0dc Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Sat, 1 Nov 2025 14:04:35 +0100 Subject: Various fixes to address issues flagged by gcc / non-UE toolchain build (#621) * gcc: avoid using memset on nontrivial struct * redundant `return std::move` * fixed various compilation issues flagged by gcc * fix issue in xmake.lua detecting whether we are building with the UE toolchain or not * add GCC ignore -Wundef (comment is inaccurate) * remove redundant std::move * don't catch exceptions by value * unreferenced variables * initialize "by the book" instead of memset * remove unused exception reference * add #include to fix gcc build * explicitly poulate KeyValueMap by traversing input spans fixes gcc compilation * remove unreferenced variable * eliminate redundant `std::move` which gcc complains about * fix gcc compilation by including * tag unreferenced variable to fix gcc compilation * fixes for various cases of naming members the same as their type --- src/zencore/jobqueue.cpp | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) (limited to 'src/zencore/jobqueue.cpp') diff --git a/src/zencore/jobqueue.cpp b/src/zencore/jobqueue.cpp index bd391909d..75c1be42b 100644 --- a/src/zencore/jobqueue.cpp +++ b/src/zencore/jobqueue.cpp @@ -45,7 +45,7 @@ public: JobId Id; JobFunction Callback; std::atomic_bool CancelFlag; - State State; + JobState State; JobClock::Tick CreateTick; JobClock::Tick StartTick; JobClock::Tick EndTick; @@ -223,7 +223,7 @@ public: QueueLock.WithSharedLock([&]() { for (auto It : RunningJobs) { - Jobs.push_back({.Id = JobId{It.first}, .Status = Status::Running}); + Jobs.push_back({.Id = JobId{It.first}, .Status = JobStatus::Running}); } for (auto It : CompletedJobs) { @@ -232,7 +232,7 @@ public: DeadJobs.push_back(JobId{It.first}); continue; } - Jobs.push_back({.Id = JobId{It.first}, .Status = Status::Completed}); + Jobs.push_back({.Id = JobId{It.first}, .Status = JobStatus::Completed}); } for (auto It : AbortedJobs) { @@ -241,11 +241,11 @@ public: DeadJobs.push_back(JobId{It.first}); continue; } - Jobs.push_back({.Id = JobId{It.first}, .Status = Status::Aborted}); + Jobs.push_back({.Id = JobId{It.first}, .Status = JobStatus::Aborted}); } for (auto It : QueuedJobs) { - Jobs.push_back({.Id = It->Id, .Status = Status::Queued}); + Jobs.push_back({.Id = It->Id, .Status = JobStatus::Queued}); } }); if (!DeadJobs.empty()) @@ -264,7 +264,7 @@ public: // Will only respond once when Complete is true virtual std::optional Get(JobId Id) override { - auto Convert = [](Status Status, Job& Job) -> JobDetails { + auto Convert = [](JobStatus Status, Job& Job) -> JobDetails { return JobDetails{ .Name = Job.Name, .Status = Status, @@ -286,25 +286,25 @@ public: QueueLock.WithExclusiveLock([&]() { if (auto It = RunningJobs.find(Id.Id); It != RunningJobs.end()) { - Result = Convert(Status::Running, *It->second); + Result = Convert(JobStatus::Running, *It->second); return; } if (auto It = CompletedJobs.find(Id.Id); It != CompletedJobs.end()) { - Result = Convert(Status::Completed, *It->second); + Result = Convert(JobStatus::Completed, *It->second); CompletedJobs.erase(It); return; } if (auto It = AbortedJobs.find(Id.Id); It != AbortedJobs.end()) { - Result = Convert(Status::Aborted, *It->second); + Result = Convert(JobStatus::Aborted, *It->second); AbortedJobs.erase(It); return; } if (auto It = std::find_if(QueuedJobs.begin(), QueuedJobs.end(), [&Id](const RefPtr& Job) { return Job->Id.Id == Id.Id; }); It != QueuedJobs.end()) { - Result = Convert(Status::Queued, *(*It)); + Result = Convert(JobStatus::Queued, *(*It)); return; } }); @@ -421,22 +421,22 @@ public: }; std::string_view -JobQueue::ToString(Status Status) +JobQueue::ToString(JobStatus Status) { using namespace std::literals; switch (Status) { - case JobQueue::Status::Queued: + case JobQueue::JobStatus::Queued: return "Queued"sv; break; - case JobQueue::Status::Running: + case JobQueue::JobStatus::Running: return "Running"sv; break; - case JobQueue::Status::Aborted: + case JobQueue::JobStatus::Aborted: return "Aborted"sv; break; - case JobQueue::Status::Completed: + case JobQueue::JobStatus::Completed: return "Completed"sv; break; default: @@ -496,6 +496,7 @@ TEST_CASE("JobQueue") } Context.ReportProgress("done", "", 100, 0); }); + ZEN_UNUSED(Id); }, WorkerThreadPool::EMode::EnableBacklog); } @@ -528,22 +529,22 @@ TEST_CASE("JobQueue") RemainingJobs.reserve(Statuses.size()); for (const auto& It : Statuses) { - JobQueue::Status Status = It.Status; + JobQueue::JobStatus Status = It.Status; JobId Id = It.Id; std::optional CurrentState; - if (Status != JobQueue::Status::Queued) + if (Status != JobQueue::JobStatus::Queued) { CurrentState = Queue->Get(Id); CHECK(CurrentState.has_value()); } switch (Status) { - case JobQueue::Status::Queued: + case JobQueue::JobStatus::Queued: PendingCount++; RemainingJobs.push_back(Id); break; - case JobQueue::Status::Running: + case JobQueue::JobStatus::Running: ZEN_DEBUG( "{} running. '{}{}' {}% '{}'", Id.Id, @@ -556,10 +557,10 @@ TEST_CASE("JobQueue") Join(CurrentState->State.Messages, " "sv)); RemainingJobs.push_back(Id); break; - case JobQueue::Status::Aborted: + case JobQueue::JobStatus::Aborted: ZEN_DEBUG("{} aborted. Reason: '{}'", Id.Id, CurrentState->State.AbortReason); break; - case JobQueue::Status::Completed: + case JobQueue::JobStatus::Completed: ZEN_DEBUG("{} completed. '{}'", Id.Id, Join(CurrentState->State.Messages, " "sv)); break; default: -- cgit v1.2.3