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_TRANSLATOR_DIRECTIVEHANDLER_H_
8 : #define COMPILER_TRANSLATOR_DIRECTIVEHANDLER_H_
9 :
10 : #include "common/angleutils.h"
11 : #include "compiler/translator/ExtensionBehavior.h"
12 : #include "compiler/translator/Pragma.h"
13 : #include "compiler/preprocessor/DirectiveHandlerBase.h"
14 : #include "GLSLANG/ShaderLang.h"
15 :
16 : namespace sh
17 : {
18 : class TDiagnostics;
19 :
20 : class TDirectiveHandler : public pp::DirectiveHandler, angle::NonCopyable
21 : {
22 : public:
23 : TDirectiveHandler(TExtensionBehavior &extBehavior,
24 : TDiagnostics &diagnostics,
25 : int &shaderVersion,
26 : sh::GLenum shaderType,
27 : bool debugShaderPrecisionSupported);
28 : ~TDirectiveHandler() override;
29 :
30 0 : const TPragma& pragma() const { return mPragma; }
31 0 : const TExtensionBehavior& extensionBehavior() const { return mExtensionBehavior; }
32 :
33 : void handleError(const pp::SourceLocation &loc, const std::string &msg) override;
34 :
35 : void handlePragma(const pp::SourceLocation &loc,
36 : const std::string &name,
37 : const std::string &value,
38 : bool stdgl) override;
39 :
40 : void handleExtension(const pp::SourceLocation &loc,
41 : const std::string &name,
42 : const std::string &behavior) override;
43 :
44 : void handleVersion(const pp::SourceLocation &loc, int version) override;
45 :
46 : private:
47 : TPragma mPragma;
48 : TExtensionBehavior& mExtensionBehavior;
49 : TDiagnostics& mDiagnostics;
50 : int& mShaderVersion;
51 : sh::GLenum mShaderType;
52 : bool mDebugShaderPrecisionSupported;
53 : };
54 :
55 : } // namespace sh
56 :
57 : #endif // COMPILER_TRANSLATOR_DIRECTIVEHANDLER_H_
|