Home | History | Annotate | Download | only in compiler
      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/ExtensionBehavior.h"
     11 #include "compiler/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     virtual ~TDirectiveHandler();
     22 
     23     const TPragma& pragma() const { return mPragma; }
     24     const TExtensionBehavior& extensionBehavior() const { return mExtensionBehavior; }
     25 
     26     virtual void handleError(const pp::SourceLocation& loc,
     27                              const std::string& msg);
     28 
     29     virtual void handlePragma(const pp::SourceLocation& loc,
     30                               const std::string& name,
     31                               const std::string& value);
     32 
     33     virtual void handleExtension(const pp::SourceLocation& loc,
     34                                  const std::string& name,
     35                                  const std::string& behavior);
     36 
     37     virtual void handleVersion(const pp::SourceLocation& loc,
     38                                int version);
     39 
     40   private:
     41     TPragma mPragma;
     42     TExtensionBehavior& mExtensionBehavior;
     43     TDiagnostics& mDiagnostics;
     44 };
     45 
     46 #endif  // COMPILER_DIRECTIVE_HANDLER_H_
     47