cmGeneratorExpressionNode.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #ifndef cmGeneratorExpressionNode_h
  4. #define cmGeneratorExpressionNode_h
  5. #include "cmConfigure.h" // IWYU pragma: keep
  6. #include <string>
  7. #include <vector>
  8. class cmGeneratorTarget;
  9. class cmLocalGenerator;
  10. struct GeneratorExpressionContent;
  11. struct cmGeneratorExpressionContext;
  12. struct cmGeneratorExpressionDAGChecker;
  13. struct cmGeneratorExpressionNode
  14. {
  15. enum
  16. {
  17. DynamicParameters = 0,
  18. OneOrMoreParameters = -1,
  19. OneOrZeroParameters = -2
  20. };
  21. virtual ~cmGeneratorExpressionNode() {}
  22. virtual bool GeneratesContent() const { return true; }
  23. virtual bool RequiresLiteralInput() const { return false; }
  24. virtual bool AcceptsArbitraryContentParameter() const { return false; }
  25. virtual int NumExpectedParameters() const { return 1; }
  26. virtual std::string Evaluate(
  27. const std::vector<std::string>& parameters,
  28. cmGeneratorExpressionContext* context,
  29. const GeneratorExpressionContent* content,
  30. cmGeneratorExpressionDAGChecker* dagChecker) const = 0;
  31. static std::string EvaluateDependentExpression(
  32. std::string const& prop, cmLocalGenerator* lg,
  33. cmGeneratorExpressionContext* context, const cmGeneratorTarget* headTarget,
  34. const cmGeneratorTarget* currentTarget,
  35. cmGeneratorExpressionDAGChecker* dagChecker);
  36. static const cmGeneratorExpressionNode* GetNode(
  37. const std::string& identifier);
  38. };
  39. void reportError(cmGeneratorExpressionContext* context,
  40. const std::string& expr, const std::string& result);
  41. #endif