michael@0: // michael@0: // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. michael@0: // Use of this source code is governed by a BSD-style license that can be michael@0: // found in the LICENSE file. michael@0: // michael@0: michael@0: #ifndef COMPILER_DIRECTIVE_HANDLER_H_ michael@0: #define COMPILER_DIRECTIVE_HANDLER_H_ michael@0: michael@0: #include "compiler/ExtensionBehavior.h" michael@0: #include "compiler/Pragma.h" michael@0: #include "compiler/preprocessor/DirectiveHandlerBase.h" michael@0: michael@0: class TDiagnostics; michael@0: michael@0: class TDirectiveHandler : public pp::DirectiveHandler michael@0: { michael@0: public: michael@0: TDirectiveHandler(TExtensionBehavior& extBehavior, michael@0: TDiagnostics& diagnostics); michael@0: virtual ~TDirectiveHandler(); michael@0: michael@0: const TPragma& pragma() const { return mPragma; } michael@0: const TExtensionBehavior& extensionBehavior() const { return mExtensionBehavior; } michael@0: michael@0: virtual void handleError(const pp::SourceLocation& loc, michael@0: const std::string& msg); michael@0: michael@0: virtual void handlePragma(const pp::SourceLocation& loc, michael@0: const std::string& name, michael@0: const std::string& value); michael@0: michael@0: virtual void handleExtension(const pp::SourceLocation& loc, michael@0: const std::string& name, michael@0: const std::string& behavior); michael@0: michael@0: virtual void handleVersion(const pp::SourceLocation& loc, michael@0: int version); michael@0: michael@0: private: michael@0: TPragma mPragma; michael@0: TExtensionBehavior& mExtensionBehavior; michael@0: TDiagnostics& mDiagnostics; michael@0: }; michael@0: michael@0: #endif // COMPILER_DIRECTIVE_HANDLER_H_