|
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_DIRECTIVE_HANDLER_H_ |
|
8 #define COMPILER_DIRECTIVE_HANDLER_H_ |
|
9 |
|
10 #include "compiler/ExtensionBehavior.h" |
|
11 #include "compiler/Pragma.h" |
|
12 #include "compiler/preprocessor/DirectiveHandlerBase.h" |
|
13 |
|
14 class TDiagnostics; |
|
15 |
|
16 class TDirectiveHandler : public pp::DirectiveHandler |
|
17 { |
|
18 public: |
|
19 TDirectiveHandler(TExtensionBehavior& extBehavior, |
|
20 TDiagnostics& diagnostics); |
|
21 virtual ~TDirectiveHandler(); |
|
22 |
|
23 const TPragma& pragma() const { return mPragma; } |
|
24 const TExtensionBehavior& extensionBehavior() const { return mExtensionBehavior; } |
|
25 |
|
26 virtual void handleError(const pp::SourceLocation& loc, |
|
27 const std::string& msg); |
|
28 |
|
29 virtual void handlePragma(const pp::SourceLocation& loc, |
|
30 const std::string& name, |
|
31 const std::string& value); |
|
32 |
|
33 virtual void handleExtension(const pp::SourceLocation& loc, |
|
34 const std::string& name, |
|
35 const std::string& behavior); |
|
36 |
|
37 virtual void handleVersion(const pp::SourceLocation& loc, |
|
38 int version); |
|
39 |
|
40 private: |
|
41 TPragma mPragma; |
|
42 TExtensionBehavior& mExtensionBehavior; |
|
43 TDiagnostics& mDiagnostics; |
|
44 }; |
|
45 |
|
46 #endif // COMPILER_DIRECTIVE_HANDLER_H_ |