Autogen: Use cm::make_unique to allocate jobs

This commit is contained in:
Sebastian Holtermann
2019-02-21 20:11:22 +01:00
parent 8182c21d2d
commit 2d29166758
2 changed files with 13 additions and 25 deletions

View File

@@ -432,8 +432,8 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocSource(WorkerT& wrk,
// Convert pre jobs to actual jobs
for (JobPre& jobPre : jobs) {
JobHandleT jobHandle(new JobMocT(std::move(jobPre.SourceFile), FileName,
std::move(jobPre.IncludeString)));
JobHandleT jobHandle = cm::make_unique<JobMocT>(
std::move(jobPre.SourceFile), FileName, std::move(jobPre.IncludeString));
if (jobPre.self) {
// Read dependencies from this source
static_cast<JobMocT&>(*jobHandle).FindDependencies(wrk, meta.Content);
@@ -451,8 +451,8 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocHeader(WorkerT& wrk,
bool success = true;
std::string const macroName = wrk.Moc().FindMacro(meta.Content);
if (!macroName.empty()) {
JobHandleT jobHandle(
new JobMocT(std::string(FileName), std::string(), std::string()));
JobHandleT jobHandle = cm::make_unique<JobMocT>(
std::string(FileName), std::string(), std::string());
// Read dependencies from this source
static_cast<JobMocT&>(*jobHandle).FindDependencies(wrk, meta.Content);
success = wrk.Gen().ParallelJobPushMoc(jobHandle);
@@ -518,8 +518,8 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseUicInclude(
std::string uiInputFile = UicFindIncludedFile(wrk, meta, includeString);
if (!uiInputFile.empty()) {
if (!wrk.Uic().skipped(uiInputFile)) {
JobHandleT jobHandle(new JobUicT(std::move(uiInputFile), FileName,
std::move(includeString)));
JobHandleT jobHandle = cm::make_unique<JobUicT>(
std::move(uiInputFile), FileName, std::move(includeString));
success = wrk.Gen().ParallelJobPushUic(jobHandle);
} else {
// A skipped file is successful
@@ -993,11 +993,6 @@ void cmQtAutoGeneratorMocUic::JobUicT::GenerateUic(WorkerT& wrk)
}
}
void cmQtAutoGeneratorMocUic::JobDeleterT::operator()(JobT* job)
{
delete job;
}
cmQtAutoGeneratorMocUic::WorkerT::WorkerT(cmQtAutoGeneratorMocUic* gen,
uv_loop_t* uvLoop)
: Gen_(gen)
@@ -1343,7 +1338,7 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile)
Moc_.PredefsCmd = InfoGetList("AM_MOC_PREDEFS_CMD");
// Install moc predefs job
if (!Moc().PredefsCmd.empty()) {
JobQueues_.MocPredefs.emplace_back(new JobMocPredefsT());
JobQueues_.MocPredefs.emplace_back(cm::make_unique<JobMocPredefsT>());
}
}
@@ -1390,7 +1385,7 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile)
const bool uic = !Uic().skipped(hdr);
if ((moc || uic) && uniqueHeaders.emplace(stringHash(hdr)).second) {
JobQueues_.Headers.emplace_back(
new JobParseT(std::move(hdr), moc, uic, true));
cm::make_unique<JobParseT>(std::move(hdr), moc, uic, true));
}
}
// Add source jobs
@@ -1417,15 +1412,15 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile)
const bool uic = srcUic && !Uic().skipped(header);
if ((moc || uic) &&
uniqueHeaders.emplace(stringHash(header)).second) {
JobQueues_.Headers.emplace_back(
new JobParseT(std::move(header), moc, uic, true));
JobQueues_.Headers.emplace_back(cm::make_unique<JobParseT>(
std::move(header), moc, uic, true));
}
}
}
}
// Add source job
JobQueues_.Sources.emplace_back(
new JobParseT(std::move(src), srcMoc, srcUic));
cm::make_unique<JobParseT>(std::move(src), srcMoc, srcUic));
}
}
}
@@ -1797,7 +1792,7 @@ void cmQtAutoGeneratorMocUic::WorkerSwapJob(JobHandleT& jobHandle)
{
bool const jobProcessed(jobHandle);
if (jobProcessed) {
jobHandle.reset(nullptr);
jobHandle.reset();
}
{
std::unique_lock<std::mutex> jobsLock(JobsMutex_);

View File

@@ -187,15 +187,8 @@ public:
virtual void Process(WorkerT& wrk) = 0;
};
/// @brief Deleter for classes derived from Job
///
struct JobDeleterT
{
void operator()(JobT* job);
};
// Job management types
typedef std::unique_ptr<JobT, JobDeleterT> JobHandleT;
typedef std::unique_ptr<JobT> JobHandleT;
typedef std::deque<JobHandleT> JobQueueT;
/// @brief Parse source job