diff options
Diffstat (limited to 'Source/cmGeneratorExpressionNode.h')
-rw-r--r-- | Source/cmGeneratorExpressionNode.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/Source/cmGeneratorExpressionNode.h b/Source/cmGeneratorExpressionNode.h new file mode 100644 index 0000000..3ee57eb --- /dev/null +++ b/Source/cmGeneratorExpressionNode.h @@ -0,0 +1,67 @@ +/*============================================================================ + 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 "cmGeneratorExpression.h" + +#include "cmGeneratorExpressionDAGChecker.h" +#include "cmGeneratorExpressionEvaluator.h" +#include "cmGeneratorExpressionParser.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>& parameters, + cmGeneratorExpressionContext* context, + const GeneratorExpressionContent* content, + cmGeneratorExpressionDAGChecker* dagChecker) const = 0; + + static std::string EvaluateDependentExpression( + std::string const& prop, cmLocalGenerator* lg, + cmGeneratorExpressionContext* context, const cmGeneratorTarget* headTarget, + const cmGeneratorTarget* currentTarget, + cmGeneratorExpressionDAGChecker* dagChecker); + + static const cmGeneratorExpressionNode* GetNode( + const std::string& identifier); +}; + +void reportError(cmGeneratorExpressionContext* context, + const std::string& expr, const std::string& result); + +#endif |