1202379Srdivacky//===- ExternalPreprocessorSource.h - Abstract Macro Interface --*- C++ -*-===//
2202379Srdivacky//
3202379Srdivacky//                     The LLVM Compiler Infrastructure
4202379Srdivacky//
5202379Srdivacky// This file is distributed under the University of Illinois Open Source
6202379Srdivacky// License. See LICENSE.TXT for details.
7202379Srdivacky//
8202379Srdivacky//===----------------------------------------------------------------------===//
9202379Srdivacky//
10202379Srdivacky//  This file defines the ExternalPreprocessorSource interface, which enables
11202379Srdivacky//  construction of macro definitions from some external source.
12202379Srdivacky//
13202379Srdivacky//===----------------------------------------------------------------------===//
14202379Srdivacky#ifndef LLVM_CLANG_LEX_EXTERNAL_PREPROCESSOR_SOURCE_H
15202379Srdivacky#define LLVM_CLANG_LEX_EXTERNAL_PREPROCESSOR_SOURCE_H
16202379Srdivacky
17202379Srdivackynamespace clang {
18249423Sdim
19249423Sdimclass IdentifierInfo;
20249423Sdim
21202379Srdivacky/// \brief Abstract interface for external sources of preprocessor
22202379Srdivacky/// information.
23202379Srdivacky///
24212904Sdim/// This abstract class allows an external sources (such as the \c ASTReader)
25202379Srdivacky/// to provide additional macro definitions.
26202379Srdivackyclass ExternalPreprocessorSource {
27202379Srdivackypublic:
28202379Srdivacky  virtual ~ExternalPreprocessorSource();
29202379Srdivacky
30202379Srdivacky  /// \brief Read the set of macros defined by this external macro source.
31202379Srdivacky  virtual void ReadDefinedMacros() = 0;
32218893Sdim
33234353Sdim  /// \brief Update an out-of-date identifier.
34234353Sdim  virtual void updateOutOfDateIdentifier(IdentifierInfo &II) = 0;
35202379Srdivacky};
36202379Srdivacky
37202379Srdivacky}
38202379Srdivacky
39202379Srdivacky#endif // LLVM_CLANG_LEX_EXTERNAL_PREPROCESSOR_SOURCE_H
40