BuildStep: Store the BuildStepList field

Don't rely on qobject hierarchy casts.

Change-Id: I7152252c882805fea0bc82e8f1205a964bfdfd93
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Jarek Kobus
2023-07-10 12:19:29 +02:00
parent 6a8fe161cb
commit 06a57f8c42
2 changed files with 9 additions and 7 deletions

View File

@@ -113,6 +113,7 @@ static QList<BuildStepFactory *> g_buildStepFactories;
BuildStep::BuildStep(BuildStepList *bsl, Id id) BuildStep::BuildStep(BuildStepList *bsl, Id id)
: ProjectConfiguration(bsl, bsl->target(), id) : ProjectConfiguration(bsl, bsl->target(), id)
, m_stepList(bsl)
{ {
connect(this, &ProjectConfiguration::displayNameChanged, connect(this, &ProjectConfiguration::displayNameChanged,
this, &BuildStep::updateSummary); this, &BuildStep::updateSummary);
@@ -190,7 +191,7 @@ QVariantMap BuildStep::toMap() const
BuildConfiguration *BuildStep::buildConfiguration() const BuildConfiguration *BuildStep::buildConfiguration() const
{ {
auto config = qobject_cast<BuildConfiguration *>(parent()->parent()); auto config = qobject_cast<BuildConfiguration *>(projectConfiguration());
if (config) if (config)
return config; return config;
@@ -200,7 +201,7 @@ BuildConfiguration *BuildStep::buildConfiguration() const
DeployConfiguration *BuildStep::deployConfiguration() const DeployConfiguration *BuildStep::deployConfiguration() const
{ {
auto config = qobject_cast<DeployConfiguration *>(parent()->parent()); auto config = qobject_cast<DeployConfiguration *>(projectConfiguration());
if (config) if (config)
return config; return config;
// See comment in buildConfiguration() // See comment in buildConfiguration()
@@ -211,7 +212,7 @@ DeployConfiguration *BuildStep::deployConfiguration() const
ProjectConfiguration *BuildStep::projectConfiguration() const ProjectConfiguration *BuildStep::projectConfiguration() const
{ {
return static_cast<ProjectConfiguration *>(parent()->parent()); return stepList()->projectConfiguration();
} }
BuildSystem *BuildStep::buildSystem() const BuildSystem *BuildStep::buildSystem() const
@@ -223,7 +224,7 @@ BuildSystem *BuildStep::buildSystem() const
Environment BuildStep::buildEnvironment() const Environment BuildStep::buildEnvironment() const
{ {
if (const auto bc = qobject_cast<BuildConfiguration *>(parent()->parent())) if (const auto bc = qobject_cast<BuildConfiguration *>(projectConfiguration()))
return bc->environment(); return bc->environment();
if (const auto bc = target()->activeBuildConfiguration()) if (const auto bc = target()->activeBuildConfiguration())
return bc->environment(); return bc->environment();
@@ -260,8 +261,8 @@ QString BuildStep::fallbackWorkingDirectory() const
void BuildStep::setupOutputFormatter(OutputFormatter *formatter) void BuildStep::setupOutputFormatter(OutputFormatter *formatter)
{ {
if (qobject_cast<BuildConfiguration *>(parent()->parent())) { if (auto bc = qobject_cast<BuildConfiguration *>(projectConfiguration())) {
for (const Id id : buildConfiguration()->customParsers()) { for (const Id id : bc->customParsers()) {
if (Internal::CustomParser * const parser = Internal::CustomParser::createFromId(id)) if (Internal::CustomParser * const parser = Internal::CustomParser::createFromId(id))
formatter->addLineParser(parser); formatter->addLineParser(parser);
} }
@@ -317,7 +318,7 @@ void BuildStep::setEnabled(bool b)
BuildStepList *BuildStep::stepList() const BuildStepList *BuildStep::stepList() const
{ {
return qobject_cast<BuildStepList *>(parent()); return m_stepList;
} }
bool BuildStep::enabled() const bool BuildStep::enabled() const

View File

@@ -131,6 +131,7 @@ private:
virtual void doRun() = 0; virtual void doRun() = 0;
virtual void doCancel(); virtual void doCancel();
BuildStepList * const m_stepList;
std::atomic_bool m_cancelFlag; std::atomic_bool m_cancelFlag;
bool m_enabled = true; bool m_enabled = true;
bool m_immutable = false; bool m_immutable = false;