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,
|
cmGeneratorExpressionDAGChecker *dagChecker,
|
||||||
std::string const& language) const
|
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;
|
cmGeneratorExpressionContext context;
|
||||||
context.Makefile = mf;
|
context.Makefile = mf;
|
||||||
context.Config = config;
|
context.Config = config;
|
||||||
|
@ -98,6 +86,26 @@ const char *cmCompiledGeneratorExpression::Evaluate(
|
||||||
context.Backtrace = this->Backtrace;
|
context.Backtrace = this->Backtrace;
|
||||||
context.Language = language;
|
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)
|
for ( ; it != end; ++it)
|
||||||
{
|
{
|
||||||
this->Output += (*it)->Evaluate(&context, dagChecker);
|
this->Output += (*it)->Evaluate(&context, dagChecker);
|
||||||
|
|
|
@ -24,6 +24,7 @@ class cmMakefile;
|
||||||
class cmListFileBacktrace;
|
class cmListFileBacktrace;
|
||||||
|
|
||||||
struct cmGeneratorExpressionEvaluator;
|
struct cmGeneratorExpressionEvaluator;
|
||||||
|
struct cmGeneratorExpressionContext;
|
||||||
struct cmGeneratorExpressionDAGChecker;
|
struct cmGeneratorExpressionDAGChecker;
|
||||||
|
|
||||||
class cmCompiledGeneratorExpression;
|
class cmCompiledGeneratorExpression;
|
||||||
|
@ -131,6 +132,9 @@ public:
|
||||||
std::map<std::string, std::string>& mapping);
|
std::map<std::string, std::string>& mapping);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
const char* EvaluateWithContext(cmGeneratorExpressionContext& context,
|
||||||
|
cmGeneratorExpressionDAGChecker *dagChecker) const;
|
||||||
|
|
||||||
cmCompiledGeneratorExpression(cmListFileBacktrace const& backtrace,
|
cmCompiledGeneratorExpression(cmListFileBacktrace const& backtrace,
|
||||||
const std::string& input);
|
const std::string& input);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue