xref: /aosp_15_r20/external/angle/src/compiler/preprocessor/DirectiveHandlerBase.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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_PREPROCESSOR_DIRECTIVEHANDLERBASE_H_
8*8975f5c5SAndroid Build Coastguard Worker #define COMPILER_PREPROCESSOR_DIRECTIVEHANDLERBASE_H_
9*8975f5c5SAndroid Build Coastguard Worker 
10*8975f5c5SAndroid Build Coastguard Worker #include <string>
11*8975f5c5SAndroid Build Coastguard Worker #include "GLSLANG/ShaderLang.h"
12*8975f5c5SAndroid Build Coastguard Worker #include "Macro.h"
13*8975f5c5SAndroid Build Coastguard Worker 
14*8975f5c5SAndroid Build Coastguard Worker namespace angle
15*8975f5c5SAndroid Build Coastguard Worker {
16*8975f5c5SAndroid Build Coastguard Worker 
17*8975f5c5SAndroid Build Coastguard Worker namespace pp
18*8975f5c5SAndroid Build Coastguard Worker {
19*8975f5c5SAndroid Build Coastguard Worker 
20*8975f5c5SAndroid Build Coastguard Worker struct SourceLocation;
21*8975f5c5SAndroid Build Coastguard Worker 
22*8975f5c5SAndroid Build Coastguard Worker // Base class for handling directives.
23*8975f5c5SAndroid Build Coastguard Worker // Preprocessor uses this class to notify the clients about certain
24*8975f5c5SAndroid Build Coastguard Worker // preprocessor directives. Derived classes are responsible for
25*8975f5c5SAndroid Build Coastguard Worker // handling them in an appropriate manner.
26*8975f5c5SAndroid Build Coastguard Worker class DirectiveHandler
27*8975f5c5SAndroid Build Coastguard Worker {
28*8975f5c5SAndroid Build Coastguard Worker   public:
29*8975f5c5SAndroid Build Coastguard Worker     virtual ~DirectiveHandler();
30*8975f5c5SAndroid Build Coastguard Worker 
31*8975f5c5SAndroid Build Coastguard Worker     virtual void handleError(const SourceLocation &loc, const std::string &msg) = 0;
32*8975f5c5SAndroid Build Coastguard Worker 
33*8975f5c5SAndroid Build Coastguard Worker     // Handle pragma of form: #pragma name[(value)]
34*8975f5c5SAndroid Build Coastguard Worker     virtual void handlePragma(const SourceLocation &loc,
35*8975f5c5SAndroid Build Coastguard Worker                               const std::string &name,
36*8975f5c5SAndroid Build Coastguard Worker                               const std::string &value,
37*8975f5c5SAndroid Build Coastguard Worker                               bool stdgl) = 0;
38*8975f5c5SAndroid Build Coastguard Worker 
39*8975f5c5SAndroid Build Coastguard Worker     virtual void handleExtension(const SourceLocation &loc,
40*8975f5c5SAndroid Build Coastguard Worker                                  const std::string &name,
41*8975f5c5SAndroid Build Coastguard Worker                                  const std::string &behavior) = 0;
42*8975f5c5SAndroid Build Coastguard Worker 
43*8975f5c5SAndroid Build Coastguard Worker     virtual void handleVersion(const SourceLocation &loc,
44*8975f5c5SAndroid Build Coastguard Worker                                int version,
45*8975f5c5SAndroid Build Coastguard Worker                                ShShaderSpec spec,
46*8975f5c5SAndroid Build Coastguard Worker                                MacroSet *macro_set) = 0;
47*8975f5c5SAndroid Build Coastguard Worker };
48*8975f5c5SAndroid Build Coastguard Worker 
49*8975f5c5SAndroid Build Coastguard Worker }  // namespace pp
50*8975f5c5SAndroid Build Coastguard Worker 
51*8975f5c5SAndroid Build Coastguard Worker }  // namespace angle
52*8975f5c5SAndroid Build Coastguard Worker 
53*8975f5c5SAndroid Build Coastguard Worker #endif  // COMPILER_PREPROCESSOR_DIRECTIVEHANDLERBASE_H_
54