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