13#ifndef LLVM_CLANG_LEX_EXTERNALPREPROCESSORSOURCE_H
14#define LLVM_CLANG_LEX_EXTERNALPREPROCESSORSOURCE_H
53 mutable uint64_t Ptr = 0;
59 : Ptr(reinterpret_cast<uint64_t>(Ptr)) {}
62 assert((
ID << 1 >> 1) ==
ID &&
"ID must require < 63 bits");
68 this->Ptr =
reinterpret_cast<uint64_t
>(Ptr);
73 assert((
ID << 1 >> 1) ==
ID &&
"IDs must require < 63 bits");
77 Ptr = (
ID << 1) | 0x01;
88 bool isID()
const {
return Ptr & 0x01; }
Abstract interface for external sources of preprocessor information.
virtual ~ExternalPreprocessorSource()
virtual void updateOutOfDateIdentifier(const IdentifierInfo &II)=0
Update an out-of-date identifier.
virtual IdentifierInfo * GetIdentifier(uint64_t ID)=0
Return the identifier associated with the given ID number.
virtual void ReadDefinedMacros()=0
Read the set of macros defined by this external macro source.
virtual Module * getModule(unsigned ModuleID)=0
Map a module ID to a module.
One of these records is kept for each identifier that is lexed.
LazyIdentifierInfoPtr & operator=(uint64_t ID)
bool isValid() const
Whether this pointer is non-NULL.
IdentifierInfo * getPtr() const
LazyIdentifierInfoPtr & operator=(const IdentifierInfo *Ptr)
LazyIdentifierInfoPtr(uint64_t ID)
LazyIdentifierInfoPtr()=default
bool isID() const
Whether this pointer is currently stored as ID.
LazyIdentifierInfoPtr(const IdentifierInfo *Ptr)
Describes a module or submodule.
The JSON file list parser is used to communicate input to InstallAPI.
@ Module
Module linkage, which indicates that the entity can be referred to from other translation units withi...