|
1 // |
|
2 // Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. |
|
3 // Use of this source code is governed by a BSD-style license that can be |
|
4 // found in the LICENSE file. |
|
5 // |
|
6 |
|
7 #ifndef COMPILER_PREPROCESSOR_PREPROCESSOR_H_ |
|
8 #define COMPILER_PREPROCESSOR_PREPROCESSOR_H_ |
|
9 |
|
10 #include <stddef.h> |
|
11 |
|
12 #include "pp_utils.h" |
|
13 |
|
14 namespace pp |
|
15 { |
|
16 |
|
17 class Diagnostics; |
|
18 class DirectiveHandler; |
|
19 struct PreprocessorImpl; |
|
20 struct Token; |
|
21 |
|
22 class Preprocessor |
|
23 { |
|
24 public: |
|
25 Preprocessor(Diagnostics* diagnostics, DirectiveHandler* directiveHandler); |
|
26 ~Preprocessor(); |
|
27 |
|
28 // count: specifies the number of elements in the string and length arrays. |
|
29 // string: specifies an array of pointers to strings. |
|
30 // length: specifies an array of string lengths. |
|
31 // If length is NULL, each string is assumed to be null terminated. |
|
32 // If length is a value other than NULL, it points to an array containing |
|
33 // a string length for each of the corresponding elements of string. |
|
34 // Each element in the length array may contain the length of the |
|
35 // corresponding string or a value less than 0 to indicate that the string |
|
36 // is null terminated. |
|
37 bool init(size_t count, const char* const string[], const int length[]); |
|
38 // Adds a pre-defined macro. |
|
39 void predefineMacro(const char* name, int value); |
|
40 |
|
41 void lex(Token* token); |
|
42 |
|
43 private: |
|
44 PP_DISALLOW_COPY_AND_ASSIGN(Preprocessor); |
|
45 |
|
46 PreprocessorImpl* mImpl; |
|
47 }; |
|
48 |
|
49 } // namespace pp |
|
50 #endif // COMPILER_PREPROCESSOR_PREPROCESSOR_H_ |
|
51 |