Home | History | Annotate | Download | only in preprocessor
      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_PREPROCESSOR_DIRECTIVE_HANDLER_H_
      8 #define COMPILER_PREPROCESSOR_DIRECTIVE_HANDLER_H_
      9 
     10 #include <string>
     11 
     12 namespace pp
     13 {
     14 
     15 struct SourceLocation;
     16 
     17 // Base class for handling directives.
     18 // Preprocessor uses this class to notify the clients about certain
     19 // preprocessor directives. Derived classes are responsible for
     20 // handling them in an appropriate manner.
     21 class DirectiveHandler
     22 {
     23   public:
     24     virtual ~DirectiveHandler();
     25 
     26     virtual void handleError(const SourceLocation &loc,
     27                              const std::string &msg) = 0;
     28 
     29     // Handle pragma of form: #pragma name[(value)]
     30     virtual void handlePragma(const SourceLocation &loc,
     31                               const std::string &name,
     32                               const std::string &value) = 0;
     33 
     34     virtual void handleExtension(const SourceLocation &loc,
     35                                  const std::string &name,
     36                                  const std::string &behavior) = 0;
     37 
     38     virtual void handleVersion(const SourceLocation &loc,
     39                                int version) = 0;
     40 };
     41 
     42 }  // namespace pp
     43 #endif  // COMPILER_PREPROCESSOR_DIRECTIVE_HANDLER_H_
     44