Commit a6890a16 authored by Brad King's avatar Brad King
Browse files

Manage current local generator with automatic var

The cmLocalGenerator::Configure method sets its cmLocalGenerator
instance as the global generator's current local generator during
configuration.  This commit refactors management of the current local
generator to use an automatic variable.  This will allow early returns
from the method.
parent 2ea28107
......@@ -68,11 +68,30 @@ cmLocalGenerator::~cmLocalGenerator()
delete this->Makefile;
}
//----------------------------------------------------------------------------
class cmLocalGeneratorCurrent
{
cmGlobalGenerator* GG;
cmLocalGenerator* LG;
public:
cmLocalGeneratorCurrent(cmLocalGenerator* lg)
{
this->GG = lg->GetGlobalGenerator();
this->LG = this->GG->GetCurrentLocalGenerator();
this->GG->SetCurrentLocalGenerator(lg);
}
~cmLocalGeneratorCurrent()
{
this->GG->SetCurrentLocalGenerator(this->LG);
}
};
//----------------------------------------------------------------------------
void cmLocalGenerator::Configure()
{
cmLocalGenerator* previousLg =
this->GetGlobalGenerator()->GetCurrentLocalGenerator();
this->GetGlobalGenerator()->SetCurrentLocalGenerator(this);
// Manage the global generator's current local generator.
cmLocalGeneratorCurrent clg(this);
static_cast<void>(clg);
// make sure the CMakeFiles dir is there
std::string filesDir = this->Makefile->GetStartOutputDirectory();
......@@ -141,8 +160,6 @@ void cmLocalGenerator::Configure()
}
this->Configured = true;
this->GetGlobalGenerator()->SetCurrentLocalGenerator(previousLg);
}
void cmLocalGenerator::SetupPathConversions()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment