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_ 47