1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2012 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Worker #ifndef COMPILER_TRANSLATOR_DIRECTIVEHANDLER_H_ 8*8975f5c5SAndroid Build Coastguard Worker #define COMPILER_TRANSLATOR_DIRECTIVEHANDLER_H_ 9*8975f5c5SAndroid Build Coastguard Worker 10*8975f5c5SAndroid Build Coastguard Worker #include "GLSLANG/ShaderLang.h" 11*8975f5c5SAndroid Build Coastguard Worker #include "common/angleutils.h" 12*8975f5c5SAndroid Build Coastguard Worker #include "compiler/preprocessor/DirectiveHandlerBase.h" 13*8975f5c5SAndroid Build Coastguard Worker #include "compiler/preprocessor/Macro.h" 14*8975f5c5SAndroid Build Coastguard Worker #include "compiler/translator/ExtensionBehavior.h" 15*8975f5c5SAndroid Build Coastguard Worker #include "compiler/translator/Pragma.h" 16*8975f5c5SAndroid Build Coastguard Worker 17*8975f5c5SAndroid Build Coastguard Worker namespace sh 18*8975f5c5SAndroid Build Coastguard Worker { 19*8975f5c5SAndroid Build Coastguard Worker class TDiagnostics; 20*8975f5c5SAndroid Build Coastguard Worker 21*8975f5c5SAndroid Build Coastguard Worker class TDirectiveHandler : public angle::pp::DirectiveHandler, angle::NonCopyable 22*8975f5c5SAndroid Build Coastguard Worker { 23*8975f5c5SAndroid Build Coastguard Worker public: 24*8975f5c5SAndroid Build Coastguard Worker TDirectiveHandler(TExtensionBehavior &extBehavior, 25*8975f5c5SAndroid Build Coastguard Worker TDiagnostics &diagnostics, 26*8975f5c5SAndroid Build Coastguard Worker int &shaderVersion, 27*8975f5c5SAndroid Build Coastguard Worker sh::GLenum shaderType); 28*8975f5c5SAndroid Build Coastguard Worker ~TDirectiveHandler() override; 29*8975f5c5SAndroid Build Coastguard Worker pragma()30*8975f5c5SAndroid Build Coastguard Worker const TPragma &pragma() const { return mPragma; } extensionBehavior()31*8975f5c5SAndroid Build Coastguard Worker const TExtensionBehavior &extensionBehavior() const { return mExtensionBehavior; } 32*8975f5c5SAndroid Build Coastguard Worker 33*8975f5c5SAndroid Build Coastguard Worker void handleError(const angle::pp::SourceLocation &loc, const std::string &msg) override; 34*8975f5c5SAndroid Build Coastguard Worker 35*8975f5c5SAndroid Build Coastguard Worker void handlePragma(const angle::pp::SourceLocation &loc, 36*8975f5c5SAndroid Build Coastguard Worker const std::string &name, 37*8975f5c5SAndroid Build Coastguard Worker const std::string &value, 38*8975f5c5SAndroid Build Coastguard Worker bool stdgl) override; 39*8975f5c5SAndroid Build Coastguard Worker 40*8975f5c5SAndroid Build Coastguard Worker void handleExtension(const angle::pp::SourceLocation &loc, 41*8975f5c5SAndroid Build Coastguard Worker const std::string &name, 42*8975f5c5SAndroid Build Coastguard Worker const std::string &behavior) override; 43*8975f5c5SAndroid Build Coastguard Worker 44*8975f5c5SAndroid Build Coastguard Worker void handleVersion(const angle::pp::SourceLocation &loc, 45*8975f5c5SAndroid Build Coastguard Worker int version, 46*8975f5c5SAndroid Build Coastguard Worker ShShaderSpec spec, 47*8975f5c5SAndroid Build Coastguard Worker angle::pp::MacroSet *macro_set) override; 48*8975f5c5SAndroid Build Coastguard Worker 49*8975f5c5SAndroid Build Coastguard Worker private: 50*8975f5c5SAndroid Build Coastguard Worker TPragma mPragma; 51*8975f5c5SAndroid Build Coastguard Worker TExtensionBehavior &mExtensionBehavior; 52*8975f5c5SAndroid Build Coastguard Worker TDiagnostics &mDiagnostics; 53*8975f5c5SAndroid Build Coastguard Worker int &mShaderVersion; 54*8975f5c5SAndroid Build Coastguard Worker sh::GLenum mShaderType; 55*8975f5c5SAndroid Build Coastguard Worker }; 56*8975f5c5SAndroid Build Coastguard Worker 57*8975f5c5SAndroid Build Coastguard Worker } // namespace sh 58*8975f5c5SAndroid Build Coastguard Worker 59*8975f5c5SAndroid Build Coastguard Worker #endif // COMPILER_TRANSLATOR_DIRECTIVEHANDLER_H_ 60