resolve cyclic dependency with zstd
[platform/upstream/cmake.git] / Source / cmGeneratorExpressionLexer.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 <cstddef>
8 #include <string>
9 #include <vector>
10
11 struct cmGeneratorExpressionToken
12 {
13   cmGeneratorExpressionToken(unsigned type, const char* c, size_t l)
14     : TokenType(type)
15     , Content(c)
16     , Length(l)
17   {
18   }
19   enum
20   {
21     Text,
22     BeginExpression,
23     EndExpression,
24     ColonSeparator,
25     CommaSeparator
26   };
27   unsigned TokenType;
28   const char* Content;
29   size_t Length;
30 };
31
32 /** \class cmGeneratorExpressionLexer
33  *
34  */
35 class cmGeneratorExpressionLexer
36 {
37 public:
38   cmGeneratorExpressionLexer();
39
40   std::vector<cmGeneratorExpressionToken> Tokenize(const std::string& input);
41
42   bool GetSawGeneratorExpression() const
43   {
44     return this->SawGeneratorExpression;
45   }
46
47 private:
48   bool SawBeginExpression = false;
49   bool SawGeneratorExpression = false;
50 };