clang
3.7.0
|
The preprocessor keeps track of this information for each file that is #included. More...
#include <HeaderSearch.h>
Public Member Functions | |
HeaderFileInfo () | |
const IdentifierInfo * | getControllingMacro (ExternalPreprocessorSource *External) |
Retrieve the controlling macro for this header file, if any. More... | |
bool | isNonDefault () const |
Determine whether this is a non-default header file info, e.g., it corresponds to an actual header we've included or tried to include. More... | |
ModuleMap::ModuleHeaderRole | getHeaderRole () const |
Get the HeaderRole properly typed. More... | |
void | setHeaderRole (ModuleMap::ModuleHeaderRole Role) |
Set the HeaderRole properly typed. More... | |
Public Attributes | |
unsigned | isImport: 1 |
True if this is a #import'd or #pragma once file. More... | |
unsigned | isPragmaOnce: 1 |
True if this is a #pragma once file. More... | |
unsigned | DirInfo: 2 |
unsigned | External: 1 |
Whether this header file info was supplied by an external source. More... | |
unsigned | isModuleHeader: 1 |
Whether this header is part of a module. More... | |
unsigned | isCompilingModuleHeader: 1 |
Whether this header is part of the module that we are building. More... | |
unsigned | HeaderRole: 2 |
Whether this header is part of the module that we are building. This is an instance of ModuleMap::ModuleHeaderRole. More... | |
unsigned | Resolved: 1 |
Whether this structure is considered to already have been "resolved", meaning that it was loaded from the external source. More... | |
unsigned | IndexHeaderMapHeader: 1 |
Whether this is a header inside a framework that is currently being built. More... | |
unsigned | IsValid: 1 |
Whether this file had been looked up as a header. More... | |
unsigned short | NumIncludes |
The number of times the file has been included already. More... | |
unsigned | ControllingMacroID |
The ID number of the controlling macro. More... | |
const IdentifierInfo * | ControllingMacro |
StringRef | Framework |
If this header came from a framework include, this is the name of the framework. More... | |
The preprocessor keeps track of this information for each file that is #included.
Definition at line 39 of file HeaderSearch.h.
|
inline |
Definition at line 105 of file HeaderSearch.h.
const IdentifierInfo * HeaderFileInfo::getControllingMacro | ( | ExternalPreprocessorSource * | External | ) |
Retrieve the controlling macro for this header file, if any.
Definition at line 38 of file HeaderSearch.cpp.
References ControllingMacro, ControllingMacroID, clang::ExternalPreprocessorSource::GetIdentifier(), clang::IdentifierInfo::isOutOfDate(), and clang::ExternalPreprocessorSource::updateOutOfDateIdentifier().
Referenced by clang::HeaderSearch::ShouldEnterIncludeFile().
|
inline |
Get the HeaderRole properly typed.
Definition at line 125 of file HeaderSearch.h.
References HeaderRole.
|
inline |
Determine whether this is a non-default header file info, e.g., it corresponds to an actual header we've included or tried to include.
Definition at line 119 of file HeaderSearch.h.
References ControllingMacro, ControllingMacroID, isImport, isPragmaOnce, and NumIncludes.
|
inline |
Set the HeaderRole properly typed.
Definition at line 130 of file HeaderSearch.h.
References HeaderRole.
Referenced by clang::HeaderSearch::MarkFileModuleHeader().
const IdentifierInfo* clang::HeaderFileInfo::ControllingMacro |
If this file has a #ifndef XXX (or equivalent) guard that protects the entire contents of the file, this is the identifier for the macro that controls whether or not it has any effect.
Note: Most clients should use getControllingMacro() to access the controlling macro of this header, since getControllingMacro() is able to load a controlling macro from external storage.
Definition at line 99 of file HeaderSearch.h.
Referenced by getControllingMacro(), clang::HeaderSearch::isFileMultipleIncludeGuarded(), isNonDefault(), mergeHeaderFileInfo(), and clang::HeaderSearch::SetFileControllingMacro().
unsigned clang::HeaderFileInfo::ControllingMacroID |
The ID number of the controlling macro.
This ID number will be non-zero when there is a controlling macro whose IdentifierInfo may not yet have been loaded from external storage.
Definition at line 89 of file HeaderSearch.h.
Referenced by getControllingMacro(), clang::HeaderSearch::isFileMultipleIncludeGuarded(), isNonDefault(), and mergeHeaderFileInfo().
unsigned clang::HeaderFileInfo::DirInfo |
DirInfo - Keep track of whether this is a system header, and if so, whether it is C++ clean or not. This can be set by the include paths or by #pragma gcc system_header. This is an instance of SrcMgr::CharacteristicKind.
Definition at line 50 of file HeaderSearch.h.
Referenced by clang::HeaderSearch::getFileDirFlavor(), clang::HeaderSearch::LookupFile(), clang::HeaderSearch::LookupSubframeworkHeader(), clang::HeaderSearch::MarkFileSystemHeader(), and mergeHeaderFileInfo().
unsigned clang::HeaderFileInfo::External |
Whether this header file info was supplied by an external source.
Definition at line 53 of file HeaderSearch.h.
Referenced by mergeHeaderFileInfo().
StringRef clang::HeaderFileInfo::Framework |
If this header came from a framework include, this is the name of the framework.
Definition at line 103 of file HeaderSearch.h.
Referenced by clang::HeaderSearch::LookupFile(), and mergeHeaderFileInfo().
unsigned clang::HeaderFileInfo::HeaderRole |
Whether this header is part of the module that we are building. This is an instance of ModuleMap::ModuleHeaderRole.
Definition at line 63 of file HeaderSearch.h.
Referenced by getHeaderRole(), clang::serialization::reader::HeaderFileInfoTrait::ReadData(), and setHeaderRole().
unsigned clang::HeaderFileInfo::IndexHeaderMapHeader |
Whether this is a header inside a framework that is currently being built.
When a framework is being built, the headers have not yet been placed into the appropriate framework subdirectories, and therefore are provided via a header map. This bit indicates when this is one of those framework headers.
Definition at line 76 of file HeaderSearch.h.
Referenced by clang::HeaderSearch::LookupFile(), and mergeHeaderFileInfo().
unsigned clang::HeaderFileInfo::isCompilingModuleHeader |
Whether this header is part of the module that we are building.
Definition at line 59 of file HeaderSearch.h.
Referenced by clang::HeaderSearch::MarkFileModuleHeader().
unsigned clang::HeaderFileInfo::isImport |
True if this is a #import'd or #pragma once file.
Definition at line 41 of file HeaderSearch.h.
Referenced by clang::HeaderSearch::isFileMultipleIncludeGuarded(), isNonDefault(), clang::HeaderSearch::MarkFileIncludeOnce(), mergeHeaderFileInfo(), and clang::HeaderSearch::ShouldEnterIncludeFile().
unsigned clang::HeaderFileInfo::isModuleHeader |
Whether this header is part of a module.
Definition at line 56 of file HeaderSearch.h.
Referenced by clang::HeaderSearch::MarkFileModuleHeader(), and mergeHeaderFileInfo().
unsigned clang::HeaderFileInfo::isPragmaOnce |
True if this is a #pragma once file.
Definition at line 44 of file HeaderSearch.h.
Referenced by clang::HeaderSearch::isFileMultipleIncludeGuarded(), isNonDefault(), clang::HeaderSearch::MarkFileIncludeOnce(), and mergeHeaderFileInfo().
unsigned clang::HeaderFileInfo::IsValid |
Whether this file had been looked up as a header.
Definition at line 79 of file HeaderSearch.h.
Referenced by clang::HeaderSearch::tryGetFileInfo().
unsigned short clang::HeaderFileInfo::NumIncludes |
The number of times the file has been included already.
Definition at line 82 of file HeaderSearch.h.
Referenced by clang::HeaderSearch::FirstTimeLexingFile(), clang::HeaderSearch::IncrementIncludeCount(), isNonDefault(), mergeHeaderFileInfo(), and clang::HeaderSearch::ShouldEnterIncludeFile().
unsigned clang::HeaderFileInfo::Resolved |
Whether this structure is considered to already have been "resolved", meaning that it was loaded from the external source.
Definition at line 67 of file HeaderSearch.h.
Referenced by clang::HeaderSearch::isFileMultipleIncludeGuarded(), and mergeHeaderFileInfo().