packaging: Initial packaging
[platform/upstream/cmake.git] / Source / cmGeneratorExpressionParser.h
1 /*============================================================================
2   CMake - Cross Platform Makefile Generator
3   Copyright 2012 Stephen Kelly <steveire@gmail.com>
4
5   Distributed under the OSI-approved BSD License (the "License");
6   see accompanying file Copyright.txt for details.
7
8   This software is distributed WITHOUT ANY WARRANTY; without even the
9   implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10   See the License for more information.
11 ============================================================================*/
12 #ifndef cmGeneratorExpressionParser_h
13 #define cmGeneratorExpressionParser_h
14
15 #include "cmGeneratorExpressionLexer.h"
16
17 #include <set>
18 #include <vector>
19
20 #include "cmListFileCache.h"
21
22 class cmMakefile;
23 class cmTarget;
24 struct cmGeneratorExpressionEvaluator;
25
26 //----------------------------------------------------------------------------
27 struct cmGeneratorExpressionParser
28 {
29   cmGeneratorExpressionParser(
30                       const std::vector<cmGeneratorExpressionToken> &tokens);
31
32   void Parse(std::vector<cmGeneratorExpressionEvaluator*> &result);
33
34 private:
35   void ParseContent(std::vector<cmGeneratorExpressionEvaluator*> &);
36   void ParseGeneratorExpression(
37                               std::vector<cmGeneratorExpressionEvaluator*> &);
38
39 private:
40   std::vector<cmGeneratorExpressionToken>::const_iterator it;
41   const std::vector<cmGeneratorExpressionToken> Tokens;
42   unsigned int NestingLevel;
43 };
44
45 #endif