Genex: Extract an evaluateWithContext method.

Make it easier to make modifications to the context before
evaluating with it.
This commit is contained in:
Stephen Kelly 2015-02-22 21:30:44 +01:00
parent 642048ce35
commit 80b9f0cbe2
2 changed files with 24 additions and 12 deletions

View File

@ -72,18 +72,6 @@ const char *cmCompiledGeneratorExpression::Evaluate(
cmGeneratorExpressionDAGChecker *dagChecker,
std::string const& language) const
{
if (!this->NeedsEvaluation)
{
return this->Input.c_str();
}
this->Output = "";
std::vector<cmGeneratorExpressionEvaluator*>::const_iterator it
= this->Evaluators.begin();
const std::vector<cmGeneratorExpressionEvaluator*>::const_iterator end
= this->Evaluators.end();
cmGeneratorExpressionContext context;
context.Makefile = mf;
context.Config = config;
@ -98,6 +86,26 @@ const char *cmCompiledGeneratorExpression::Evaluate(
context.Backtrace = this->Backtrace;
context.Language = language;
return this->EvaluateWithContext(context, dagChecker);
}
//----------------------------------------------------------------------------
const char* cmCompiledGeneratorExpression::EvaluateWithContext(
cmGeneratorExpressionContext& context,
cmGeneratorExpressionDAGChecker *dagChecker) const
{
if (!this->NeedsEvaluation)
{
return this->Input.c_str();
}
this->Output = "";
std::vector<cmGeneratorExpressionEvaluator*>::const_iterator it
= this->Evaluators.begin();
const std::vector<cmGeneratorExpressionEvaluator*>::const_iterator end
= this->Evaluators.end();
for ( ; it != end; ++it)
{
this->Output += (*it)->Evaluate(&context, dagChecker);

View File

@ -24,6 +24,7 @@ class cmMakefile;
class cmListFileBacktrace;
struct cmGeneratorExpressionEvaluator;
struct cmGeneratorExpressionContext;
struct cmGeneratorExpressionDAGChecker;
class cmCompiledGeneratorExpression;
@ -131,6 +132,9 @@ public:
std::map<std::string, std::string>& mapping);
private:
const char* EvaluateWithContext(cmGeneratorExpressionContext& context,
cmGeneratorExpressionDAGChecker *dagChecker) const;
cmCompiledGeneratorExpression(cmListFileBacktrace const& backtrace,
const std::string& input);