From 03a20b9b940da7c7dfc8d2aadf41b5896e62b3db Mon Sep 17 00:00:00 2001 From: Dale Glass <dale@daleglass.net> Date: Thu, 27 Apr 2023 00:42:25 +0200 Subject: [PATCH] Fix the build on GCC 13.0 This adds #include <cstdlib> in a couple places. It also fixes a huge amount of warnings due to "concept" becoming a keyword in C++20 --- .../src/TemporaryPairwiseCollisionFilter.h | 2 +- libraries/shared/src/CPUIdent.h | 1 + libraries/task/src/task/Task.h | 56 +++++++++---------- 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/libraries/physics/src/TemporaryPairwiseCollisionFilter.h b/libraries/physics/src/TemporaryPairwiseCollisionFilter.h index 4c3f52ba1b..e772e5f821 100644 --- a/libraries/physics/src/TemporaryPairwiseCollisionFilter.h +++ b/libraries/physics/src/TemporaryPairwiseCollisionFilter.h @@ -14,7 +14,7 @@ #include <unordered_map> #include <btBulletDynamicsCommon.h> - +#include <cstdint> class TemporaryPairwiseCollisionFilter { public: using LastContactMap = std::unordered_map<const btCollisionObject*, uint32_t>; diff --git a/libraries/shared/src/CPUIdent.h b/libraries/shared/src/CPUIdent.h index d7bf03002b..6ec5188261 100644 --- a/libraries/shared/src/CPUIdent.h +++ b/libraries/shared/src/CPUIdent.h @@ -22,6 +22,7 @@ #include <bitset> #include <array> #include <string> +#include <cstdint> class CPUIdent { diff --git a/libraries/task/src/task/Task.h b/libraries/task/src/task/Task.h index 0ee458f3ea..e79542dc40 100644 --- a/libraries/task/src/task/Task.h +++ b/libraries/task/src/task/Task.h @@ -71,7 +71,7 @@ public: JobConcept(const std::string& name, QConfigPointer config) : _config(config), _name(name) { config->_jobConcept = this; } virtual ~JobConcept() = default; - + const std::string& getName() const { return _name; } virtual const Varying getInput() const { return Varying(); } @@ -165,7 +165,7 @@ public: // Capture this Concept::_config->_jobConcept = this; } - + void applyConfiguration() override { TimeProfiler probe(("configure::" + JobConcept::getName())); @@ -185,40 +185,40 @@ public: template <class T, class I, class O, class C = Config> using ModelIO = Model<T, C, I, O>; Job() {} - Job(const ConceptPointer& concept) : _concept(concept) {} + Job(const ConceptPointer& conceptPtr) : _conceptPtr(conceptPtr) {} virtual ~Job() = default; - const std::string& getName() const { return _concept->getName(); } - const Varying getInput() const { return _concept->getInput(); } - const Varying getOutput() const { return _concept->getOutput(); } + const std::string& getName() const { return _conceptPtr->getName(); } + const Varying getInput() const { return _conceptPtr->getInput(); } + const Varying getOutput() const { return _conceptPtr->getOutput(); } - QConfigPointer& getConfiguration() const { return _concept->getConfiguration(); } - void applyConfiguration() { return _concept->applyConfiguration(); } + QConfigPointer& getConfiguration() const { return _conceptPtr->getConfiguration(); } + void applyConfiguration() { return _conceptPtr->applyConfiguration(); } - template <class I> void feedInput(const I& in) { _concept->editInput().template edit<I>() = in; } - template <class I, class S> void feedInput(int index, const S& inS) { (_concept->editInput().template editN<I>(index)).template edit<S>() = inS; } + template <class I> void feedInput(const I& in) { _conceptPtr->editInput().template edit<I>() = in; } + template <class I, class S> void feedInput(int index, const S& inS) { (_conceptPtr->editInput().template editN<I>(index)).template edit<S>() = inS; } template <class T> T& edit() { - auto concept = std::static_pointer_cast<typename T::JobModel>(_concept); - assert(concept); - return concept->_data; + auto conceptPtr = std::static_pointer_cast<typename T::JobModel>(_conceptPtr); + assert(conceptPtr); + return conceptPtr->_data; } template <class T> const T& get() const { - auto concept = std::static_pointer_cast<typename T::JobModel>(_concept); - assert(concept); - return concept->_data; + auto conceptPtr = std::static_pointer_cast<typename T::JobModel>(_conceptPtr); + assert(conceptPtr); + return conceptPtr->_data; } virtual void run(const ContextPointer& jobContext) { TimeProfiler probe(getName()); auto startTime = std::chrono::high_resolution_clock::now(); - _concept->run(jobContext); - _concept->setCPURunTime((std::chrono::high_resolution_clock::now() - startTime)); + _conceptPtr->run(jobContext); + _conceptPtr->setCPURunTime((std::chrono::high_resolution_clock::now() - startTime)); } protected: - ConceptPointer _concept; + ConceptPointer _conceptPtr; }; @@ -242,7 +242,7 @@ public: using ConceptPointer = typename JobType::ConceptPointer; using Jobs = std::vector<JobType>; - Task(ConceptPointer concept) : JobType(concept) {} + Task(ConceptPointer conceptPtr) : JobType(conceptPtr) {} class TaskConcept : public Concept { public: @@ -347,15 +347,15 @@ public: // Create a new job in the Task's queue; returns the job's output template <class T, class... A> const Varying addJob(std::string name, const Varying& input, A&&... args) { - return std::static_pointer_cast<TaskConcept>(JobType::_concept)->template addJob<T>(name, input, std::forward<A>(args)...); + return std::static_pointer_cast<TaskConcept>(JobType::_conceptPtr)->template addJob<T>(name, input, std::forward<A>(args)...); } template <class T, class... A> const Varying addJob(std::string name, A&&... args) { const auto input = Varying(typename T::JobModel::Input()); - return std::static_pointer_cast<TaskConcept>(JobType::_concept)->template addJob<T>(name, input, std::forward<A>(args)...); + return std::static_pointer_cast<TaskConcept>(JobType::_conceptPtr)->template addJob<T>(name, input, std::forward<A>(args)...); } std::shared_ptr<Config> getConfiguration() { - return std::static_pointer_cast<Config>(JobType::_concept->getConfiguration()); + return std::static_pointer_cast<Config>(JobType::_conceptPtr->getConfiguration()); } }; @@ -380,7 +380,7 @@ public: using ConceptPointer = typename JobType::ConceptPointer; using Branches = std::unordered_map<uint8_t, JobType>; - Switch(ConceptPointer concept) : JobType(concept) {} + Switch(ConceptPointer conceptPtr) : JobType(conceptPtr) {} class SwitchConcept : public Concept { public: @@ -485,15 +485,15 @@ public: // Create a new job in the Switches' branches; returns the job's output template <class T, class... A> const Varying addBranch(std::string name, uint8_t index, const Varying& input, A&&... args) { - return std::static_pointer_cast<SwitchConcept>(JobType::_concept)->template addBranch<T>(name, index, input, std::forward<A>(args)...); + return std::static_pointer_cast<SwitchConcept>(JobType::_conceptPtr)->template addBranch<T>(name, index, input, std::forward<A>(args)...); } template <class T, class... A> const Varying addBranch(std::string name, uint8_t index, A&&... args) { const auto input = Varying(typename T::JobModel::Input()); - return std::static_pointer_cast<SwitchConcept>(JobType::_concept)->template addBranch<T>(name, index, input, std::forward<A>(args)...); + return std::static_pointer_cast<SwitchConcept>(JobType::_conceptPtr)->template addBranch<T>(name, index, input, std::forward<A>(args)...); } std::shared_ptr<Config> getConfiguration() { - return std::static_pointer_cast<Config>(JobType::_concept->getConfiguration()); + return std::static_pointer_cast<Config>(JobType::_conceptPtr->getConfiguration()); } }; @@ -507,7 +507,7 @@ public: using TaskType = Task<JC, TP>; using ConceptPointer = typename TaskType::ConceptPointer; - Engine(const ConceptPointer& concept, const ContextPointer& context) : TaskType(concept), _context(context) {} + Engine(const ConceptPointer& conceptPtr, const ContextPointer& context) : TaskType(conceptPtr), _context(context) {} ~Engine() = default; void reset(const ContextPointer& context) { _context = context; }