Home | History | Annotate | Download | only in translator
      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 
     14 class TDiagnostics;
     15 
     16 class 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