resolve cyclic dependency with zstd
[platform/upstream/cmake.git] / Source / cmGeneratorExpressionParser.h
1 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2    file Copyright.txt or https://cmake.org/licensing for details.  */
3 #pragma once
4
5 #include "cmConfigure.h" // IWYU pragma: keep
6
7 #include <memory>
8 #include <vector>
9
10 #include "cmGeneratorExpressionLexer.h"
11
12 struct cmGeneratorExpressionEvaluator;
13
14 struct cmGeneratorExpressionParser
15 {
16   cmGeneratorExpressionParser(std::vector<cmGeneratorExpressionToken> tokens);
17
18   using cmGeneratorExpressionEvaluatorVector =
19     std::vector<std::unique_ptr<cmGeneratorExpressionEvaluator>>;
20
21   void Parse(cmGeneratorExpressionEvaluatorVector& result);
22
23 private:
24   void ParseContent(cmGeneratorExpressionEvaluatorVector&);
25   void ParseGeneratorExpression(cmGeneratorExpressionEvaluatorVector&);
26
27   std::vector<cmGeneratorExpressionToken>::const_iterator it;
28   const std::vector<cmGeneratorExpressionToken> Tokens;
29   unsigned int NestingLevel = 0;
30 };