clang  3.9.0
Public Member Functions | Public Attributes | List of all members
clang::HeaderFileInfo Struct Reference

The preprocessor keeps track of this information for each file that is #included. More...

#include <HeaderSearch.h>

Collaboration diagram for clang::HeaderFileInfo:
[legend]

Public Member Functions

 HeaderFileInfo ()
 
const IdentifierInfogetControllingMacro (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...
 

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
 DirInfo - Keep track of whether this is a system header, and if so, whether it is C++ clean or not. More...
 
unsigned External: 1
 Whether this header file info was supplied by an external source, and has not changed since. 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 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 has 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 IdentifierInfoControllingMacro
 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. More...
 
StringRef Framework
 If this header came from a framework include, this is the name of the framework. More...
 

Detailed Description

The preprocessor keeps track of this information for each file that is #included.

Definition at line 39 of file HeaderSearch.h.

Constructor & Destructor Documentation

clang::HeaderFileInfo::HeaderFileInfo ( )
inline

Definition at line 102 of file HeaderSearch.h.

Member Function Documentation

const IdentifierInfo * HeaderFileInfo::getControllingMacro ( ExternalPreprocessorSource External)
bool clang::HeaderFileInfo::isNonDefault ( ) const
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 115 of file HeaderSearch.h.

References ControllingMacro, ControllingMacroID, isImport, isPragmaOnce, and NumIncludes.

Member Data Documentation

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 96 of file HeaderSearch.h.

Referenced by getControllingMacro(), 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 86 of file HeaderSearch.h.

Referenced by getControllingMacro(), 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, and has not changed since.

Definition at line 54 of file HeaderSearch.h.

Referenced by clang::HeaderSearch::getExistingFileInfo(), clang::HeaderSearch::getFileInfo(), and mergeHeaderFileInfo().

StringRef clang::HeaderFileInfo::Framework

If this header came from a framework include, this is the name of the framework.

Definition at line 100 of file HeaderSearch.h.

Referenced by clang::HeaderSearch::LookupFile(), and mergeHeaderFileInfo().

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 73 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 60 of file HeaderSearch.h.

unsigned clang::HeaderFileInfo::isImport
unsigned clang::HeaderFileInfo::isModuleHeader

Whether this header is part of a module.

Definition at line 57 of file HeaderSearch.h.

Referenced by mergeHeaderFileInfo().

unsigned clang::HeaderFileInfo::isPragmaOnce

True if this is a #pragma once file.

Definition at line 44 of file HeaderSearch.h.

Referenced by isNonDefault(), clang::HeaderSearch::MarkFileIncludeOnce(), and mergeHeaderFileInfo().

unsigned clang::HeaderFileInfo::IsValid

Whether this file has been looked up as a header.

Definition at line 76 of file HeaderSearch.h.

Referenced by clang::HeaderSearch::getExistingFileInfo(), clang::HeaderSearch::getFileInfo(), and mergeHeaderFileInfo().

unsigned short clang::HeaderFileInfo::NumIncludes
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 64 of file HeaderSearch.h.

Referenced by clang::HeaderSearch::getExistingFileInfo(), and clang::HeaderSearch::getFileInfo().


The documentation for this struct was generated from the following files: