diff options
author | Stephen Kelly <steveire@gmail.com> | 2015-02-22 22:32:11 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2015-03-10 23:12:56 (GMT) |
commit | 9df1f0fce19d893b75108fa29eb06cf6b2ce4997 (patch) | |
tree | 548b85890d179c41b5292bb07fc8eb437bf4a795 /Source/cmGeneratorExpressionNode.h | |
parent | 80b9f0cbe263c64613acd18e4e94505924fce40e (diff) | |
download | CMake-9df1f0fce19d893b75108fa29eb06cf6b2ce4997.zip CMake-9df1f0fce19d893b75108fa29eb06cf6b2ce4997.tar.gz CMake-9df1f0fce19d893b75108fa29eb06cf6b2ce4997.tar.bz2 |
Genex: Split cmGeneratorExpressionNode into own file.
Diffstat (limited to 'Source/cmGeneratorExpressionNode.h')
-rw-r--r-- | Source/cmGeneratorExpressionNode.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Source/cmGeneratorExpressionNode.h b/Source/cmGeneratorExpressionNode.h new file mode 100644 index 0000000..847a00a --- /dev/null +++ b/Source/cmGeneratorExpressionNode.h @@ -0,0 +1,70 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2012 Stephen Kelly <steveire@gmail.com> + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmGeneratorExpressionNode_h +#define cmGeneratorExpressionNode_h + +#include "cmMakefile.h" + +#include "cmGeneratorExpressionEvaluator.h" +#include "cmGeneratorExpressionParser.h" +#include "cmGeneratorExpressionDAGChecker.h" +#include "cmGeneratorExpression.h" +#include "cmLocalGenerator.h" +#include "cmSourceFile.h" + +#include <cmsys/String.h> + +#include <assert.h> +#include <errno.h> + +#include "cmListFileCache.h" + +//---------------------------------------------------------------------------- +struct cmGeneratorExpressionNode +{ + enum { + DynamicParameters = 0, + OneOrMoreParameters = -1, + OneOrZeroParameters = -2 + }; + virtual ~cmGeneratorExpressionNode() {} + + virtual bool GeneratesContent() const { return true; } + + virtual bool RequiresLiteralInput() const { return false; } + + virtual bool AcceptsArbitraryContentParameter() const + { return false; } + + virtual int NumExpectedParameters() const { return 1; } + + virtual std::string Evaluate(const std::vector<std::string> ¶meters, + cmGeneratorExpressionContext *context, + const GeneratorExpressionContent *content, + cmGeneratorExpressionDAGChecker *dagChecker + ) const = 0; + + static std::string EvaluateDependentExpression( + std::string const& prop, cmMakefile *makefile, + cmGeneratorExpressionContext *context, + cmTarget const* headTarget, cmTarget const* currentTarget, + cmGeneratorExpressionDAGChecker *dagChecker); + + static const cmGeneratorExpressionNode* GetNode( + const std::string &identifier); +}; + +//---------------------------------------------------------------------------- +void reportError(cmGeneratorExpressionContext *context, + const std::string &expr, const std::string &result); + +#endif |