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