Genex: Extract an evaluateWithContext method.
Make it easier to make modifications to the context before evaluating with it.
This commit is contained in:
parent
642048ce35
commit
80b9f0cbe2
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue