Line data Source code
1 : //
2 : // Copyright (c) 2012 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_DIRECTIVEHANDLERBASE_H_
8 : #define COMPILER_PREPROCESSOR_DIRECTIVEHANDLERBASE_H_
9 :
10 : #include <string>
11 :
12 : namespace pp
13 : {
14 :
15 : struct SourceLocation;
16 :
17 : // Base class for handling directives.
18 : // Preprocessor uses this class to notify the clients about certain
19 : // preprocessor directives. Derived classes are responsible for
20 : // handling them in an appropriate manner.
21 0 : class DirectiveHandler
22 : {
23 : public:
24 : virtual ~DirectiveHandler();
25 :
26 : virtual void handleError(const SourceLocation &loc,
27 : const std::string &msg) = 0;
28 :
29 : // Handle pragma of form: #pragma name[(value)]
30 : virtual void handlePragma(const SourceLocation &loc,
31 : const std::string &name,
32 : const std::string &value,
33 : bool stdgl) = 0;
34 :
35 : virtual void handleExtension(const SourceLocation &loc,
36 : const std::string &name,
37 : const std::string &behavior) = 0;
38 :
39 : virtual void handleVersion(const SourceLocation &loc,
40 : int version) = 0;
41 : };
42 :
43 : } // namespace pp
44 :
45 : #endif // COMPILER_PREPROCESSOR_DIRECTIVEHANDLERBASE_H_
|